Zusätzliche Argumente an Formulare übergeben

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Die Benutzeroberfläche erstellen - Index

Normalerweise erstellen Sie die Formulare Ihrer Anwendungen in der IDE. Bei diesem Vorgehen wird dem Konstruktor im Parameter Owner der Eigentümer des Formulars (also das aufrufende Anwendungs- oder Formularobjekt) übergeben. Owner kann auch den Wert nil haben. Owner kann den Wert nil haben.

Sie können einem Formular auch weitere Argumente übergeben. Erstellen Sie dazu einen neuen Konstruktor, und führen Sie in ihm die gewünschte Instantiierung des Formulars durch. Im folgenden Beispiel wird dem Konstruktor das zusätzliche Argument whichButton übergeben. Der Konstruktor muss manuell in die Klassendeklaration aufgenommen werden.



 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:    // IDE-verwaltete Komponenten
 TLabel *ResultsLabel;
 TButton *OKButton;
 void __fastcall OKButtonClick(TObject *Sender);
 private:        // Benutzerdeklarationen
 public:         // Benutzerdeklarationen
 virtual __fastcall TResultsForm(TComponent* Owner);
    virtual __fastcall TResultsForm(int whichButton, TComponent* Owner);
 };



Hier der Quelltext des Konstruktors, dem das zusätzliche Argument whichButton übergeben wird. Anhand dieses Wertes wird der Eigenschaft Caption einer Label-Komponente ein bestimmter String zugewiesen.



 constructor CreateWithButton(whichButton: Integer; Owner: TComponent);
 begin
   inherited Create(Owner);
   case whichButton of
     1: ResultsLabel.Caption := "Sie haben den ersten Schalter gewählt.";
     2: ResultsLabel.Caption := "Sie haben den zweiten Schalter gewählt.";
     3: ResultsLabel.Caption := "Sie haben den dritten Schalter gewählt.";
   end;
 end;



 void__fastcall TResultsForm::TResultsForm(int whichButton, TComponent* Owner)
 : TForm(Owner)
 {
 switch (whichButton) {
 case 1:
 ResultsLabel->Caption = "Sie haben den ersten Schalter gewählt!";
 break;
 case 2:
 ResultsLabel->Caption = "Sie haben den zweiten Schalter gewählt!";
 break;
 case 3:
 ResultsLabel->Caption = "Sie haben den dritten Schalter gewählt!";
 }
 }



Wenn Sie eine Instanz eines Formulars erstellen, das mehrere Konstruktoren hat, verwenden Sie den Konstruktor, der sich für die jeweilige Situation am besten eignet. In der folgenden OnClick-Ereignisbehandlungsroutine wird beispielsweise eine Instanz von TResultsForm erstellt, die den zweiten Parameter verwendet:



 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;
 }



Siehe auch