Transfert de paramètres supplémentaires aux fiches
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;
}