Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi tAction <> tContainedAction (https://www.delphipraxis.net/108748-taction-tcontainedaction.html)

gkoeder 18. Feb 2008 23:14


tAction <> tContainedAction
 
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

mkinzler 18. Feb 2008 23:21

Re: tAction <> tContainedAction
 
Du musst die Elemente in den passenden Typ casten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz