DockTabSet の利用 - Delphi 2006

DockTabSetもバグが取れたのか、だいぶ良くなったらしいので、いろいろ試してみました。今回、1行もコードを書かずに、ドックイン/アウトまで完全に対応できる方法があるようですので、その方法で試してみたいと思います。

まず、メインフォームを作成します、下の図のとおりに作成してください。Panel1 のAlignを alRight に、Panel2のAlignをalClientに、Panel3のAlignをAlTopにします。DockTabSetはPanel2上に貼り付け、AlignをAlBottomにします。また、ボタンを一つ貼り付けます。


次に、子フォームを作成します。フォームを追加します。ボタン等を適当に並べます。また概観もそれらしくなるよう、BorderStyleをSizeToolWinあたりにしてみました。


子フォームのプロパティは下図のとおりです。DragKindをdkDockにDragModeをdmAutiomaticに設定します。


次に、メインフォームの側に戻り、各プロパティを設定します。まず、DockTabSetのプロパティをセットします。DestinationDockSiteをPanel1にセットします。


続いて、Panel2です。ここは、デフォルトのままです。


Panel1です。DockSiteプロパティをTrueにセットします。


最後に、Button1のイベントを実装します。子フォームを表示するコードのみです。


以上で、すべて完成しました。これで正しくドッキングできます。アプリケーションを起動します。Button1をクリックすると子フォームが表示されます。


この、子フォームをドラッグしてDockTabSetのところへ持っていくと、ドッキング枠が表示されます(下図参照)。


ドラッグを確定すると、子フォームがDockTabSet内部に格納されました。


Form3と書いてあるTabをクリックすると、子フォームの内容がタブのページに展開された形で表示されます。


ここで、Tabの見出しの部分(灰色グラデーションしている部分)右側のピンのアイコンをクリックすると、Panel1側に収納されます。もう一度ピンをクリックするとTab側に戻ります。


もう一度、タブをクリックし、ページを表示させた状態で、Tabの見出しの部分(灰色グラデーションしている部分)をウィンドウの外までドラッグすると、子フォームが分離できます。(下図参照)


コードを一行も(実際には1行書きましたが)書かずに、ドックイン/アウト対応可能なフォーム+タブが作成できました。プロパティの設定が若干手間取りますが、コーディングなしで完成度の高いドッキングが利用できます。ちなみに、このプログラムでは、DockTabSetにおいて、何も選択されていない状態から、タブのページを展開する際にページ展開のアニメーションの直後にちらつく現象が見受けられる以外には、ほとんどバグらしいバグはありませんでした。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2006-01-01
iPentec all rights reserverd.