Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Button überspringt OnKeyDown bei VK_Up / VK_Down (https://www.delphipraxis.net/90605-button-ueberspringt-onkeydown-bei-vk_up-vk_down.html)

Aike 20. Apr 2007 13:04


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:
procedure TForm1.Button1KeyDown(Sender: TObject; ...);
begin
  ShowMessage('');
  if Key=VK_Down then
  begin
    ButtonDarunterAnvisieren;
  end;
end;
Es wird nichtmal die ShowMessage angezeigt, wenn ich die Pfeiltasten benutze. Mit Buchstaben funktioniert es natürlich einwandfrei.

Habt ihr eine Idee, wie ich das abfangen kann?

Liebe Grüße ...

Robert Marquardt 20. Apr 2007 13:15

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.

uwewo 20. Apr 2007 13:23

Re: Button überspringt OnKeyDown bei VK_Up / VK_Down
 
Ist im OI Deines Forms
Delphi-Quellcode:
Keypreview := True;

Aike 20. Apr 2007 14:08

Re: Button überspringt OnKeyDown bei VK_Up / VK_Down
 
Zitat:

Zitat von Robert Marquardt
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.

Das ist ja genau mein Problem, aber wie löse ich es? o.O

Delphi-Quellcode:
KeyPreview:=True
... hilft mir auch nicht weiter.

Die Hilfe sagt:
Zitat:

"Hat KeyPreview den Wert true, erhält das Formular Tastaturereignisse vor dem aktiven Steuerelement (das in der Eigenschaft ActiveControl angegeben ist).
[...] Die Einstellung bezieht sich nicht auf Navigationstasten (TAB, Pfeiltasten usw.), da diese keine Tastaturereignisse auslösen."
Das hat also nichts mit den Steuertasten zu tun :-/

Robert Marquardt 20. Apr 2007 14:15

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.

SirThornberry 20. Apr 2007 14:38

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.

Aike 20. Apr 2007 15:21

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:
http://www.files.artherk.de/FastCast_Optionen.jpg

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:

Ich wette die Idee Buttons zu verwenden ist der Aufgabe unangemessen.
Die Wette nehm ich an ;-p
[/edit]

angos 20. Apr 2007 15:47

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;

Aike 20. Apr 2007 16:02

Re: Button überspringt OnKeyDown bei VK_Up / VK_Down
 
Ah, super, die OnEnter-Routine funktioniert. Vielen lieben Dank :-)

Robert Marquardt 20. Apr 2007 18:06

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 04:01 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz