マウスで移動できるボタンについて

解決


ぞう  2007-12-27 22:35:03  No: 29110  IP: 192.*.*.*

フォームにボタンを置きます。
そのボタンを実行中にマウスに合わせて移動するという
delphiの開発環境のような動かせ方はできるのでしょうか?

var
pMouses : Tpoint; 

pMouses := Mouse.CursorPos;
OnMouseDownでマウス位置を取得した後、OnDragDropに何記述がいるのでしょうか?

ご教授よろしくお願いいたします。

編集 削除
F.N  2007-12-28 00:17:57  No: 29111  IP: 192.*.*.*

こんなもんで

var
  bDrag: boolean;
  ptBegin: TPoint;

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ptBegin := Point(X, Y);
  bDrag := TRUE;
end;

procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  bDrag := FALSE;
end;

procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  pt: TPoint;
begin
  if bDrag=TRUE then begin
    pt := Form1.ScreenToClient(Button1.ClientToScreen(Point(X, Y)));
    Button1.Left := pt.X-ptBegin.X;
    Button1.Top := pt.Y-ptBegin.Y;
  end;
end;

編集 削除
ぞう  2007-12-28 01:50:34  No: 29112  IP: 192.*.*.*

Turbo Delphi Explorerで動作を確認しました。
こういう風に記述するのですね。

とても勉強になりました。
ありがとうございます。

編集 削除