Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ActionClientItem aus ActionMainmenubar aufräumen? (https://www.delphipraxis.net/82185-actionclientitem-aus-actionmainmenubar-aufraeumen.html)

Lun 8. Dez 2006 09:31


ActionClientItem aus ActionMainmenubar aufräumen?
 
Hi @ll,

ich habe ein Problem, ich habe eine ActionMainMenubar, in dieser Menubar erzeuge ich dynamisch in einem Menüpunkt Unterpunkte.
Diese Unterpunkte sind logischerweise vom Typ ActionClientItem, da ich aber zur Caption noch zwei Variablen dazu ablegen möchte,
fehlten mir zwei Stringtypen. Dann habe ich mir gedacht leite ich vom Typ ActionClientItem ab, und dann bastel ich mir meine 2 variablen. Das hat aber nicht funktioniert, keine ahnung warum. Dann habe ich eine Ableitung vom Typ TColletionItem gemacht.

Delphi-Quellcode:
type
  TMyCollectionItem = class(TCollectionItem)

  private
       var1 : String;
       var2 : String;
  public
     

  end;
Jetzt funktioniert das hinzufügen ohne Probleme, ich kann diese beiden Variablen auch ansprechen und gebrauchen. Bsp. Code

Delphi-Quellcode:

var

Item : TActionClientItem

for i := 0 to Liste.Count-1 do begin
      Item := _ActionManager.ActionBars[0].Items[7].Items[in].Items.Add; //Und hier wird das Item zu dem Menü mit Index in geaddet.
      Item.Action := iAction; //iItem wird eine Action zugewiesen
     
      iItem.Caption := 'abc';


       TMyCollectionItem(Item).var1 := 'def';
       TMyCollectionItem(Item).var2 := 'ghz';


        //ShowMessage(TMyCollectionItem(Item).var1 + TMyCollectionItem(Item).var2);
       end;

Aber wenn ich einen Menupunkt neuerzeugen möchte, also den alten löschen einen neuen anlegen, bekomme ich die Items nicht gelöscht:

Delphi-Quellcode:

 //ohne die zwei variblen var1,var2 werden die Items sauber gelöscht
 _DFB_ActionManager.ActionBars[0].Items[7].Items[itemI].Items.Clear;
Wie bekomme ich jetzt hin das die beiden variablen mit gekillt werden?
Hab es bis jetzt so versucht:

TMyCollectionItem(_ActionManager.ActionBars[0].Items[7].Items[in].Items).Free;
TMyCollectionItem(_ActionManager.ActionBars[0].Items[7].Items[in].Items).Collection.Clear;
TMyCollectionItem(_ActionManager.ActionBars[0].Items[7].Items[in].Items).CleanupInstance;
TMyCollectionItem(_ActionManager.ActionBars[0].Items[7].Items[in].Items).FreeInstance;

Ich denke auch nicht das, dass der richtige ansatz ist, da ich so nur ein Item anspreche oder?

Vielleicht hat ja jemand eine Idee, oder vielleicht hätte ich doch von TActionclientItem ableiten müssen, da habe ich aber das
Problem das: _ActionManager.ActionBars[0].Items[7].Items[in].Items.Add;
Die Add funktion von ActionClients ein ActionClientItem zurück gibt. Und das bringt mir nix, und das außer acht lassen geht nicht.
Da dies nicht funtzt:

TMyActionClientItem(Item).var2 := 'ghz'; // Kind-Klasse := ElternKlasse geht net

Also thx for help

greetz Lun

Sidorion 8. Dez 2006 10:16

Re: ActionClientItem aus ActionMainmenubar aufräumen?
 
Online-Hilfe hat geschrieben:
Zitat:

Dieses Ereignis tritt ein, bevor TActionManager irgendwelche ActionClientItems erzeugt.

Delphi-Syntax:

property OnGetClientItemClass: TGetClientItemClass read FOnGetClientItemClass write FOnGetClientItemClass;

C++ Syntax:

__property TOnGetClientItemClass OnGetClientItemClass = {read=FOnGetClientItemClass, write=FOnGetClientItemClass};

Beschreibung

Schreiben Sie eine Ereignisbehandlungsroutine für OnGetClientItemClass , um den Typ der TActionClientItem-Klasse zu ändern, der von dem Aktionsmanager erzeugt und benutzt wird. OnGetClientItemClass ermöglicht es, einen Nachkommen von TactionClientItem zurückzugeben, der neue Eigenschaften, Ereignisse und Methoden für die Verwendung in Aktionsabschnitten bereitstellt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:56 Uhr.

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