Einzelnen Beitrag anzeigen

gkoeder

Registriert seit: 15. Jun 2004
84 Beiträge
 
Delphi 2010 Professional
 
#1

tAction <> tContainedAction

  Alt 18. Feb 2008, 23:14
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
  Mit Zitat antworten Zitat