Passage de paramètre à une autre form [Résolu]

Signaler
Messages postés
174
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
9 avril 2014
-
cs_Loda
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
-
Bonsoir à tous,

Je suis un grand débutant en delphi étant plutôt un adepte de C# ce qui ne facilite pas les choses niveau syntaxe notamment

J'ai une Form prinicpale qui en appelle une autre en MDI et je souhaiterais lui passer un paramètre mais je n'y arrive pas.

J'ai cherché sur le forum sans trouver quelque chose de simple et je voudrais savoir si quelqu'un pouvait m'expliquer comment faire de façon très simple.

Merci par avance

6 réponses

Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
re,

cela revient presque au même qu'ajouter une "property". a voir. c'est selon tes besoins !

bonne code,

Loda

PS: si le sujet est résolu, indique le (réponse acceptée)
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
11
Oui, mais si tu nous disais ce que tu veux faire exactement...

cantador
Messages postés
174
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
9 avril 2014
3
Je voudrais passer en paramètre un code article à la 2ème form que j'appelle depuis la première
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
salut,

si tu la crée lors de ton besoin, t'as deux solution:
- passer le param au constructeur (et donc faire un nouveau constructeur qui prend ce param)
- ajouter une "property"

si elle est déjà crée (p.ex. instance unique), il te faut:
- garder une référence de la mdi (valeur de retour du .create) dans un champ de ta form principal
- ajouter une property à la mdi

les property sont assez génial car les setter te permette d'implémenter de façon cachée des mis à jour/test lorsque tu change la valeur.

si l'implémentation pose problème, précise quelle solution te semble plus appropriée a ton cas et je te ferrais un exemple rapide.

a+

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
re,

ah. au final je t'ai fait un exemple directement:

<hr size="2" width="100%" />
uses
  ...... , ChildMDI_frm;

type
  TfrmMainMDI = class(TForm)
    ToolBar1: TToolBar;
    tlbByConstruct: TToolButton;
    tlbByParam: TToolButton;
    procedure tlbByParamClick(Sender: TObject);
    procedure tlbByConstructClick(Sender: TObject);
  private
    fChildForm : TfrmChildMDI;//instance unique
  end;

var
  frmMainMDI: TfrmMainMDI;

implementation

{$R *.dfm}

procedure TfrmMainMDI.tlbByConstructClick(Sender: TObject);
var
  param : string;
begin
  param := InputBox('Entre param', '','');

  // pass by constructor (news instance every time)
  TFrmChildMDI.CreateWithParam(self,param);

end;

procedure TfrmMainMDI.tlbByParamClick(Sender: TObject);
var
  param : string;
begin
  // pass by param (unic instance)

  if not assigned (fChildForm) then begin
    fChildForm := TFrmChildMDI.Create(self);
  end;

  param := InputBox('Entre param', '','');
  fChildForm.param := param;

end;
<hr size="2" width="100%" />

type
  TfrmChildMDI = class(TForm)
    Label1: TLabel;
  private
    fParam : string;
    procedure Setparam(const Value: string);
  public
    property param:string read Fparam write Setparam;

    constructor CreateWithParam(AOwner: TComponent; aParam : string);
  end;

var
  frmChildMDI: TfrmChildMDI;

implementation

{$R *.dfm}

{ TfrmChildMDI }

procedure TfrmChildMDI.Setparam(const Value: string);
begin
  Fparam := Value;
  label1.Caption := Fparam;
end;

constructor TfrmChildMDI.CreateWithParam(AOwner: TComponent; aParam: string);
begin
  Create(AOwner);
  Setparam(aParam);
end;

<hr size="2" width="100%" />
bonne continuation dans le monde de Delphi !

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Messages postés
174
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
9 avril 2014
3
Merci beaucoup pour ton aide. En fait j'ai utilisé un moyen détourné, j'ai Mis une méthode publique dans ma deuxième form que j'appelle depuis la form1 et qui intitialise mes variables dans le form 2