Transfert de paramètres supplémentaires aux fiches

De RAD Studio
Aller à : navigation, rechercher

Remonter à Développement de l'interface utilisateur des applications - Index

Généralement, vous créez les fiches de votre application en utilisant l'EDI. Quand elle est créée ainsi, la fiche a un constructeur qui prend un argument, Owner, qui est le propriétaire de la fiche créée. (Le propriétaire est l'objet application ou l'objet fiche appelant.) Owner peut avoir la valeur nil.

Pour transmettre d'autres arguments à la fiche, créez un constructeur différent et instanciez la fiche en utilisant ce nouveau constructeur. La classe fiche exemple suivante utilise un constructeur supplémentaire proposant le paramètre supplémentaire whichButton. Il faut ajouter manuellement ce nouveau constructeur à la fiche.



 TResultsForm = class(TForm)
   ResultsLabel: TLabel;
   OKButton: TButton;
   procedure OKButtonClick(Sender: TObject);
 private
 public
   constructor CreateWithButton(whichButton: Integer; Owner: TComponent);
 end;



 class TResultsForm : public TForm
 {
 __published:    // Composants gérés par l'EDI
 TLabel *ResultsLabel;
 TButton *OKButton;
 void __fastcall OKButtonClick(TObject *Sender);
 private:        // Déclarations de l'utilisateur
 public:         // Déclarations de l'utilisateur
 virtual __fastcall TResultsForm(TComponent* Owner);
    virtual __fastcall TResultsForm(int whichButton, TComponent* Owner);
 };



Voici le code, créé manuellement, de ce constructeur qui passe le paramètre supplémentaire whichButton. Ce constructeur utilise le paramètre whichButton pour initialiser la propriété Caption d'un contrôle Label de la fiche.



 constructor CreateWithButton(whichButton: Integer; Owner: TComponent);
 begin
   inherited Create(Owner);
   case whichButton of
     1: ResultsLabel.Caption := "Vous avez choisi le premier bouton.";
     2: ResultsLabel.Caption := "Vous avez choisi le second bouton.";
     3: ResultsLabel.Caption := "Vous avez choisi le troisième bouton.";
   end;
 end;



 void__fastcall TResultsForm::TResultsForm(int whichButton, TComponent* Owner)
 : TForm(Owner)
 {
 switch (whichButton) {
 case 1:
 ResultsLabel->Caption = "Vous avez choisi le premier bouton!";
 break;
 case 2:
 ResultsLabel->Caption = "Vous avez choisi le second bouton!";
 break;
 case 3:
 ResultsLabel->Caption = "Vous avez choisi le troisième bouton!";
 }
 }



Quand vous créez une instance d'une fiche disposant de plusieurs constructeurs, vous pouvez sélectionner le constructeur le mieux adapté à vos besoins. Par exemple, le gestionnaire OnClick suivant d'un bouton de la fiche crée une instance de TResultsForm en utilisant le paramètre supplémentaire :



 procedure TMainForm.SecondButtonClick(Sender: TObject);
 var
   rf: TResultsForm;
 begin
   rf := TResultsForm.CreateWithButton(2, self);
   rf.ShowModal;
   rf.Free;
 end;



 void __fastcall TMainMForm::SecondButtonClick(TObject *Sender)
 {
 TResultsForm *rf = new TResultsForm(2, this);
 rf->ShowModal();
 delete rf;
 }



Voir aussi