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

解決


ぞう  2007-12-28 07:35:03  No: 29110

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

var
pMouses : Tpoint; 

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

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


F.N  2007-12-28 09:17:57  No: 29111

こんなもんで

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 10:50:34  No: 29112

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加