TMenuItem zur Laufzeit hinzufügen



  • So, ich hab wieder mal ein peinliches Anfänger-Problem...

    Ich bring es einfach nicht fertig zur Laufzeit ein neues Item einem Popup-Menü hinzuzufügen.

    Bei einem bestimmten Ereignis sollte ein neues TMenuItem Objekt angelegt werden, diesem eine Beschriftung zugewiesen werden und einem Popup-Menü mit der Methode Add(TMenuItem) hinzugefügt werden.

    ich habe folgenden Code geschrieben, der schon beim ausführen der zweiten Zeile eine Exception auslöst...

    TMenuItem *popupItem;
    
    popupItem->Caption = "test";
    
    PopupMenu->Items->Add(popupItem);
    

    Exceptionmeldung:
    Im Projekt winStDebug.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 0043B74A in Modul 'winStDebug.exe'. Lesen von Adresse 04C48357'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.

    Ich hoffe jemand kann mir sagen, was ich falsch gemacht habe bzw. wie ich es richtig machen müsste. Danke



  • Korrekt wäre:

    TMenuItem *popupItem = new TMenuItem(PopupMenu);
    
    popupItem->Caption = "test";
    
    PopupMenu->Items->Add(popupItem);
    

    Du hast nur einen Pointer auf ein Objekt erzeugt, aber nicht das Objekt selber. Immer mit new erzeugen!



  • Vielen Dank, Ickis, für deine Hilfe, ich bin ab meiner Unwissenheit beinahe verzweifelt


Log in to reply