Einzelnen Beitrag anzeigen

nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#18

AW: Form (zur Laufzeit erstellt) richtig schliessen.

  Alt 30. Sep 2015, 16:26
In deinem Beispiel hast du gewisse Sachen fest deklariert.
Wenn du sagst, dass die Forms optisch alle gleich aussehen und nur durch Logo / Überschrift unterschieden werden, kannst du mit dem TFormType -Typ (zB) rausfinden, von welcher Form die Daten kommen. Statt der type -Deklaration kannst du auch einen Integer mit einer fortlaufenden Nummer nutzen.

Wenn du zB für den "OK"-Button auf der Form beim Instanzieren den gleichen Handler zuweist, kannst du an Hand dessen unterscheiden.

Zum Beispiel:
Delphi-Quellcode:
unit Unit1;

interface

// ...

type
  TForm_Main = class(TForm)
    // ...
  private
    // ...
    procedure Form_Input_OKClick(Sender: TObject);
  end;

// ...

implementation

// ...

procedure TForm_Main.Form_Input_OKClick(Sender: TObject);
var
  SenderForm: TForm_DynamicForm;
  FormType: TFormType;
begin
  SenderForm := GetParentForm(TControl(Sender));
  FormType := SenderForm.FormType;

  case FormType of
    ftForm1:
      DoSomethingForForm1;
    ftForm2:
      DoSomethingForForm2;
    // ...
  end;
end;

procedure TForm_Main.Button_Form1Click(Sender: TObject);
begin
  with TForm_DynamicForm.Create(Self) do
    begin
      FormType := ftForm1;
      Button_OK.OnClick := Form_Input_OKClick;
      Show;
    end;
end;

procedure TForm_Main.Button_Form2Click(Sender: TObject);
begin
  FDialogForm := TForm_DynamicForm.Create(Self);
  FDialogForm.FormType := ftForm2;
  FDialogForm.Button_OK.OnClick := Form_Input_OKClick;
  FDialogForm.Show;
end;
Ich weiss aber nicht, ob GetParentForm schon in D7 verfügbar ist. http://docs.embarcadero.com/products...arentForm.html
  Mit Zitat antworten Zitat