Keydown - Verzögerung
-
Bonjour
!Ich hab ein Problem mit den Tasten.
Ich überprüfe einen Tastendruck mit FormKeyDown. Und da soll z.B. ein Shape nach rechts gehn.if (Key == VK_RIGHT) { Shape1->Left += 1; }Das Problem ist nur das sich das Shape erst nur 1 Pixel nach rechts bewegt, kurz aufhört und dann erst das shape sich dauerhaft nach rechts bewegt.
Danke schon im voraus!
Lito
-
Das hängt mit der in der Systemsteuerung unter TASTATUR eingestellten Verzögerung zusammen
-
Nimm doch einen Timer.
Wenn die Taste gedrückt ist, aktivierst du den Timer
und wenn die Taste losgelassen wird, deaktivierst du ihn.
-
wie kann ich denn abfragen ob die taste nicht gedrückt worden ist?
Thx Lito
-
OnKeyDown und OnKeyUp
Im OnTimer Ereignis erfolgt dann das Verschieben
OnKEyDown aktiviert den Timer
OnKeyUP deaktiviert ihn
-
AUUUUja... das KeyUp hab ich garnicht gesehen, sry.
Vielen Dank funkt jetzt!
Lito
-
So:
bool RightDown; void __fastcall TForm1::Timer1Timer(TObject *Sender) { if(RightDown) { Shape1->Left += 1; } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if (Key == VK_RIGHT)RightDown=true; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift) { if (Key == VK_RIGHT)RightDown=false; } //---------------------------------------------------------------------------
-
Naja, wie gesagt würde ich den Timer in den Ereignissen ein- und ausschalten