AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Tastendruck innerhalb vorgegeb. Zeit / Maus diagonal bewegen

Tastendruck innerhalb vorgegeb. Zeit / Maus diagonal bewegen

Ein Thema von -=cats=- · begonnen am 30. Nov 2006 · letzter Beitrag vom 30. Nov 2006
Antwort Antwort
Benutzerbild von -=cats=-
-=cats=-

Registriert seit: 22. Sep 2006
128 Beiträge
 
Delphi 7 Enterprise
 
#1

Tastendruck innerhalb vorgegeb. Zeit / Maus diagonal bewegen

  Alt 30. Nov 2006, 07:23
Guten Morgen

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=-
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Tastendruck innerhalb vorgegebener Zeit ?

  Alt 30. Nov 2006, 08:15
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von -=cats=-
-=cats=-

Registriert seit: 22. Sep 2006
128 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Tastendruck innerhalb vorgegebener Zeit ?

  Alt 30. Nov 2006, 09:09
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:

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;
Jetzt muss ich noch irgendwas mit "onKeyUp" machen.
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 ...
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf