DockTabSet の利用

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

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

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

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

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

続いて、Panel2です。ここは、デフォルトのままです。
DockTabSet の利用:画像5

Panel1です。DockSiteプロパティをTrueにセットします。
DockTabSet の利用:画像6

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

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

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

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

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

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

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

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

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