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/)
-   -   Zugriff auf Elemente im VCL Ribbon (https://www.delphipraxis.net/166360-zugriff-auf-elemente-im-vcl-ribbon.html)

messie 9. Feb 2012 14:21


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.

messie 9. Feb 2012 16:50

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

messie 9. Feb 2012 18:22

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:

Zitat von himitsu (Beitrag 1149611)
Wir sind vielleicht irre, aber noch nicht soooo selbstmörderisch veranlagt. :stupid:

Aus
Code:
ActionManager1.ActionBars[0].Items[0].Items[0].Caption := 'huhu';
in Delphi wird in CPP
Code:
ActionManager1->ActionBars->ActionBars[0]->Items->ActionClients[0]->Items->ActionClients[0]->Caption = "huhu";
Die Implementierung ist also doch recht unterschiedlich.

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

DMW 15. Feb 2012 20:34

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:
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*/};
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 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