FlexGrid for WinForms
ヘッダーとフッター
> ヘッダーとフッター

列ヘッダーとは、グリッドの上部に固定される行で、キャプション文字列、ソートグリフなどが表示されます。

FlexGrid では、デフォルトで、インデックスがゼロの上端の行が列ヘッダーに割り当てられます。ただし、他の行も固定されるように指定して、ヘッダーを広げることができます。 複数の行を固定に設定するには、RowCollection クラスの Fixed プロパティに 1 より大きい整数を設定する必要があります。

列ヘッダー

ヘッダーテキストの設定

連結モードの場合、FlexGrid は、データソースからフィールド名を読み取って、列ヘッダーテキストとしてレンダリングします。 ただし、Row クラスの Caption プロパティを明示的に設定して、データソースのフィールド名文字列を上書きできます。非連結グリッドの場合も、Caption プロパティでヘッダーテキストを指定します。このプロパティは、インデックスがゼロのデフォルトのヘッダー行のセルに値を設定します。他の固定行のセルに値を設定するには、FlexGrid の通常の値の割り当て方法を使用する必要があります。セル値の設定方法の詳細については、「セルに値を設定」を参照してください。

WinForms FlexGrid で以下のコードを使用して、ヘッダー行を指定し、ヘッダーテキストを設定します。

// 2つの行を列ヘッダー行として設定します
c1FlexGrid1.Rows.Fixed = 2;
                                        
// 最初の列のヘッダーとサブヘッダーを設定します
c1FlexGrid1.Cols[1].Caption = "Column Header 1";
c1FlexGrid1[1, 1] = "Column Sub-header 1";     
' 2つの行を列ヘッダー行として設定します
c1FlexGrid1.Rows.Fixed = 2

' 最初の列のヘッダとサブヘッダーを設定します
c1FlexGrid1.Cols(1).Caption = "Column Header 1"
c1FlexGrid1(1, 1) = "Column Sub-header 1"       

列ヘッダーの結合

FlexGrid には、特定の行(この場合はヘッダー行)のセルが結合可能かを指定する Row オブジェクトの AllowMerging プロパティがあります。ヘッダー行の結合を許可したら、C1FlexGrid クラスの AllowMerging プロパティまたは AllowMergingFixed プロパティに FixedOnly を設定します。FlexGrid コントロールにはこの 2 つのプロパティがあるため、結合に関連する複数のロジックをより柔軟に実装できます。セルの結合の詳細については、「結合」を参照してください。

以下のコードを使用して、WinForms FlexGrid の列ヘッダーを結合します。

// ヘッダ行でのマージを許可します
c1FlexGrid1.Rows[0].AllowMerging = true;

// グリッドのAllowMergingまたはAllowMergingFixedプロパティを設定して、固定行のみを結合します
// c1FlexGrid1.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.FixedOnly;
c1FlexGrid1.AllowMergingFixed = C1.Win.C1FlexGrid.AllowMergingEnum.FixedOnly;                        
' ヘッダ行でのマージを許可します
c1FlexGrid1.Rows(0).AllowMerging = True

' グリッドのAllowMergingまたはAllowMergingFixedプロパティを設定して、固定行のみを結合します
' c1FlexGrid1.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.FixedOnly
c1FlexGrid1.AllowMergingFixed = C1.Win.C1FlexGrid.AllowMergingEnum.FixedOnly

列ヘッダーテキストの折り返し

列ヘッダーのテキストを折り返すには、CellStyleCollection クラスのCellStyle 項目 "Fixed" にアクセスし、その WordWrap プロパティに true を設定します。 折り返したテキストを正しく表示するには、行の高さを調整するか、AutoSizeRow() メソッドを呼び出してテキストの長さに基づいて自動的に行のサイズを変更する必要があります。 

以下のコードを使用して、WinForms FlexGrid の列ヘッダーテキストを折り返します。

//列のキャプションを設定します
c1FlexGrid1.Cols[3].Caption = "Large Text for Column Header Text Wrapping";

