Zitat:
Delphi-Quellcode:
var
MousePos: TPoint;
begin
MousePos.X := Button1.Left + Button1.Width div 2;
MousePos.Y := Button1.Top + Button1.Height div 2;
Mouse.CursorPos := ClientToScreen(MousePos);
end;
ClientToScreen ist eine nette Methode und nicht irgendeine billige Funktion.
Hier fragst du die Form (Self.ClientToScreen), mit der Client-Position des Buttons ... eventuell rechnet ClientToScreen der Form aber nicht mit der Clientposition, sondern mit der Fensterposition?
Und dein Fenster hat doch bestimmt einen Rahmen+Titelleiste?
Warum fragst du nicht also direkt den Button?
Delphi-Quellcode:
var
MousePos: TPoint;
begin
MousePos.X := Button1.Width div 2;
MousePos.Y := Button1.Height div 2;
Mouse.CursorPos := Button1.ClientToScreen(MousePos);
end;
Nja, ansonsten kann es gut sein, daß Form/Button nochmal etwas verschoben werden, bevor es angezeigt wird.
Deshalb stimme ich Luckie vollkommen zu.