Rätselhafte Caption in TMenuEntry



  • Hi,

    ich verwende ein MainMenu auf meinem Form. Dieses hat einen Menüpunkt, den ich dynamisch mit Unterpunkten fülle. Etwa wie folgt:

    TMenuItem *NewItem = new TMenuItem(this);
    NewItem->Name = "MenuItem1";
    NewItem->Caption = "Ab.c (xyz)";
    NewItem->OnClick = this->ItemClick;
    MainMenu->Items[2]->Add(NewItem);
    

    Das dann mehrmals. Die ItemClick-Methode bekommt ein TObject, das ich zunächst auf die richtige Klasse überprüfe, um dann die Caption auszulesen. Etwa so:

    if (!Sender->ClassNameIs("TMenuItem")) { return; }
    
    TMenuItem *Item = dynamic_cast<TMenuItem*>(Sender);
    
    String txt = Item->Caption;
    

    Aber nun taucht in der Caption irgendwo auf einmal ein '&' auf. Bei den unterschiedlichen Einträgen immer an unterschiedlicher Stelle, aber es ist immer ein '&'. Das blöde ist, übertrage ich den Code in ein neues Projekt, tritt der Fehler nicht mehr auf. Überprüfe ich hier nach dem Schreiben der neuen Einträge direkt die Captions, sind sie auch richtig. Erst in der OnClick-Methode kommen die falsch an. Kann mir jemand weiterhelfen?



  • Heimelchen schrieb:

    Die ItemClick-Methode bekommt ein TObject, das ich zunächst auf die richtige Klasse überprüfe, um dann die Caption auszulesen. Etwa so:

    if (!Sender->ClassNameIs("TMenuItem")) { return; }
    

    Hat man dir nicht schon einmal gesagt, daß man das so nicht macht? Nimm einen dynamic_cast<>.

    Heimelchen schrieb:

    Aber nun taucht in der Caption irgendwo auf einmal ein '&' auf. Bei den unterschiedlichen Einträgen immer an unterschiedlicher Stelle, aber es ist immer ein '&'. Das blöde ist, übertrage ich den Code in ein neues Projekt, tritt der Fehler nicht mehr auf. Überprüfe ich hier nach dem Schreiben der neuen Einträge direkt die Captions, sind sie auch richtig. Erst in der OnClick-Methode kommen die falsch an. Kann mir jemand weiterhelfen?

    StringReplace()?



  • Stelle im TMainMenu

    MainMenu1->AutoHotkeys=maManual;
    

    dann werden keine Automatische Hotkeys erstellt
    und somit keine '&' Zeichen eingefügt.


Anmelden zum Antworten