Может так проще будет
Код:
var
flg : boolean;
mX, mY : integer;
procedure TForm1.Button1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ssCtrl in Shift then
begin
SetCapture(Button1.Handle);
flg:= true;
mX := X;
mY := Y;
end;
end;
procedure TForm1.Button1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
if flg then
begin
Button1.Left := Button1.Left - (mX - X);
Button1.Top := Button1.Top - (mY - Y);
end;
end;
procedure TForm1.Button1MouseUp(Sender: TObject; Button:
TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if flg then
begin
ReleaseCapture;
flg:= false;
Button1.Left := Button1.Left - (mX - X);
Button1.Top := Button1.Top - (mY - Y);
end;
end;
надо сначала нажать Ctrl на клаве, а потом двигать кнопку.