THeaderControlを使ってみる

THeaderControlを使ってみました。

Win32カテゴリにあるTHeaderControlをフォームに配置します。

THeaderControlはAlignプロパティが初期値で「alTop」に設定されているため、フォームの上部に配置されました。

ヘッダーを追加するには、フォームに配置したHeaderControl1をダブルクリックするか、フォームまたは構造パネルのHeaderControl1を右クリックしてセクションの設定を選択するか、オブジェクトインスペクタからSctionsプロパティの[…]ボタンを押します。

コレクションエディタが表示されます。

新規追加ボタンを押して項目を追加します。

追加したTHeaderSectionのTextプロパティを編集して、ヘッダーのキャプションを設定します。

ヘッダーの幅はWidthプロパティで設定します。

MaxWidthプロパティとMinWidthプロパティで最大幅と最小幅を設定できます。

THeaderControlのNoSizingプロパティをtrueにすると、ヘッダーの幅が変更できなくなります。

特定のヘッダーだけ幅を変更できないようにするには、THeaderSectionのFixedWidthプロパティをtrueにします。

ヘッダーの幅が変更されると、THeaderControlのOnSectionResizeイベントが発生します。

TListBoxコンポーネントを3つ配置して、AlignプロパティをalLeftにします。

THeaderControlのOnSectionResizeイベントを編集して、ヘッダーの幅が変更されるとListBoxも同じ幅に変更するようにします。

void __fastcall TForm1::HeaderControl1SectionResize(THeaderControl *HeaderControl,
          THeaderSection *Section)
{
  ListBox1->Width = HeaderControl1->Sections->Items[0]->Width;
  ListBox2->Width = HeaderControl1->Sections->Items[1]->Width;
  ListBox3->Width = HeaderControl1->Sections->Items[2]->Width;
}

ヘッダーの境界線がドラッグされるとOnSectionTrackイベントが発生します。

void __fastcall TForm1::HeaderControl1SectionTrack(THeaderControl *HeaderControl,
          THeaderSection *Section, int Width, TSectionTrackState State)

{
  switch (State) {
    case tsTrackBegin: //境界がまだドラッグされていません
      Caption = Section->Text + " Begin";
      break;
    case tsTrackMove: //境界がドラッグされている途中です
      Caption = Section->Text + " Move";
      break;
    case tsTrackEnd: //境界のドラッグが終了しています
      Caption = Section->Text + " End";
      break;
  }
}

ヘッダーにチェックボックスをつけるには、THeaderControlのCheckBoxesプロパティをtrueにします。

チェックボックスをつけるTHeaderSectionのCheckBoxプロパティをtrueにします。

ヘッダーにチェックボックスがつきました。

THeaderSectionのCheckedプロパティでチェック状態を設定できます。

チェックボックスの状態が変化すると、THeaderControlのOnSectionCheckイベントが発生します。

void __fastcall TForm1::HeaderControl1SectionCheck(TCustomHeaderControl *HeaderControl,
          THeaderSection *Section)
{
  if (Section->Checked)
    ShowMessage(Section->Text + " checked");
  else
    ShowMessage(Section->Text + " unchecked");
}

THeaderControlコントロールのDragReorderプロパティをtrueにすると、ヘッダーをドラッグして再配列できます。

ヘッダーをドラッグするとTHeaderControlのOnSectionDragイベントが発生します。
引数のAllowDrag変数をfalseにすると再配列されません。

ドラッグ中の描画に関する設定には、THeaderControlのFullDragプロパティやHotTrackプロパティがあります。

THeaderControlのOverFlowプロパティをtrueにすると、非表示のヘッダーの表示を可能にするオーバーフローボタンが表示されます。

OverFlowプロパティがfalseのとき

OverFlowプロパティがtrueのとき

g

TImageListコンポーネントの画像をヘッダーに表示することができます。

ImagesプロパティにTImageListコンポーネントを設定します。

THeaderSectionのImageIndexプロパティから画像を選択します。

ヘッダーに画像が追加されました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください