Top / Programming / C++Builder / TDockTabSetの使い方

TDockTabSetの使い方

TDockTabSetの使い方を説明します。

基本的な使い方

  1. 新しいVCLフォームアプリケーションを作成します。

  2. Form1にTDockTabSetを配置します。

  3. DockTabSet1のAlignを「alTop」に設定します。

  4. タブに登録するためのフォームを2つ作成します。

  5. 作成したForm2とForm3のDragKindプロパティを「dkDock」にします。

  6. Form2とForm3のDragModeプロパティを「dmAutomatic」にします。

  7. Form1のOnShowイベントを記述します。

    #include "Unit2.h"
    #include "Unit3.h"
    
    
    void __fastcall TForm1::FormShow(TObject *Sender)
    {
      Form2->Show();
      Form3->Show();
    
    
      //ドッキングする
      Form2->ManualDock(DockTabSet1);
      Form3->ManualDock(DockTabSet1);
    
    
      //Form2を表示する
      DockTabSet1->ShowDockClient(Form2);
    }
    

以上で完了です。

実行すると、Form2とForm3の表示をTDockTabSetで切り替えることができます。

タブの向き

タブの表示する方向はTabPositionプロパティで設定します。

  1. DockTabSet1のAlignを「alLeft」に設定します。
  2. DockTabSet1のTabPositionを「tpLeft」に設定します。

ドラッグアンドドックと連携する

  1. Form1にTPanelを追加します。

  2. Panel1のAlignを「alLeft」にします。

  3. Panel1のDockSiteを「true」にします。

  4. DockTabSet1のDestinationDockSiteを「Panel1」にします。

Form2のタイトル部分にピンが表示されるようになりました。
ピンをクリックすると、Form2がPanel1にドッキングします。

フォームがないときは非表示にする

タブやパネルに表示するフォームがないときは、非表示にするようにします。

  1. Form1にTSplitterを配置します。

  2. Splitter1のAlignを「alLeft」にします。

  3. TMemoを配置します。

  4. Form1にMemo1のAlignを「alClient」にします。

パネルにドッキングしているフォームがなくなると、パネルを非表示にするようにします。

Panel1のOnUnDockイベントに次のコードを記述します。

void __fastcall TForm1::Panel1UnDock(TObject *Sender, TControl *Client, TWinControl *NewTarget,
          bool &Allow)
{
  //ドッキングしているフォームがなくなったら、パネルを非表示にする
  if (Panel1->DockClientCount == 1)
  {
    Panel1->Width = 0;
    Splitter1->Visible = false;
  }
}

パネルにフォームをドッキングするとき、パネルを表示するようにします。

Panel1のOnDockDropイベントに次のコードを記述します。

void __fastcall TForm1::Panel1DockDrop(TObject *Sender, TDragDockObject *Source, int X,
          int Y)
{
  //パネルが非表示の時は表示する
  if (Panel1->Width == 0)
  {
    Panel1->Width = 150;
  }
  Splitter1->Visible = true;
  Splitter1->Left = Panel1->Width;
}

タブがなくなったとき、DockTabSet1を非表示にするようにします。

DockTabSet1のOnTabRemovedイベントに次のコードを記述します。

void __fastcall TForm1::DockTabSet1TabRemoved(TObject *Sender)
{
  //タブがなくなったら非表示にする
  DockTabSet1->Visible = DockTabSet1->Tabs->Count > 0;
}

タブが追加されたとき、DockTabSet1を表示するようにします。

DockTabSet1のOnDockDropイベントに次のコードを記述します。

void __fastcall TForm1::DockTabSet1DockDrop(TObject *Sender, TDragDockObject *Source,
          int X, int Y)
{
  //タブを表示する
  DockTabSet1->Visible = true;
}




参考

参考にしたページです。

更新履歴