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