Thema: Delphi Maus Position ändern??

Einzelnen Beitrag anzeigen

blackfin
(Gast)

n/a Beiträge
 
#6

AW: Maus Position ändern??

  Alt 20. Jul 2010, 17:04
Ähm, so kann das irgendwie nicht richtig funktionieren....

FormKeyDown wird immer wieder aufgerufen, während du die Taste drückst, und in der Routine setzt du m.Y dauernd auf die aktuelle Position der Maus.
Wenn dein Timer dann zuschlägt, kann es sein, dass die Routine bereits inzwischen wieder auf Mouse.cursorPos.Y zurückgesetzt hat.
Ausserdem wird der Timer gar nicht abgeschaltet, so dass die Maus dauernd nach oben fliegt.
Das ist nicht unbedingt ein guter Ansatz
Wenn du es unbedingt mit einem Timer machen willst, lass das FormKeyDown ganz weg und schreib deinen UpTimer so:

Delphi-Quellcode:
procedure TForm1.UpTimer(Sender: TObject);
var
  m: TPoint ;
begin
  m.X := Mouse.cursorPos.X;
  m.Y := Mouse.cursorpos.Y;

  if self.Active then
  begin
    if (GetAsyncKeyState(Ord('W')) <> 0) then m.Y := m.Y-5;
    if (GetAsyncKeyState(Ord('A')) <> 0) then m.X := m.X-5;
    if (GetAsyncKeyState(Ord('S')) <> 0) then m.Y := m.Y+5;
    if (GetAsyncKeyState(Ord('D')) <> 0) then m.X := m.X+5;

    Windows.SetCursorPos(m.X, m.Y);
  end;

end;
Das hat den Vorteil, dass du auch gleichzeitiges Drücken von mehreren Tasten handelst.
  Mit Zitat antworten Zitat