Ich hab sowas ähnliches mal in der Art gelöst:
Delphi-Quellcode:
type
TActionType = (atFileNew, atFileOpen, ...);
TActionTypes = set of TActionType;
TMyActions = record
strict private
FActions: array[TActionType] of TAction;
private
function GetAction(AType: TActionType): TAction;
public
procedure CreateActions(ATypes: TActionTypes); // Erstellt die gewünschten Aktionen
property Actions[AType: TActionType]: TAction read GetAction; // Falls du von außen was mit der Aktion anstellen willst.
end;
procedure TMyActions.CreateActions(ATypes: TActionTypes);
var
t: TActionType;
begin
for t in ATypes do
begin
FActions[t] := TAction.Create(...);
// ...
end;
end;
function TMyActions.GetAction(AType: TActionType): TAction;
begin
Result := FActions[AType];
end;
Jetzt nur so aus dem Kopf hingeschustert. Vielleicht kannst du dir ja was rausziehen.