フォームの内部のドラッグでウィンドウを移動できるようにする - タイトルバーのないフォームを移動させる - Delphi

フォームを移動させる場合、フォームのタイトルバーをドラッグし移動させます。そのため、タイトルバーのないフォームではフォームを移動させることができません。ここでは、フォームの内部の表面をドラッグしても移動できるフォームを実装します。
フォームを作成し、フォームのOnMouseDownイベントに以下のコードを記述します。
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  SetCapture(Self.Handle);
  ReleaseCapture;//こいつが必要
  SendMessage(Form1.Handle,WM_SYSCOMMAND,SC_MOVE or 2,0);
end;
プログラムを実行し、フォームの内部をドラッグするとウィンドウの移動ができます。

Panelなどのウィンドウコントロールがフォームを覆っている場合

Panelなどのウィンドウコントロールがフォームを覆っている場合は、PanelコントロールのOnMouseDownイベントにコードを記述します。
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  SetCapture(Self.Handle);
  ReleaseCapture;//こいつが必要
  SendMessage(Form1.Handle,WM_SYSCOMMAND,SC_MOVE or 2,0);
end;

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-06
作成日: 2010-02-17
iPentec all rights reserverd.