フォームやパネルをマウスのドラッグで移動させる(VCL) ~Delphiでお手軽プログラミング

フォームやパネルをマウスのドラッグで移動させる(VCL) ~Delphiでお手軽プログラミング

プロジェクトの作成

Delphi IDEを起動し、「ファイル」⇒「Windows VCLアプリケーション -Delphi」をクリックします。
フォームにTPanelをドラッグ&ドロップします。
Delphi IDE

ソースコードの記述

左上の「構造」ペインの[Form1]をクリックします。
左の「オブジェクト インスペクタ」ペインの[イベント]タブをクリックします。
左の「オブジェクト インスペクタ」ペインの[OnMouseDown]イベントの右側の何もないところをダブルクリックします。
Delphi IDE

以下ソースコードを記述します。
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  //マウスの左ボタンドラッグ時にForm1を移動させる
  if Button=TMouseButton.mbLeft then
  begin
    //マウスのキャプチャを解放する
    ReleaseCapture;
    SendMessage(self.Handle, WM_SYSCOMMAND, SC_MOVE or 2, MakeLong(X, Y));
  end;
end;

キーボードの「F12」キーを押す又は、下の「デザイン」タブをクリックして、フォームデザインに切り替えます。
Delphi IDE

左上の「構造」ペインの[Panel1]をクリックします。
左の「オブジェクト インスペクタ」ペインの[イベント]タブをクリックします。
左の「オブジェクト インスペクタ」ペインの[OnMouseDown]イベントの右側の何もないところをダブルクリックします。
Delphi IDE

以下ソースコードを記述します。
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  //マウスの左ボタンドラッグ時にPanel1を移動させる
  if Button=TMouseButton.mbLeft then
  begin
    //マウスのキャプチャを解放する
    ReleaseCapture;
    SendMessage(TPanel(Sender).handle,WM_SYSCOMMAND,SC_MOVE or 2,MakeLong(X,Y));
  end;
end;

実行する

実行ボタンを押すとコンパイルされ実行ファイルが生成して実行します。
Delphi IDE


Panel1をマウスの左ボタンでドラッグするとPanel1が移動します。
ウィンドウの何もないところをマウスの左ボタンでドラッグするとウィンドウが移動します。
Delphi IDE