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
    akari

    Aber 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 ^^


Anmelden zum Antworten