Tabulator-Taste abfangen
-
Hi,
wie ist es moeglich, die Tabulator-Taste abzufangen? Unter google fand ich
dashier:
http://www.bcbdev.com/faqs/faq78.htmNur habe ich keinen Erfolg mit der dort beschriebenen Methode.
Hier der Code:
void __fastcall MyComponent::WMGetDlgCode(TMessage & Message) { Message.Result = DLGC_WANTALLKEYS; Message.Result |= DLGC_WANTTAB; }
Gibt es sonst noch einen Weg?
Danke schon mal im Voraus.
mfg
v RPS: Ist uebrigens die gleiche Komponente, in der ich auch 'CreateParams'
ueberschrieben habe, koennte es damit zusammenhaengen?
-
-
Hi,
erstmal danke fuer die Antwort und die Links.
Allerdings bringt es mich nicht weiter, denn 'CMDialogKey' wird erst aufgerufen,
wenn, das naechste Control bereits den Focus hat.Ich benoetige die Auswertung der Tabulatortaste, nach Moeglichkeit, allerdings bevor das naechste Control den Focus hat.
Hast du dafuer auch ne Loesung parat?
Danke fuer die Hilfe
mfg
v R[ Dieser Beitrag wurde am 14.03.2003 um 10:23 Uhr von virtuell Realisticer editiert. ]
-
VK_TAB
oder bei nem keyhook 0x09 abfangen[ Dieser Beitrag wurde am 14.03.2003 um 10:51 Uhr von 1ntrud0r editiert. ]
-
VK_TAB
Ist mir schon Klar, nur die normalen Key*-Funktionen greifen bei gedrueckter
Tabulator-Taste nicht.oder bei nem keyhook 0x09 abfangen
Soweit wollt ich auf gar keinen Fall gehen und mir ne Hook-Funktion schreiben,
nur damit ich die Tabulator-Taste abfangen kann.Ich denke ich werde es anders loesen.
mfg
v R
-
wie geht net ?! wie wärs wenn du dir ne temp Var machst ! Die bei Keydown auf 1 setzt und bei Key up zurück auf 0 dann kannst sehr wohl abfragen ... ob es gedrückt ist oder net
Programmieren erfordert implizites abstraktes Denken ... !
-
ist doch gar nicht so schwer, bei mir gehts doch auch...
// header protected: void __fastcall WMGetDlgCode(TMessage &Msg); public: BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_GETDLGCODE, TMessage, WMGetDlgCode); END_MESSAGE_MAP(TCustomEdit)
dann in cpp-file
// cpp void __fastcall TMyEdit::WMGetDlgCode(TMessage &Msg) { // tab abfangen einschalten Msg.Result = DLGC_WANTTAB; } // im keypress dann die taste abfangen void __fastcall TMyEdit::KeyPress(char &Key) { // entweder so if (GetKeyState(VK_TAB) & 0x8000) ShowMessage("TAB 1"); // oder so if (Key == VK_TAB) ShowMessage("TAB 2"); }
-
wie geht net ?! wie wärs wenn du dir ne temp Var machst ! Die bei Keydown auf 1
setzt und bei Key up zurück auf 0 dann kannst sehr wohl abfragen ... ob es gedrückt
ist oder netProgrammieren erfordert implizites abstraktes Denken ... ! rolleyes
Die Key*-Events werden, wie schon gesagt, nicht aufgerufen, wenn man Tab drueckt.
Es wird das OnKeyUp-Ereignis aufgerufen, allerdings bereits im naechsten Control
und nicht in dem Control, in dem ich Tab gedrueckt habe, aber genau in diesem
Control will ich auf Tab pruefen.Das mit einer 'tmp'-Variable hab ich auch schon laengst ausprobiert gehabt, hat
aber nicht geholfen, da 'OnKeyDown' nicht aufgerufen wird.Danke, so funktioniert es wunderbar.
mfg
v R