PowerTools SPREAD for Windows Forms 10.0J > 開発者ガイド > セル > セルの自動マージ |
SPREADでは、内容が同じとみなされる複数列または複数行のセルが自動的にマージされるように設定できます。これにより、コントロールでは、同じ内容を持つセルが自動的に統合されます。この機能は、データベースと連結する場合などに便利です。下図では、同一のデータを持つセルどうしがマージされています。
セル結合と異なり、マージは自動的に実行される機能です。 コントロールに対し、セルの自動マージを行う行と列を指定すると、この行および列内で同じ内容を持つすべてのセルが自動的に統合されます。
シートのスクロールにより、マージされたセルの一部が画面上に表示されなくなったときにも、データの表示位置を維持するように設定できます。「データの配置」を参照してください。
結合セルについては、「セルの結合」を参照してください。
マージの処理方法は、MergePolicy列挙体を使用して設定します。
MergePolicy列挙体の値 | 説明 |
---|---|
Always | 常にマージ。行または列内のセルは、同じ値を持つ場合に常にマージされます。 |
None | マージしない。行または列内のセルはマージされません。 |
Restricted | 制限付きでマージ。行または列内のセルは、同じ値を持ち、しかも直前の行または列のセルも同じ値を持つ場合に限りマージされます。 |
たとえば、セル A1:A8 の値が {a; a; b; b; b; b; c; c} であり、セル B1:B8 の値が {1; 1; 1; 1; 2; 2; 2; 2} であるとします。 列 B のマージ ポリシーが「Always」の場合、列 B 内のセルは、B1:B4、B5:B8 の2つのブロックにマージされます。 しかし、列 B のマージ ポリシーが「Restricted」の場合は、列 B 内のセルは B1:B2、B3:B4、B5:B6、B7:B8 の4つのブロックにマージされます。
指定の行または列内のセルが自動マージされるように設定することも、左隣(列)のセルまたは上隣(行)のセルがマージされたときにだけセルがマージされるように設定することもできます。通常、隣接する複数の行または列に対してマージポリシーを設定する場合は、最初の行または列には「Always」を、残りの行または列には「Restricted」を設定します。
マージされたセルには、マージ範囲内の左上のセルのプロパティが適用されます。 たとえば、左上のマージ セルの背景色が青であれば、このセルとマージされた全セルには同じ背景色が表示されます。
マージされた各セルのデータは失われるのではなく、マージによって非表示になるだけです。マージを解除すると、マージされていた個々のセルのデータが再表示されます。別のセルとマージされているセルも、編集が可能です。セルをダブルクリックして編集モードに切り替えると、このセルのデータが表示され、編集できる状態になります。編集モードを終了したとき、このセルの内容が、それまでマージされていた他のセルの内容と同じでなくなれば、このセルはマージ表示されません。
セル型が違っても、内容が同じセルであればマージされます。たとえば、「01/31/02」という内容の日付時刻型セルがあり、隣接するテキスト型セルが同じ内容であるとします。これらのセルが含まれる列でマージを有効にすると、これらのセルはマージされます。セルのデータが変更されたり、マージが解除された後は、各セルはそれぞれのデータ型とデータを維持します。
SheetViewクラスのSetColumnMergeメソッドで列内のセルのマージを、SetRowMergeメソッドで行内のセルのマージを設定します。
次のサンプル コードは、すべての行および列に対し、行と列のマージ ポリシーを設定します。
C# |
コードのコピー
|
---|---|
fpSpread1.Sheets[0].SetRowMerge(-1, FarPoint.Win.Spread.Model.MergePolicy.Always); fpSpread1.Sheets[0].SetColumnMerge(-1, FarPoint.Win.Spread.Model.MergePolicy.Always); |
Visual Basic |
コードのコピー
|
---|---|
FpSpread1.Sheets(0).SetRowMerge(-1, FarPoint.Win.Spread.Model.MergePolicy.Always) FpSpread1.Sheets(0).SetColumnMerge(-1, FarPoint.Win.Spread.Model.MergePolicy.Always) |