Zugriffstasten sind immer aktiv
-
Hallo beisammen,
ich habe ein kleines Problem:
In meinem Programm ist mir gerade erst aufgefallen, dass die Zugriffstasten, die ich für diverse Menüeinträge und Buttons vergeben habe immer reagieren, ohne dass ich die ALT-Taste gedrückt haben muss. Das ist natürlich nicht besonders intuitiv, wenn man einfach auf z.b. 's' drückt und schon wird das OnClick-Ereignis eines Buttons ausgeführt, dem ich diese Zugriffstaste in seiner Caption zugeordnet habe.
Gibt es dafür irgendeine Property die übersehen habe oder wie kann ich das wieder so umstellen, dass die Buttons / Menüeinträge (wie gewöhnlich) erst beim gedrückt halten der ALT-Taste unterstrichen werden und auf die Tastenkürzel reagieren??Vielen Dank für jede Hilfe und schöne Festtage! :xmas1:
-
Das kann ich nicht reproduzieren.
Tritt das auch in einem neuen Projekt auf?
-
Hi,
audacia schrieb:
Das kann ich nicht reproduzieren.
Ok, das sagt mir zumindest schonmal, dass es wohl nicht normal ist und ich vermutlich nicht nur irgendeine Property irrtümlicher Weise verändert habe.
audacia schrieb:
Tritt das auch in einem neuen Projekt auf?
ja, wobei es da noch den Unterschied gibt, dass in meinem aktuellen Projekt die Zeichen für die Tastenkürzel in den Captions IMMER unterstrichen sind (sowohl in Desing- wie auch bei Runtime), dass ist bei einem neu angelegten Projekt nicht so.
Es hilft aber nichts:
Neues Projekt angelegt -> zwei Buttons auf die Form gepackt -> Button1-Caption in &Button1 geändert -> Projekt kompiliert und gestartet -> egal welcher Button den Fokus hat, sobald man die Taste b drück (egal ob mit oder ohne ALT) wird die OnClick-Routine von Button1 gestartet.Das nervt!
Any ideas?
Hab schon überlegt, ob ich es in einem Application->OnShortCut abfangen soll, aber das wäre ziemlich viel (unschöne und unnütze) Arbeit...
Ich hoffe es gibt eine bessere Lösung.Zusatz:
Jetzt bin ich total verwirrt. Ich habe gerade etwas rumexperimentiert und dabei festgestellt, dass z.b. jedes OnKey-Event prinzipiel ein großes B empfängt (ASCII 66) egal ob ich SHIFT+b oder nur b drücke (NEIN, Caps Look ist nicht an!)...
-
Du könntest ein solches Beispiel in ausführbarer Form verfügbar machen, damit wir es zu reproduzieren versuchen können (möglichst statisch linken).
__yoshi schrieb:
Jetzt bin ich total verwirrt. Ich habe gerade etwas rumexperimentiert und dabei festgestellt, dass z.b. jedes OnKey-Event prinzipiel ein großes B empfängt (ASCII 66) egal ob ich SHIFT+b oder nur b drücke (NEIN, Caps Look ist nicht an!
)...
Zumindest das ist normal. Wenn du nicht die getippte Taste, sondern das getippte Zeichen willst, dann reagiere auf WM_CHAR, nicht auf WM_KEY*.
-
audacia schrieb:
Zumindest das ist normal. Wenn du nicht die getippte Taste, sondern das getippte Zeichen willst, dann reagiere auf WM_CHAR, nicht auf WM_KEY*.
Hab ich mich wohl von meiner zunehmenden Verwirrung hinreißen lassen
Hier die EXE (ist nur eine Form mit 2 Buttons und 'nem Memo. Beim Klick auf button1 wird einfach ein ShowMessage ausgeführt):
Project1.zip
-
So, nach einigem Debuggen ist mein Augenmerk u.a. auf der Funktion "CMDialogChar" in StdCtrls hängen geblieben.
Und wenn ich den Funktionsnamen bei Google einhacke, muss ich feststellen, dass ich so Leute finde, die das gleiche Problem haben.Dort wird allerdings gesagt, dass dies das gewollte Standardverhalten von Windows ist??? Wenn ein Steuerelement eine Tastennachricht nicht verarbeitet, dann wird sie an die Form weitergereicht (gut und schön), aber eine Zeichentaste wird dann automatisch zu einem ShortCut auch ohne ALT?! Ist mir da was entgangen?
-
Ja, sieht so aus, als sei das hier dasselbe Problem.
__yoshi schrieb:
Dort wird allerdings gesagt, dass dies das gewollte Standardverhalten von Windows ist??? Wenn ein Steuerelement eine Tastennachricht nicht verarbeitet, dann wird sie an die Form weitergereicht (gut und schön), aber eine Zeichentaste wird dann automatisch zu einem ShortCut auch ohne ALT?! Ist mir da was entgangen?
Nun, so ganz unlogisch scheint mir das eigentlich doch nicht. Öffne mal Notepad, tippe etwas und schließe das Fenster dann wieder. Die dann auftauchende MB_YESNOCANCEL-MessageBox beantwortete zumindest ich bisher immer intuitiv mit 'j' oder 'n', ohne Alt.