GcCharMaskCellのマス目の設定方法について解説します。
セルに表示されるマス目は、CharBoxesプロパティが参照するCharBoxCollectionオブジェクトによって定義されます。CharBoxCollectionオブジェクトは、1つ1つのマス目を表すCharBoxオブジェクトの集合を保持するコレクションです。つまり、キャラクタボックスコントロールでは、オブジェクトに保持されるCharBoxオブジェクトをマス目の1つ1つとして表示します。
マス目を表すCharBoxオブジェクトは、次の3つの種類のオブジェクトを持つことができます。
InputBoxは、入力用の枠で1つのInputBoxに対して1文字入力することができます。LiteralBoxは、任意の文字をリテラル文字として表示します。SeparatorBoxは、入力枠を区切るハイフンを表示します。
GcCharMaskCellにマス目を設定するには、CharBoxesプロパティが参照するCharBoxCollectionオブジェクトのAddメソッドを使用します。また、設定されているマス目をすべて削除するには、Clearメソッドを使用します。
次のサンプルコードは、郵便番号用の入力書式を例としたCharBoxを追加する例です。尚、マス目間のスペースや境界線、マス目のサイズ等の設定も行っています。これらの外観の設定に関する詳細は「外観の設定」を参照してください。
Imports GrapeCity.Win.MultiRow Imports InputManCell = GrapeCity.Win.MultiRow.InputMan Dim GcCharMaskCell1 = New InputManCell.GcCharMaskCell() GcCharMaskCell1.Size = New Size(200, 28) ' マス目間のスペースを設定します。 GcCharMaskCell1.CharBoxSpacing = 2 ' 既定値のマス目の設定をクリアします。 GcCharMaskCell1.CharBoxes.Clear() ' 入力枠用の境界線を定義します。 Dim borderSingle As New InputManCell.CharBoxBorder(New InputManCell.Line(GrapeCity.Win.Editors.LineStyle.Single, Color.Black)) ' リテラル文字とハイフン用の境界線を定義します。 Dim borderNone As New InputManCell.CharBoxBorder(New InputManCell.Line(GrapeCity.Win.Editors.LineStyle.None, Color.White)) ' リテラル文字を作成します。 Dim aLiteralBox As New InputManCell.LiteralBox() aLiteralBox.Size = New System.Drawing.Size(14, 24) aLiteralBox.Text = "〒" aLiteralBox.Border = borderNone ' 郵便番号の前の3桁用の枠を作成します。 Dim aInputBoxl As New InputManCell.InputBox aInputBoxl.Size = New System.Drawing.Size(18, 24) aInputBoxl.Border = borderSingle ' ハイフンを作成します。 Dim aSeparatorBox As New InputManCell.SeparatorBox() aSeparatorBox.Size = New System.Drawing.Size(10, 24) aSeparatorBox.Border = borderNone ' 郵便番号の後の4桁用の枠を作成します。 Dim aInputBoxs As New InputManCell.InputBox aInputBoxs.Size = New System.Drawing.Size(16, 20) aInputBoxs.Border = borderSingle ' セルに作成したマス目を追加します。 GcCharMaskCell1.CharBoxes.Add(aLiteralBox) GcCharMaskCell1.CharBoxes.Add(DirectCast(aInputBoxl.Clone, InputManCell.CharBox)) GcCharMaskCell1.CharBoxes.Add(DirectCast(aInputBoxl.Clone, InputManCell.CharBox)) GcCharMaskCell1.CharBoxes.Add(DirectCast(aInputBoxl.Clone, InputManCell.CharBox)) GcCharMaskCell1.CharBoxes.Add(aSeparatorBox) GcCharMaskCell1.CharBoxes.Add(DirectCast(aInputBoxs.Clone, InputManCell.CharBox)) GcCharMaskCell1.CharBoxes.Add(DirectCast(aInputBoxs.Clone, InputManCell.CharBox)) GcCharMaskCell1.CharBoxes.Add(DirectCast(aInputBoxs.Clone, InputManCell.CharBox)) GcCharMaskCell1.CharBoxes.Add(DirectCast(aInputBoxs.Clone, InputManCell.CharBox)) ' 設定したマス目のサイズを有効にするために ' AutoSizeプロパティをFalseに設定します。 For Each aCharBox As InputManCell.CharBox In GcCharMaskCell1.CharBoxes aCharBox.AutoSize = False Next ' MultiRowのテンプレートを設定します。 GcMultiRow1.Template = Template.CreateGridTemplate(New Cell() {GcCharMaskCell1}) GcMultiRow1.RowCount = 5
using GrapeCity.Win.MultiRow; using InputManCell = GrapeCity.Win.MultiRow.InputMan; InputManCell.GcCharMaskCell gcCharMaskCell1 = new InputManCell.GcCharMaskCell(); gcCharMaskCell1.Size = new Size(200, 28); // マス目間のスペースを設定します。 gcCharMaskCell1.CharBoxSpacing = 2; // 既定値のマス目の設定をクリアします。 gcCharMaskCell1.CharBoxes.Clear(); // 入力枠用の境界線を定義します。 InputManCell.CharBoxBorder borderSingle = new InputManCell.CharBoxBorder(new InputManCell.Line(GrapeCity.Win.Editors.LineStyle.Single, Color.Black)); // リテラル文字とハイフン用の境界線を定義します。 InputManCell.CharBoxBorder borderNone = new InputManCell.CharBoxBorder(new InputManCell.Line(GrapeCity.Win.Editors.LineStyle.None, Color.White)); // リテラル文字を作成します。 InputManCell.LiteralBox aLiteralBox = new InputManCell.LiteralBox(); aLiteralBox.Size = new System.Drawing.Size(14, 24); aLiteralBox.Text = "〒"; aLiteralBox.Border = borderNone; // 郵便番号の前の3桁用の枠を作成します。 InputManCell.InputBox aInputBoxl = new InputManCell.InputBox(); aInputBoxl.Size = new System.Drawing.Size(18, 24); aInputBoxl.Border = borderSingle; // ハイフンを作成します。 InputManCell.SeparatorBox aSeparatorBox = new InputManCell.SeparatorBox(); aSeparatorBox.Size = new System.Drawing.Size(10, 24); aSeparatorBox.Border = borderNone; // 郵便番号の後の4桁用の枠を作成します。 InputManCell.InputBox aInputBoxs = new InputManCell.InputBox(); aInputBoxs.Size = new System.Drawing.Size(16, 20); aInputBoxs.Border = borderSingle; // コントロールに作成したマス目を追加します。 gcCharMaskCell1.CharBoxes.Add(aLiteralBox); gcCharMaskCell1.CharBoxes.Add((InputManCell.CharBox)aInputBoxl.Clone()); gcCharMaskCell1.CharBoxes.Add((InputManCell.CharBox)aInputBoxl.Clone()); gcCharMaskCell1.CharBoxes.Add((InputManCell.CharBox)aInputBoxl.Clone()); gcCharMaskCell1.CharBoxes.Add(aSeparatorBox); gcCharMaskCell1.CharBoxes.Add((InputManCell.CharBox)aInputBoxs.Clone()); gcCharMaskCell1.CharBoxes.Add((InputManCell.CharBox)aInputBoxs.Clone()); gcCharMaskCell1.CharBoxes.Add((InputManCell.CharBox)aInputBoxs.Clone()); gcCharMaskCell1.CharBoxes.Add((InputManCell.CharBox)aInputBoxs.Clone()); // 設定したマス目のサイズを有効にするために // AutoSizeプロパティをFalseに設定します。 foreach (InputManCell.CharBox aCharBox in gcCharMaskCell1.CharBoxes) { aCharBox.AutoSize = false; } gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { gcCharMaskCell1 }); gcMultiRow1.RowCount = 5;
(図) 上記サンプルコードを適用したGcCharMaskCell
デザイン画面では「キャラクタボックスの編集」エディタから容易な設定が可能です。 このエディタは次のいずれかの方法で起動でき、マス目の詳細を設定できます。