Показать сообщение отдельно
  #2  
Старый 06.06.2013, 21:37
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Может так проще будет
Код:
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 на клаве, а потом двигать кнопку.
Ответить с цитированием