![]() |
Tastendruck innerhalb vorgegeb. Zeit / Maus diagonal bewegen
Guten Morgen :hi:
Ich habe ein kleines Problem ... In meinem anderen Beitrag habe ich bereits geschrieben, das ich den Mauszeiger auch diagonal bewegen möchte. Allerdings ... ! Nur mit den Pfeiltasten. Gehen wir mal davon aus, dass es keine anderen Tasten gibt :-) Da das ein kleines Problem ist, links und rechts gleichzeitig zu nehmen (es wird immer erst links genommen und dann rechts), habe ich mir überlegt, die Tasten unmittelbar nacheinander abzufragen. Geht das ? Also, der Benutzer wird ja automatisch "links" und "hoch" gleichzeitig drücken. Also werden vermutlich nur sehr wenige Sekunden zwischen dem Drücken auf "links" und auf "hoch" liegen. Kann man das irgendwie machen, oder ist die Idee eher Schwachsinn ... ? Wenn ja, wie ? Vielen Dank schon mal für Eure Hilfe ! Gruß, -=cats=- |
Re: Tastendruck innerhalb vorgegebener Zeit ?
die Idee ist eher schlecht weil es genau so vorkommen kann das jemand den Mauszeiger eine zeit lang in eine Richtung bewegt und dann erst später in die Diagonale Bewegung übergeht. Wenn du das ganze nur Innerhalb deines Programmes nutzen willst kannst du einfach auf OnKeyUp und OnKeyDown reagieren und dir in den Ereignissen merken welche Tasten gedrückt sind und welche nicht.
|
Re: Tastendruck innerhalb vorgegebener Zeit ?
Oh das habe ich noch vergessen zu
erwähnen: Die Maus gibt es nicht. Daher soll man auch den Mauszeiger mit den Tasten bedienen können. Ich habe hier einen Lösungsansatz, leider funktioniert das Diagonale nur so lange, wie der Timer läuft ...
Delphi-Quellcode:
Jetzt muss ich noch irgendwas mit "onKeyUp" machen. procedure TForm18.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = vk_left then begin SetCursorPos(Mouse.CursorPos.X - 10, Mouse.CursorPos.Y); JvTimer1.Enabled := true; end else if key = vk_right then SetCursorPos(Mouse.CursorPos.X + 10, Mouse.CursorPos.Y) else if (key = vk_up) and (JvTimer1.Enabled = false) then SetCursorPos(Mouse.CursorPos.X, Mouse.CursorPos.Y - 10) else if key = vk_down then SetCursorPos(Mouse.CursorPos.X, Mouse.CursorPos.Y + 10) else if ((GetKeyState(vk_left) AND 128)=128) AND ((GetKeyState(vk_up) AND 128)=128) then begin // ShowMessage('Links und hoch gleichzeitig gedrückt !'); SetCursorPos(Mouse.CursorPos.X - 1, Mouse.CursorPos.Y - 1); end; end; Denn so geht diagonal ja nur, wenn der Timer läuft. Ist der Timer abgelaufen, geht der Zeiger wieder ganz normal in die Richtung nach oben. Und das soll nicht sein ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz