テーブルの強力な機能の1つに、要素のグループ化があります。グループ化を使用すると、テーブルの複数の要素にまとめてアクセスできます。たとえば、それが1つの要素であるかのようにグループにスタイルを設定できます。列のグループ化、行のグループ化、およびセルのグループ化がサポートされています。
行のグループにアクセスするには、RowGroups コレクション (TableVectorGroupCollection 型).を使用します。そのコレクションの要素はTableVectorGroup型で、この型にいくつかの便利なプロパティが定義されています。このプロパティの中でも注目されるプロパティは、ColumnHeaderです。このプロパティを使用すると、行のグループをテーブルヘッダーに指定して、それをページまたはページ列ごとに先頭に繰り返し表示できます。関連するプロパティはColumnFooterです。これを使用すると、行のグループをテーブルフッターに指定して、それをページまたはページ列ごとに末尾に繰り返し表示できます。
次のコードは、テーブルの最初の2行をテーブルヘッダーに指定して、それをページ区切りまたは列区切りの後に繰り返し表示する方法を示します(rt1 は RenderTable オブジェクト)。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
rt1.RowGroups(0, 2).Header = C1.C1Preview.TableHeaderEnum.Page |
C# コードの書き方
C# |
コードのコピー
|
---|---|
rt1.RowGroups[0, 2].Header = C1.C1Preview.TableHeaderEnum.Page; |
上に示したように、TableVectorGroupCollection クラスのインデクサは2つの整数を受け取ります。最初の値は、グループに含まれる最初の行のインデックスです(上のサンプルでは0)。2番目の値は、グループ内の行数です(上のサンプルでは2)。
列のグループにアクセスするには、ColGroups コレクションを使用する必要があります。これは、行グループのコレクション(TableVectorGroupCollection)と同じ型で、同じ機能を提供します。特に注目される点は、列のグループを垂直方向のテーブルヘッダーまたはテーブルフッターに指定する機能です。C1PrintDocument は「水平方向」(または「拡張」)ページをサポートします。これを使用すると、広いオブジェクトを水平方向の複数のページにまたがって表示できます。オブジェクト(テーブルなど)を水平方向の複数のページにまたがって表示するには、SplitHorzBehavior を true に設定します。オブジェクトの幅がページ幅より広い場合は、複数の水平方向ページに分割されます。特に、この方法で広いテーブルを分割することができます。列のグループを各ページの左端に沿って繰り返し表示するには、グループの ColumnHeader プロパティを true に設定します。列のグループを各ページの右端に沿って繰り返し表示するには、グループの ColumnFooter プロパティを true に設定します
メモ:テーブルの任意の行(または列)のグループをフッターに割り当てることができますが、通常は、テーブルの最後の何行(または列)かをフッターグループに入れます。これで、フッターが通常のフッターとして動作するようになります。つまり、フッターは各ページの下部(または右端)にだけ表示され、さらにテーブルの最後にも表示されます。たとえば、テーブルの最初の行をフッターに指定すると、テーブルの先頭にも表示され、テーブルの最後には表示されなくなります。
次のコード例では、100 行 10 列のテーブルを作成し、テーブルの幅を自動に設定します。さらに、各列の幅を明示的に1インチに設定し、水平方向および垂直方向のテーブルヘッダーとテーブルフッターも割り当てます。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
'テーブルを作成し、内容を挿入します Dim rt1 As C1.C1Preview.RenderTable = New C1.C1Preview.RenderTable() Dim row As Integer = 0 Dim col As Integer Do While (row < 100) col = 0 Do While (col < 6) rt1.Cells(row, col).Text = String.Format("Text in cell({0}, {1})", row, col) col += 1 Loop row += 1 Loop ' テーブルと列の幅を設定します rt1.Width = C1.C1Preview.Unit.Auto col = 0 Do While (col < 6) rt1.Cols(col).Width = "1in" col += 1 Loop ' 最初の2行をヘッダーとして割り当てます。背景を設定します rt1.RowGroups(0, 2).PageHeader = True rt1.RowGroups(0, 2).Style.BackColor = Color.Red '最後の2行をフッターとして割り当てます。背景を設定します rt1.RowGroups(98, 2).PageFooter = True rt1.RowGroups(98, 2).Style.BackColor = Color.Blue '最初の列をヘッダーとして割り当てます rt1.ColGroups(0, 1).PageHeader = True rt1.ColGroups(0, 1).Style.BackColor = Color.BlueViolet ' 最後の列をフッターとして割り当てます rt1.ColGroups(5, 1).PageFooter = True rt1.ColGroups(5, 1).Style.BackColor = Color.BurlyWood |
C# コードの書き方
C# |
コードのコピー
|
---|---|
// テーブルを作成し、内容を挿入します RenderTable rt1 = new RenderTable(); for (int row = 0; row < 100; ++row) { for (int col = 0; col < 6; ++col) { rt1.Cells[row, col].Text = string.Format("Text in cell({0}, {1})", row, col); } } // テーブルと列の幅を設定します rt1.Width = Unit.Auto; for (int col = 0; col < 6; ++col) { rt1.Cols[col].Width = "1in"; } //最初の2行をヘッダーとして割り当てます。背景を設定します rt1.RowGroups[0, 2].PageHeader = true; rt1.RowGroups[0, 2].Style.BackColor = Color.Red; // 最後の2行をフッターとして割り当てます。背景を設定します rt1.RowGroups[98, 2].PageFooter = true; rt1.RowGroups[98, 2]. Style.BackColor = Color.Blue; //最初の列をヘッダーとして割り当てます rt1.ColGroups[0, 1].PageHeader = true; rt1.ColGroups[0, 1].Style.BackColor = Color.BlueViolet; // 最後の列をフッターとして割り当てます rt1.ColGroups[5, 1].PageFooter = true; rt1.ColGroups[5, 1].Style.BackColor = Color.BurlyWood; |
このサンプルでは、背景色を使って行グループと列グループを強調表示しています。