Neues TMenuItem in PopupMenu
-
hi Leute
Ich habe ein PopupMenu und möchte in das allererste einen Untereintrag hinzufügen.
TMenuItem *NewItem = new TMenuItem( PopupMenu1 ); NewItem->Caption = AnsiString( GetString() ); NewItem->Checked = ( GetIndex() == 1 ); PopupMenu1->Items[0].Items->Add( NewItem );
Der Compiler akzeptiert das "Add" nicht und schreibt die Meldung:
Zu wenige Parameter im Aufruf von __fastcall TMenuItem::GetItem(int)
In der Hilfe ist die Add-Funktion aber mit nur einem Parameter angegeben.
Wo liegt der Fehler?
-
Hallo
Du solltest die Fehlermeldung genauer lesen. Der Compiler beschwert sich nicht über eine Add-Methode, sondern über eine Get-Methode. Dieser Fehler kommt weil du mit den Zugriffsfunktionen durcheinanderkommst. Du meinst sicher so ?
PopupMenu1->Items->Add( NewItem );
bis bald
akari
-
it0101@loggedoff schrieb:
PopupMenu1->Items[0].Items->Add( NewItem );
Soweit ich das sehe, ist TMenu::Items kein Index-Property, TMenuItem::Items hingegen schon. Im ersten Fall indizierst du also unnötigerweise den Zeiger - jeder andere Index als 0 führt hier, wenn du Glück hast, zu einer AV -, und im zweiten Falle müßtest du das Property indizieren, tust es aber nicht, was der Compiler dir freundlicherweise mitteilt.
-
akari schrieb:
Hallo
PopupMenu1->Items->Add( NewItem );
bis bald
akariAber das fügt doch lediglich in das PopupMenu einen zusätzlichen Eintrag ein. Ich will aber ein Untermenü für den ersten Eintrag des PopupMenus "items[0]" erzeugen.
-
Zitat Borland Hilfe:
Die Methode Add fügt am Ende des Eigenschafts-Arrays Items einen oder mehrere Menüeinträge hinzu.
void __fastcall Add(TMenuItem* Item);
void __fastcall Add(const TMenuItem* * AItems, const int AItems_Size);
-
Hallo
Dann sieht es etwas hässlicher aus :
PopupMenu1->Items->Items[0]->Add(NewItem);
bis bald
akari
-
ok funzt
danke dir. Hatte mal wieder nicht mit der kreativen Property-Namensgebung von Borland gerechnet
für ->Items->Items würd mein Chef mich erschlagen ^^