OnKeyDown-Befehl mit Navigationstasten, aber wie?
-
Hi,
habe folgendes Problem, was ich irgendwie gar nicht oder so erklärt finde, dass ich es nicht verstehe:Habe eine Form mit 6 Buttons, wobei sie 3 Spalten bilden. Da aber z.B. bei betätigen der rechten Cursortaste der Focus auf einen Button tiefer verlegt wird (aufgrund der TabOrder), habe ich beschlossen "OnKeyDown" zu benutzen. Die virtuellen Tastencodes habe ich bereits, jedoch werden meine Befehle ignoriert da die Cursortasten im Programm zu den Navigationstasten gehören und somit zuerst die Befehle des Systems (hierbei Windows) beachtet werden (TabOrder).
TabStop auf false stellen bringt nichts, da die Cursortasten kein Tab sind, was also tun?
(Meine Befehle werden vom Zifferblock (Num ist eingeschaltet) angenommen, daher weiß ich, dass sie somit eigentlich nicht falsch sind.)Hier ein OnKeyDown-Befehl des mittleren Buttons von der linken Seite:
void __fastcall Twin1::MittelKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Key == VK_NUMPAD6)
Ultra->SetFocus();
if (Key == VK_NUMPAD2)
Schwer->SetFocus();
if (Key == VK_NUMPAD8)
Leicht->SetFocus();
if (Key == VK_RIGHT)
Ultra->SetFocus();
if (Key == VK_DOWN)
Schwer->SetFocus();
if (Key == VK_UP)
Leicht->SetFocus();
}Danke im Vorraus!
Nuke
-
OnKeyPress benutzen!?
-
Kein Unterschied, weil das System hat ja dann immer noch den Vorrang.
Und OnKeyUp wäre auch leicht unsinnig, obwohl dann der Befehl funktioniert, sobald man die Taste loslässt, wenn der Focus gerade wieder auf dem Button liegt.[ Dieser Beitrag wurde am 26.03.2003 um 19:32 Uhr von HBNuke editiert. ]
-
Du musst TForm::KeyPreview auf true setzen.
-
KeyPreview bringt nichts, aus dem einfachen Grund, weil diese Form bereits aktiv ist. Den Focus hat bei dem oben genannten Befehl der dementsprechende Button von daher ist es auch egal, ob KeyPreview true oder false ist.
Habe auch beides schon ausprobiert, einen Effeckt hat es jedoch wg. den genannten Gründen nicht gehabt.
-
WM_GETDLGCODE bearbeiten
-
Ich bin noch so ein C++Builder-Honk!
Kannst du mir vielleicht den direkten Befehl zeigen und wo ich den einfügen soll oder so? *lieb guck*
-
Weiß es selbst nicht wie das bei der VCL geht. Vielleicht ist meine Antwort auch falsch gewesen.
-
*heul*
Ich verzweifel noch!
-
vielleicht hilft das weiter. und dann DLGC_WANTARROWS returnen weil du ja die Pfeiltasten haben willst
-
In der FAQ findest du Informationen zu Windows Messages.