基礎グリッドデータをソートした場合に、ソートされた列内で隣接する同じ値のセルをグループ化することによって、データを読みやすく表示できます。C1DisplayColumn オブジェクトのMerge プロパティは、このようなデータセルをグループ化して、単一の編集可能なセルを形成するかどうかを制御します。デフォルトでは、このプロパティの値は False で、列内の各物理行ごとにデータ値が表示されます(データ値がある場合)。
[会社名]フィールドを基準にしてソートされている次のグリッドを例に説明します。
実行時に 会社名 列でデータ依存型のセルマージを有効にすると、コンテンツに基づいてセルがグループ化されます。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Me.C1TrueDBGrid1.Splits(0).DisplayColumns("Country").Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.Free |
C# コードの書き方
C# |
コードのコピー
|
---|---|
this.c1TrueDBGrid1.Splits[0].DisplayColumns["Country"].Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.Free; |
この文を実行すると、次のように表示されます。現在のセルが [会社名]列内にある場合、マーキーは同じ値を持つすべての行にまたがりMarqueeStyle プロパティの設定に関係なく、外見は点線の四角形になります。ただし、他の列のマーキーの動作には影響しません。
設計時のレイアウトを指定する場合、C1DisplayColumnCollection エディタで目的の C1DisplayColumn オブジェクトの Merge プロパティを設定することによって、同様の効果を得ることができます。このプロパティには SplitCollection エディタで DisplayColumns プロパティの右の省略記号をクリックしてアクセスできます。
Merge プロパティは Free または Restricted に設定できます。Free に設定すると隣接する行の類似値がマージされ、Restricted に設定すると、前列でマージされている範囲内で、隣接する行の類似値がマージされます。Free および Restricted の設定の違いは、同じコンテンツ内のセルを常にマージするか(Free)、左に隣接するセルだけを結合するかです。次の例にこの違いを示します。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Me.C1TrueDBGrid1.Splits(0).DisplayColumns(0).Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.None Me.C1TrueDBGrid1.Splits(0).DisplayColumns(1).Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.None Me.C1TrueDBGrid1.Splits(0).DisplayColumns(2).Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.None Me.C1TrueDBGrid1.Splits(0).DisplayColumns(3).Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.None |
C# コードの書き方
C# |
コードのコピー
|
---|---|
this.c1TrueDBGrid1.Splits[0].DisplayColumns[0].Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.None; this.c1TrueDBGrid1.Splits[0].DisplayColumns[1].Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.None; this.c1TrueDBGrid1.Splits[0].DisplayColumns[2].Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.None; this.c1TrueDBGrid1.Splits[0].DisplayColumns[3].Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.None |
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
' フリーマージ Me.C1TrueDBGrid1.Splits(0).DisplayColumns(0).Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.Free Me.C1TrueDBGrid1.Splits(0).DisplayColumns(1).Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.Free Me.C1TrueDBGrid1.Splits(0).DisplayColumns(2).Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.Free Me.C1TrueDBGrid1.Splits(0).DisplayColumns(3).Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.Free ' すべての列の垂直方向の配置を Center に設定 Me.C1TrueDBGrid1.Splits(0).DisplayColumns(0).Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center Me.C1TrueDBGrid1.Splits(0).DisplayColumns(1).Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center Me.C1TrueDBGrid1.Splits(0).DisplayColumns(2).Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center Me.C1TrueDBGrid1.Splits(0).DisplayColumns(3).Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center |
C# コードの書き方
C# |
コードのコピー
|
---|---|
// フリーマージ this.c1TrueDBGrid1.Splits[0].DisplayColumns[0].Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.Free; this.c1TrueDBGrid1.Splits[0].DisplayColumns[1].Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.Free; this.c1TrueDBGrid1.Splits[0].DisplayColumns[2].Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.Free; this.c1TrueDBGrid1.Splits[0].DisplayColumns[3].Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.Free; // すべての列の垂直方向の配置を Center に設定 this.c1TrueDBGrid1.Splits[0].DisplayColumns[0].Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center; this.c1TrueDBGrid1.Splits[0].DisplayColumns[1].Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center; this.c1TrueDBGrid1.Splits[0].DisplayColumns[2].Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center; this.c1TrueDBGrid1.Splits[0].DisplayColumns[3].Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center; |
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
' 制限付きマージ Me.C1TrueDBGrid1.Splits(0).DisplayColumns(0).Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.Restricted Me.C1TrueDBGrid1.Splits(0).DisplayColumns(1).Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.Restricted Me.C1TrueDBGrid1.Splits(0).DisplayColumns(2).Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.Restricted Me.C1TrueDBGrid1.Splits(0).DisplayColumns(3).Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.None ' すべての列の垂直方向の配置を Center に設定 Me.C1TrueDBGrid1.Splits(0).DisplayColumns(0).Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center Me.C1TrueDBGrid1.Splits(0).DisplayColumns(1).Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center Me.C1TrueDBGrid1.Splits(0).DisplayColumns(2).Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center Me.C1TrueDBGrid1.Splits(0).DisplayColumns(3).Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center |
C#コードの書き方
C# |
コードのコピー
|
---|---|
// 制限付きマージ this.c1TrueDBGrid1.Splits[0].DisplayColumns[0].Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.Restricted; this.c1TrueDBGrid1.Splits[0].DisplayColumns[1].Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.Restricted; this.c1TrueDBGrid1.Splits[0].DisplayColumns[2].Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.Restricted; this.c1TrueDBGrid1.Splits[0].DisplayColumns[3].Merge = C1.Win.C1TrueDBGrid.ColumnMergeEnum.None; // すべての列の垂直方向の配置を Center に設定 this.c1TrueDBGrid1.Splits[0].DisplayColumns[0].Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center; this.c1TrueDBGrid1.Splits[0].DisplayColumns[1].Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center; this.c1TrueDBGrid1.Splits[0].DisplayColumns[2].Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center; this.c1TrueDBGrid1.Splits[0].DisplayColumns[3].Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center; |
列の Merge プロパティが Free または Restricted に設定されている場合は、すべての行に一意の値が含まれている場合でも、すべてのデータセルを編集できません。例外は、AddNew 行だけです。ただし、一度新しい行が基底のデータベースに追加されると、マージされた列内ではそのデータも編集できなくなります。
メモ: 結合されたセルに表示するものは、テキストに限定されません。 テキストから画像への変換を指定するで説明したように、ValueItems オブジェクトを挿入することによって、ビットマップを表示することもできます。画像をグリッドの要素に適用するの項では、Style オブジェクトを使ってセル内にグラフィックをより柔軟に表示する方法について説明しています。