Hallo!
Ich möchte eine ActionList zur Laufzeit kopieren. Dies habe ich bislang folgendermaßen bewerkstelligt:
Delphi-Quellcode:
procedure TFlexibleActionManager.SetBackupActionlist(const Value: tActionList);
var
ActionCount: Integer;
ClonedAction: tAction;
begin
// Wenn die BackupActionlist noch nicht existiert, wird diese neu erstellt oder alternativ geleert
if Not Assigned(fBackupActionList)
then BackupActionlist := tActionList.Create(Self)
else ClearBackupActionlist;
// Alle Actions der MasterActionlist durchgehen ...
for ActionCount := 0 to Value.ActionCount - 1 do
Begin
// Ein neues tAction-Objekt erstellen
ClonedAction := tAction.Create(BackupActionList);
// In die neue Action die Werte eines vorhandenen tAction-Objekts kopieren
ClonedAction.Assign(Value.Actions[ActionCount]);
// ... und anschließend das neue Objekt der BackupActionlist zuweisen
ClonedAction.ActionList := BackupActionList;
End;
end;
Dies scheint auch soweit zu funktionieren. Die Eigenschaft ActionCount liefert nachher bei der "kopierten" Actionlist dieselbe Anzahl von tActions wie in der Original-Actionlist.
Nun beginnt aber das Problem. Ich möchte auf die einzelnen gespeicherten Elemente zugreifen. Diese sind aber bei einer tActionList als tContainedAction hinterlegt. Da ich aber für einen Vergleich z.B. die Eigenschaft 'Name' benötige - und diese praktischerweise erst bei der von tContainedAction abgeleiteten Klasse tAction vorhanden ist - stehe ich im Wald (oder ich hab einen Denkfehler, da nach der kopierei z.B. BackupActionlist.Actions[ActionCount].Name immer leer ist ...).
So meine Frage: Wie kann ich bei der obigen Konstellation wieder auf die erstellten tAction-Objekte mit allen Eigenschaften, etc. zugreifen?
Für Vorschläge aller Art schonmal besten Dank im Vorraus
Gruß
Gerald