Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   popup Menü Problem (https://www.delphipraxis.net/137472-popup-menue-problem.html)

buchsbaum 21. Jul 2009 16:39


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:
TMenuItem(Sender).name
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.)

Delphi-Quellcode:
PopUpMenu.autohotkey := false;
geht leider auch nicht :-)

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]

DeddyH 21. Jul 2009 16:51

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:
if (Sender as TMenuItem).Caption = '&hallo' then
Wobei ich nicht verstehe, dass eine von Dir selbst vergebene Caption auf einmal anders sein soll.

Bebe 21. Jul 2009 17:10

Re: popup Menü Problem
 
Wenn AutoHotkeys auf maAutomatic steht wird der HotKey automatisch erstellt. Dadurch wird ein 'hallo' zu '&hallo'

Gruß
Matze

DeddyH 21. Jul 2009 17:12

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.

uligerhardt 21. Jul 2009 17:27

Re: popup Menü Problem
 
Zitat:

Zitat von DeddyH
Das ist mir noch nie aufgefallen :oops:. Na gut, man könnte ja das "&" zur Not auch noch mit StringReplace rauswerfen und dann vergleichen.

Besser per Menus.StripHotkey.

uligerhardt 21. Jul 2009 17:29

Re: popup Menü Problem
 
Zitat:

Zitat von buchsbaum
if TMenuItem(Sender).caption = 'hallo' then

Geht nicht
Delphi-Quellcode:
if Sender = miHallo then
(oder Hallo1 oder HalloItem oder wie das Menüitem nun heißt)?

Bebe 21. Jul 2009 17:29

Re: popup Menü Problem
 
:wink: Und ich habe damals das &-Zeichen gesucht, bis ich diese Option kennenlernte ...

Lannes 21. Jul 2009 19:55

Re: popup Menü Problem
 
Hallo
Zitat:

Zitat von buchsbaum
Je nachdem welche Einträge sich in einer Listbox befinden werden auch Einträge im Popup Menü erzeugt.

folglich ist der Index der Items des Menüs identisch mit denen der Listbox.

Dann sollte MenuItem.MenuIndex weiterhelfen:

Delphi-Quellcode:
if ListBox.Items[TMenuItem(Sender).MenuIndex] = 'hallo' then
  Label1.caption := 'Richtig'
  else
    Label1.caption := 'Falsch';

buchsbaum 22. Jul 2009 08:22

Re: popup Menü Problem
 
Zitat:

Zitat von DeddyH
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:
if (Sender as TMenuItem).Caption = '&hallo' then
Wobei ich nicht verstehe, dass eine von Dir selbst vergebene Caption auf einmal anders sein soll.


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 :-)

himitsu 22. Jul 2009 09:06

Re: popup Menü Problem
 
Zitat:

Zitat von buchsbaum
Ich habe Ihren Rat befolgt und die '&hallo' VAriante benutzt! Funktioniert einwandfrei! Vielen Dank, auch an die Anderen!

...

Aber die o.gen. Variante funktioniert hervorragend, danke nochmal! Das erspart viel Arbeit und Ärger :-)

das funktioniert im Moment hervorragend :!:

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.
Seite 1 von 2  1 2      

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