Ich möchte auch eine Action "Öffnen" und diese erstellt mir das Formular Mitarbeiter oder das Formular ABCD oder Formular ABDEFF.
Solange die Action keine Information über die Form-Class hat, die erzeugt werden soll, kann das nichts werden. Das Screen.ActiveForm kann es ja in diesem Fall nun mal nicht sein.
Keine Ahnung, ob das in deinem Fall passt, aber so könnte es gehen:
Delphi-Quellcode:
procedure TForm369.Action1Execute(Sender: TObject);
var
cmp: TComponent;
frm: TForm;
frmClass: TFormClass;
mode: Integer;
begin
mode := 0;
cmp := (Sender
as TBasicAction).ActionComponent;
if cmp <>
nil then begin
mode := cmp.Tag;
end;
case mode
of
1: frmClass := Tfrm_Mitarbeiter;
2: frmClass := Tfrm_ABCD;
3: frmClass := Tfrm_ABDEFF;
else
raise Exception.Create('
kein Mode gesetzt!');
end;
frm := frmClass.Create(Application);
try
frm.ShowModal;
finally
frm.Free;
end;
end;
Bei den Buttons oder MenuItems, die mit der Action verknüpft sind, setzt du einfach den Tag entsprechend auf 1, 2 oder 3.
Zusätzlich würde ich noch die case-Anweisung auslagern und durch eine FormClass Registrierung ersetzen um das ganze etwas zu entkoppeln. Das ist aber ein separates Thema.