![]() |
Zugriff auf Elemente im VCL Ribbon
Liste der Anhänge anzeigen (Anzahl: 1)
Moin,
ich beschäftige mich gerade mit den VCL-Ribbons und suche die Strippe, mit der ich an die Elemente im "RibbonApplicationMenuBar" komme. Im Anhang als "Save", "Save as" etc gekennzeichnet und sind zur Entwurfszeit dem Actionmanager untergeordnet. An die anderen komme ich dran, z.B. an die Recent Items. Einen direkten Zugriff auf die anderen Items muss es doch aber geben :? Mit dem Aufruf ähnlich ActionManager1->ActionBars->ActionBars[0]->Items->ActionClients[0]->Caption komme ich an alle anderen Elemente dran. Hat das jemand schon mal probiert? Danke, Messie Edit: Anhang drangehängt. |
AW: Zugriff auf Elemente im VCL Ribbon
Hoppla, unter Delphi geht es :?:
ActionManager1.ActionBars[0].Items[0].Items[0].Caption := 'huhu'; greift genau darauf zu. Der Builder gibt mir hierfür einen Fehler wieder: ActionManager1->ActionBars[0]->Items[0]->Items[0]->Caption = "huhu"; verusacht den Fehler "E2288 Zeiger auf Struktur links von -> oder von ->* erforderlich" und zeigt auf die erste eckige Klammer. Der ActionManager1 ist doch eine Komponente, da brauche ich doch keinen extra Zeiger drauf, oder? Grüße, Messie |
AW: Zugriff auf Elemente im VCL Ribbon
Herrje, wie kompliziert!
Daher hier die Lösung, falls sich damit mal jemand freiwillig damit rumärgert. Zitat:
Code:
in Delphi wird in CPP
ActionManager1.ActionBars[0].Items[0].Items[0].Caption := 'huhu';
Code:
Die Implementierung ist also doch recht unterschiedlich.
ActionManager1->ActionBars->ActionBars[0]->Items->ActionClients[0]->Items->ActionClients[0]->Caption = "huhu";
Rausgefunden habe ich es, in dem ich mir mit <irgendwas>->ToString() die Typen habe anzeigen lassen, dann konnte ich mich damit am Strukturbaum entlang hangeln. Das hatte ich bei C# schon häufiger mal gemacht, hier bin ich erst spät darauf gekommen. Grüße, Messie |
AW: Zugriff auf Elemente im VCL Ribbon
In Delphi können Klassen Default-Array-Eigenschaften haben, so daß etwa objekt[i] als objekt.DefaultProperty[i] interpretiert wird. In C++ würde das so nicht gehen, weil das Objektmanagement über Zeiger geschieht und objekt[i] in C++ für Zeiger nur eine Alternativschreibweise für *(objekt + i) ist.
Der Delphi-Compiler generiert trotzdem für Default-Eigenschaften einen []-Operator-Overload, etwa für TList:
Code:
Aber zum Benutzen muß man den Zeiger explizit dereferenzieren: aus objekt[i] in Delphi würde also (*objekt)[i] in C++. Auf Dauer ist das auch lästig.
class PASCALIMPLEMENTATION TList : public System::TObject
{ typedef System::TObject inherited; ... public: void * operator[](int Index) { return Items[Index]; } ... __property void * Items[int Index] = {read=Get, write=Put/*, default*/}; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 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 by Thomas Breitkreuz