今回は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;
<実行時イメージ>
![](https://i0.wp.com/www.migaro.co.jp/tips/wp-content/uploads/2024/09/scene01.png?resize=626%2C473&ssl=1)
![](https://i0.wp.com/www.migaro.co.jp/tips/wp-content/uploads/2024/09/scene02.png?resize=791%2C652&ssl=1)
![](https://i0.wp.com/www.migaro.co.jp/tips/wp-content/uploads/2024/09/scene03.png?resize=626%2C473&ssl=1)
![](https://i0.wp.com/www.migaro.co.jp/tips/wp-content/uploads/2024/09/scene04.png?resize=626%2C473&ssl=1)
![](https://i0.wp.com/www.migaro.co.jp/tips/wp-content/uploads/2024/09/scene05.png?resize=626%2C473&ssl=1)
②:Panel1をドラッグで画面外に移動(フローティング)できる
③:再び画面内にドラッグ&ドロップするとドッキングする
④:再度フローティングさせて×ボタンで閉じた状態
⑤:フォームをクリックすると再表示
<関連記事>