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

cs_Jordan59 174 Messages postés vendredi 26 mai 2006Date d'inscription 9 avril 2014 Dernière intervention - 18 mars 2008 à 20:36 - Dernière réponse : cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention
- 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

Répondre au sujet
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 19 mars 2008 à 13:46
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Loda
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 18 mars 2008 à 21:57
0
Utile
Oui, mais si tu nous disais ce que tu veux faire exactement...

cantador
Commenter la réponse de cs_cantador
cs_Jordan59 174 Messages postés vendredi 26 mai 2006Date d'inscription 9 avril 2014 Dernière intervention - 19 mars 2008 à 08:55
0
Utile
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
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 19 mars 2008 à 09:33
0
Utile
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
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 19 mars 2008 à 10:15
0
Utile
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
cs_Jordan59 174 Messages postés vendredi 26 mai 2006Date d'inscription 9 avril 2014 Dernière intervention - 19 mars 2008 à 10:59
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.