今回はDelphiでパネルなどを分離できる機能「フローティング」について、簡単な実現方法を紹介します。
- Delphiを起動し、アプリケーションの新規作成を行います。
 - フォームにTPanelコンポーネントを配置します。
(ここではこのPanelをフローティングさせます。Button等、他のコンポーネントでも可能です。) - フォームのDockSiteプロパティをTrueにします。
 - PanelのDragKindプロパティをdkDockに、DragModeプロパティをdmAutomaticに設定します。
 
以上で完成です。実行して動作を確認してみてください。
ただ、このままですとフローティングしたPanelの終了(右上の×)ボタンを押すと
Panelが消えたままになってしまいますので、
フォームのClickイベントで消えてしまったPanelを再表示する例をつけておきます。
procedure TForm1.FormClick(Sender: TObject);
var
  R: TRect;
begin
  if not Panel1.Visible then
  begin
    R.Top    := Form1.Top;
    R.Left   := Form1.Left;
    R.Bottom := R.Top + Panel1.Height;
    R.Right  := R.Left + Panel1.Width;
    Panel1.ManualFloat(R);
  end;
end;
<実行時イメージ>





②:Panel1をドラッグで画面外に移動(フローティング)できる
③:再び画面内にドラッグ&ドロップするとドッキングする
④:再度フローティングさせて×ボタンで閉じた状態
⑤:フォームをクリックすると再表示
<関連記事>