Funktion KeyPress wird nicht ausgeführt
-
Hallo,
ich habe die Funktion KeyPress in meinem Programm, diese wird aber beim
Tastendruck nicht ausgeführt.
Was mache ich denn da Falsch?void __fastcall KeyPress(char &Key) { if (Key == 0x31) { if (Form1->Button1->Caption == "OFF") { Form1->Button1->Caption = "ON"; } else { Form1->Button1->Caption = "OFF"; } } }Johann
-
Wieso erwartest du, dass diese Funktion ausgeführt würde?
(Eine Fensterklasse kann ein Event OnKeyPress haben.)
-
Hast Du die Methode denn auch irgendeinem Ereignis (z.B. OnKeyPress) zuge-
wiesen?Gruß,
Alexander
Edit: Da war ich wohl einen Tick zu langsam...
-
Die Funktion KeyDown wird nach Tastendruck Ausgeführt, nun möchte ich noch
die Status der Shifttaste abfragen.void __fastcall TWinControl::KeyDown(unsigned short &Key, Classes::TShiftState Shift) { if (??Shift??) { if (Key == 0x70) //Shift F1 { if (Form1->Button1->Caption == "OFF") { Form1->Button1->Caption = "ON"; } else { Form1->Button1->Caption = "OFF"; } } } }
-
Ein (gründlicher) Blick in die Hilfe hätte dir verraten, dass TShiftState vom Typ Set ist ...
Siehe FAQ, "Umgang mit 'Set'".
-
void __fastcall TWinControl::KeyDown(unsigned short &Key, Classes::TShiftState Shift) { if (Key == 0x70 && Shift.Contains(ssShift)) { if (Form1->Button1->Caption == "OFF") { Form1->Button1->Caption = "ON"; } else { Form1->Button1->Caption = "OFF"; } } }Das ganze funktioniert.
Gibt es eine elegante Methode die Tasten zu entprellen (erst nach loslassen der Tasten S+F1 und erneutem drücken darf wieder eine Reaktion stattfinden).Meine Lösung wäre
//--------------------------------------------------------------------------- void __fastcall TWinControl::KeyDown(unsigned short &Key, Classes::TShiftState Shift) { if (Key == 0x70 && Shift.Contains(ssCtrl) && !keyp) { if (Form1->Button1->Caption == "OFF") { Form1->Button1->Caption = "ON"; } else { Form1->Button1->Caption = "OFF"; } keyp = true; } } void __fastcall TWinControl::KeyUp(unsigned short &Key, Classes::TShiftState Shift) { keyp = false; }Aber vieleicht gehts ja auch anders?
Gruß
Johann