//行の高さを設定します
c1FlexGrid1.Rows[0].Height = 50;

//固定の行と列のワードラップを設定します
c1FlexGrid1.Styles["Fixed"].WordWrap = true;                 
'列のキャプションを設定します
c1FlexGrid1.Cols(3).Caption = "Large Text for Column Header Text Wrapping"

'行の高さを設定します
c1FlexGrid1.Rows(0).Height = 50

'固定の行と列のワードラップを設定します
c1FlexGrid1.Styles("Fixed").WordWrap = True

列ヘッダーのスタイル設定

列ヘッダーのスタイルを設定するには、CellStyleCollection クラスの CellStyle 項目 "Fixed" にアクセスし、FontForeColorTextEffect などのさまざまなスタイル設定に関連するプロパティを設定します。

以下のコードを使用して、WinForms FlexGrid の列ヘッダーをカスタマイズします。

//ヘッダーテキストのフォントを設定します
c1FlexGrid1.Styles["Fixed"].Font = new Font("Tahoma", 10, FontStyle.Bold);
 
//ヘッダーテキストの前色を設定します
c1FlexGrid1.Styles["Fixed"].ForeColor = Color.Aqua;
 
//ヘッダーテキストの背景色を設定します
c1FlexGrid1.Styles["Fixed"].BackColor = Color.Blue;

//ヘッダーテキストにテキスト効果を適用します
c1FlexGrid1.Styles["Fixed"].TextEffect = C1.Win.C1FlexGrid.TextEffectEnum.Raised;
' ヘッダテキストのフォントを設定します
c1FlexGrid1.Styles("Fixed").Font = New Font("Tahoma", 10, FontStyle.Bold)

' ヘッダテキストの前色を設定します
c1FlexGrid1.Styles("Fixed").ForeColor = Color.Aqua

' ヘッダーテキストの背景色を設定します
c1FlexGrid1.Styles("Fixed").BackColor = Color.Blue

' ヘッダテキストにテキスト効果を適用します
c1FlexGrid1.Styles("Fixed").TextEffect = C1.Win.C1FlexGrid.TextEffectEnum.Raised 

列フッターの設定

列フッターはグリッドの最後の行で、列全体に関する追加的な情報が表示されます。 列フッターの最も一般的な使用方法は、列データの概要を表示することです。

FlexGrid では、C1FlexGrid クラスの Footers プロパティを使用して列フッターを作成できます。FlexGrid では、Footers クラスの Fixed プロパティを使用して、行と一緒にフッターをスクロールするか、それともグリッドの下部に固定するかを選択します。 このクラスには Descriptions プロパティもあり、ここから FooterDescription コレクションにアクセスして、キャプションなどの追加情報を設定します。さまざまな集計関数を通して列フッターに集計結果を表示するには、FooterDescription クラスの Aggregates プロパティを使用して、AggregateDefinition コレクションにアクセスする必要があります。集計関数は、AggregateEnum 列挙の値を受け取る Aggregate プロパティを使用して指定できます。

以下のコードは、WinForms FlexGrid に列フッターを追加する方法を示します。

 // 列にフッタを追加します
c1FlexGrid1.Footers.Descriptions.Add(new C1.Win.C1FlexGrid.FooterDescription() { Caption = "Total" });
                                        
// フッタに集計を適用します
c1FlexGrid1.Footers.Descriptions[0].Aggregates.Add(new C1.Win.C1FlexGrid.AggregateDefinition()
{ Column = 4, Aggregate = C1.Win.C1FlexGrid.AggregateEnum.Sum });
' 列にフッタを追加します
c1FlexGrid1.Footers.Descriptions.Add(New C1.Win.C1FlexGrid.FooterDescription() With {
            .Caption = "Total"
        })

' フッタに集計を適用します
c1FlexGrid1.Footers.Descriptions(0).Aggregates.Add(New C1.Win.C1FlexGrid.AggregateDefinition() With {
            .Column = 4,
            .Aggregate = C1.Win.C1FlexGrid.AggregateEnum.Sum
        })          
関連トピック