Passage de paramètre à une autre form

Résolu
cs_Jordan59
Messages postés
174
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
9 avril 2014
- 18 mars 2008 à 20:36
cs_Loda
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
- 19 mars 2008 à 13:46
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

cs_Loda
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
19 mars 2008 à 13:46
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.
3
cs_cantador
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
18 mars 2008 à 21:57
Oui, mais si tu nous disais ce que tu veux faire exactement...

cantador
0
cs_Jordan59
Messages postés
174
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
9 avril 2014
7
19 mars 2008 à 08:55
Je voudrais passer en paramètre un code article à la 2ème form que j'appelle depuis la première
0
cs_Loda
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
19 mars 2008 à 09:33
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Loda
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
19 mars 2008 à 10:15
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.
0
cs_Jordan59
Messages postés
174
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
9 avril 2014
7
19 mars 2008 à 10:59
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
0