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プロパティから画像を選択します。
ヘッダーに画像が追加されました。