![]() |
Button überspringt OnKeyDown bei VK_Up / VK_Down
Hallöchen,
ich musste gerade verwundert feststellen, dass ich meine Buttons zwar durchlaufen kann mit VK_Up und VK_Down, aber wenn ich möchte, dass bei OnKeyDown der Knopf gedrückt werden soll, geht das nicht. Um genauer zu sein: Ich habe eine Liste von 5 Buttons in der Vertikalen. Wenn ich nun den obersten Knopf gedrückt habe, möchte ich, dass, wenn ich die Pfeiltaste nach unten drücke, der Button darunter gedrückt und fokusiert wird. Code-Schnipsel:
Delphi-Quellcode:
Es wird nichtmal die ShowMessage angezeigt, wenn ich die Pfeiltasten benutze. Mit Buchstaben funktioniert es natürlich einwandfrei.
procedure TForm1.Button1KeyDown(Sender: TObject; ...);
begin ShowMessage(''); if Key=VK_Down then begin ButtonDarunterAnvisieren; end; end; Habt ihr eine Idee, wie ich das abfangen kann? Liebe Grüße ... |
Re: Button überspringt OnKeyDown bei VK_Up / VK_Down
Die Pfeiltasten gehoeren zu den Dialog-Tasten wie der Tabulator. Sie werden also normalerweise schon vorher abgefangen und bewirken das der Focus auf den naechsten Button wechselt. Mach doch einfach mal eine Form mit ein paar Buttons und probier aus.
|
Re: Button überspringt OnKeyDown bei VK_Up / VK_Down
Ist im OI Deines Forms
Delphi-Quellcode:
Keypreview := True;
|
Re: Button überspringt OnKeyDown bei VK_Up / VK_Down
Zitat:
Delphi-Quellcode:
... hilft mir auch nicht weiter.
KeyPreview:=True
Die Hilfe sagt: Zitat:
|
Re: Button überspringt OnKeyDown bei VK_Up / VK_Down
Ich sehe keinen Sinn in dem was du machen willst. Das Konzept des Fokus und der Standardnavigationstasten fuer den Fokus ist Basis von Windows und damit der VCL. Da ohne Not einzugreifen macht das Programm nur verwirrend.
Warum willst du den Button gleich druecken? Was soll die Programmoberflaeche eigentlich machen? Ich wette die Idee Buttons zu verwenden ist der Aufgabe unangemessen. |
Re: Button überspringt OnKeyDown bei VK_Up / VK_Down
mich interessiert wie Robert der Beweggrund. Der Windowsnutzer erwartet bei Verwendung der Pfeiltasten das Windowsstandardverhalten.
Ich weiß zwar die Lösung, aber noch bin ich nicht gewillt diese raus zu rücken da ich nicht will das irgend ein Nutzer ein böses erwachen erlebt weil plötzlich etwas passiert das eigentlich nur beim klick auf den Button passieren sollte. |
Re: Button überspringt OnKeyDown bei VK_Up / VK_Down
Meine Anforderung scheint ja sehr viel Aufmerksamkeit zu erregen; den Grund verstehe ich aber nicht so genau, da es eigentlich recht trivial ist. Ich habe ja nicht nach Code zu bösartiger Software gefragt.
Hier ein Bild, das meine Oberfläche zeigt: ![]() Ihr seht links die fünf Schalter, die durchlaufen werden können. Je nachdem, welcher Schalter gedrückt wurde, wird ein anderes Panel gezeigt mit anderen Einstellungsmöglichkeiten. Ich habe es realisiert, dass man die Buttons mit 1,2,3,4,5 öffnen kann, aber dass man sie mit den Pfeiltasten nicht erreicht, ist mir ein Dorn im Auge. So, jetzt lasst aber mal hören, wie die Lösung aussieht ;-p [edit] Zitat:
[/edit] |
Re: Button überspringt OnKeyDown bei VK_Up / VK_Down
Hi,
Hilft dir die Routine OnEnter weiter?:
Delphi-Quellcode:
procedure TForm1.Button1Enter(Sender: TObject);
begin if Sender = Button1 then Panel1.Visible := True; end; |
Re: Button überspringt OnKeyDown bei VK_Up / VK_Down
Ah, super, die OnEnter-Routine funktioniert. Vielen lieben Dank :-)
|
Re: Button überspringt OnKeyDown bei VK_Up / VK_Down
Ich hatte auch recht. Das mit Buttons zu loesen ist falsch. Fuer diese Organisationsart ist ein TTabControl zustaendig.
|
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 by Thomas Breitkreuz