Home » Tipps & Tricks » System » Tastatur und Maus » Mausposition festlegen

Mausposition festlegen

Die Klasse TMouse enthält eine Eigenschaft, über die man die aktuelle Mausposition lesen sowie setzen kann. Es handelt sich dabei um die Eigenschaft CursorPos.

procedure TForm1.Button1Click(Sender: TObject);
begin
  Mouse.CursorPos := Point(200, 100);
end;

Der Mauszeiger wird auf 200 Pixel von links und 100 Pixel von oben gesetzt. Die Klasse ist erst ab Delphi 4 enthalten und liegt dann in der Unit Controls als globale Variable vor.Die API-Funktion SetCursorPos funktioniert auch mit niedrigeren Delphi-Versionen:

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetCursorPos(200, 100);
end;

Mithilfe dieser Procedure kann man den Mauszeiger über einem Control zentrieren:

procedure SetCursorToControl(Control: TControl);
var
  P: TPoint;
begin
  P.X := Control.Width div 2;
  P.Y := Control.Height div 2;
  P := Control.ClientToScreen(P);
  SetCursorPos(P.X, P.Y);
end;

Die Routine hat allerdings den Nachteil, dass die Beschriftung von manchen Controls, wie z.B. Buttons verdeckt wird. Diese modifizierte Fassung platziert den Mauszeiger deshalb unter der Beschriftung:

procedure SetCursorToButton(Control: TControl);
var
  P: TPoint;
begin
  P.X := Control.Width div 2;
  P.Y := Control.Height - 7;
  P := Control.ClientToScreen(P);
  SetCursorPos(P.X, P.Y);
end;