Перемещение контролов мышкой во время выполнения приложения?

Для этого необходимо перехватить событие OnMouseDown, запомнив координаты x и y и захватить мышку. После этого можно будет отслеживать движение мышки при помощи события OnMouseMove, перемещая контрол пока срабатывает событие OnMouseUp. Затем надо поместить контрол на своё окончательное место и снять захват мышки.
Следующий пример показывает как мышкой двигать компонент TButton по форме.

type

 TForm1 = class(TForm)

  Button1: TButton;

  procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;

  Shift: TShiftState; X, Y: Integer);

  procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X,

  Y: Integer);

  procedure Button1MouseUp(Sender: TObject; Button:

  TMouseButton; Shift: TShiftState; X, Y: Integer);

 private

  { Private declarations }

 public

  { Public declarations }

  MouseDownSpot : TPoint;

  Capturing : bool;

 end;

var

 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1MouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

 if ssCtrl in Shift then begin

  SetCapture(Button1.Handle);

  Capturing := true;

  MouseDownSpot.X := x;

  MouseDownSpot.Y := Y;

 end;

end;

procedure TForm1.Button1MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

begin

 if Capturing then begin

  Button1.Left := Button1.Left - (MouseDownSpot.x - x);

  Button1. := Button1. - (MouseDownSpot.y - y);

 end;

end;

procedure TForm1.Button1MouseUp(Sender: TObject; Button:

  TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

 if Capturing then begin

  ReleaseCapture;

  Capturing := false;

  Button1.Left := Button1.Left - (MouseDownSpot.x - x);

  Button1. := Button1. - (MouseDownSpot.y - y);

 end;

end;

Взято из http://forum.sources.ru

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...