TPOINT i "uciekający kursor" przy przenoszeniu obi

0

Witam,
Mam taki problem, przy przenoszeniu obiektów jeżeli za szybko rusze myszką ucieka mi kursor - nie jest już na obiekcie tylko jest obok niego. Skrypt:

zmienne:

    P1, P2 : TPoint;

onmousedown:

GetCursorPos(P1);

onmousemove:

GetCursorPos(P2);
Button1.Left := Button1.Left + (P2.x - P1.x);
Button1.Top := Button1.Top + (P2.y - P1.y);
GetCursorPos(P1);

Wie ktoś może jak zmodyfikować kod aby uniknąć tego efektu "uciekającego kursora"?

0
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  GetCursorPos(P1);
  P1.X := P1.X - Button1.Left;
  P1.Y := P1.Y - Button1.Top;
end;

procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if ssLeft in Shift then
    begin
      GetCursorPos(P2);
      P2.X := P2.X - Button1.Left;
      P2.Y := P2.Y - Button1.Top;
      Button1.Left := Button1.Left + P2.X - P1.X;
      Button1.Top := Button1.Top + P2.Y - P1.Y;
  end;
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1