![]() |
popup Menü Problem
Hallo
Ich habe ein kleines Problem. Ich nutze Delphi 7 Enterprise, falls das für dieses Problem von Bedeutung ist. Mein Programm erstellt dynamisch ein PopUp Menü. Je nachdem welche Einträge sich in einer Listbox befinden werden auch Einträge im Popup Menü erzeugt. Mein problem ist nun, dass ich nicht weiß, wie ich das .onClick event der PopUps ausgelesen bekomme. Je nachdem welcher Popup Eintrag gedrückt wird, soll ein unterschiedlicher Text in einem Label erscheinen. Ich wollte nun mittels Sender-Auslesen die PopUp Schaltfläche identifizieren und dann auswerten. Dazu wollte ich nutzen:
Delphi-Quellcode:
submenu := TMenuItems.create(self);
submenu.caption := 'hallo'; submenu.onClick := neue_proz; procedure neue_proz(Sender: TObject); begin if TMenuItem(Sender).caption = 'hallo' then Label1.caption := 'Richtig' else Label1.caption := 'Falsch'; end; problem ist nur, dass die caption des PopUp Menüs bei ersten Buchstaben bedingt durch den Hotkey einen Unterstrich unter den Buchstaben setzt und damit bekomm ich immer 'Falsch' ausgegeben, denn 'hallo'(normal) ist ja nicht gleich 'hallo'(Mit Unterstrich unter dem 'h'). Weiß jemand eine Lösung, würde mich sehr freuen! Ídentifizierung über
Delphi-Quellcode:
geht leider nicht, da das PopUp Menü nach Texteinträgen bezeichnet wird und die meist nicht für die Eigenschaft .name anwendbar sind (z.B. Leerzeichen im Text, ect.)
TMenuItem(Sender).name
Delphi-Quellcode:
geht leider auch nicht :-)
PopUpMenu.autohotkey := false;
Mit freundlichem Gruß Buchsbaum PS: Entschuldigt den Doppelpost, habe den Beitrag vorher an der falschen Stelle gepostet! [edit=mkinzler]Delphi-Tags ergänzt Mfg, mkinzler[/edit] |
Re: popup Menü Problem
Hallo und Willkommen in der DP :dp:,
Du könntest statt der Caption auch die Tag-Property des Items benutzen, die steht ja zur freien Verfügung. Wenn es aber unbedingt über die Caption gehen muss, versuch es mal mit
Delphi-Quellcode:
Wobei ich nicht verstehe, dass eine von Dir selbst vergebene Caption auf einmal anders sein soll.
if (Sender as TMenuItem).Caption = '&hallo' then
|
Re: popup Menü Problem
Wenn AutoHotkeys auf maAutomatic steht wird der HotKey automatisch erstellt. Dadurch wird ein 'hallo' zu '&hallo'
Gruß Matze |
Re: popup Menü Problem
Das ist mir noch nie aufgefallen :oops:. Na gut, man könnte ja das "&" zur Not auch noch mit StringReplace rauswerfen und dann vergleichen.
|
Re: popup Menü Problem
Zitat:
|
Re: popup Menü Problem
Zitat:
Delphi-Quellcode:
(oder Hallo1 oder HalloItem oder wie das Menüitem nun heißt)?
if Sender = miHallo then
|
Re: popup Menü Problem
:wink: Und ich habe damals das &-Zeichen gesucht, bis ich diese Option kennenlernte ...
|
Re: popup Menü Problem
Hallo
Zitat:
Dann sollte MenuItem.MenuIndex weiterhelfen:
Delphi-Quellcode:
if ListBox.Items[TMenuItem(Sender).MenuIndex] = 'hallo' then
Label1.caption := 'Richtig' else Label1.caption := 'Falsch'; |
Re: popup Menü Problem
Zitat:
Vielen Dnak für die Begrüßung! Ich habe Ihren Rat befolgt und die '&hallo' VAriante benutzt! Funktioniert einwandfrei! Vielen Dank, auch an die Anderen! Wollte nur noch mal kurz erklären. Die vergebe die Caption zwar selbst, aber da bedingt durch den Hotkey die Caption automatisch von 'hallo' auf 'hallo'(mit unterstrich unterm ersten buchstaben) gesetzt wird, "ändert" sie sich ja automatisch, das war mein Problem! Aber die o.gen. Variante funktioniert hervorragend, danke nochmal! Das erspart viel Arbeit und Ärger :-) |
Re: popup Menü Problem
Zitat:
Da du das & automatisch setzen läßt, hast du keinen Einfluß darauf, welcher Buchstabe genommen wird. Es kann also am mal 'h&allo', 'ha&llo' oder auch 'hall&o' sein. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz