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

Messages postés
174
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
9 avril 2014
- - Dernière réponse : cs_Loda
Messages postés
900
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
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
900
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Loda
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
Oui, mais si tu nous disais ce que tu veux faire exactement...

cantador
Commenter la réponse de cs_cantador
Messages postés
174
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
9 avril 2014
3
0
Merci
Je voudrais passer en paramètre un code article à la 2ème form que j'appelle depuis la première
Commenter la réponse de cs_Jordan59
Messages postés
900
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
0
Merci
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.
Commenter la réponse de cs_Loda
Messages postés
900
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
0
Merci
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.
Commenter la réponse de cs_Loda
Messages postés
174
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
9 avril 2014
3
0
Merci
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
Commenter la réponse de cs_Jordan59