GcNumberCellの主要機能である書式フィールドの設定とその活用方法について解説します。
GcNumberCellの書式を設定するには、入力用と表示用の2つがあり、それぞれ入力フィールドと表示フィールドを使って書式を設定します。
入力フィールドを設定するには、Fieldsプロパティが参照するNumberFieldsを使用します。NumberFieldsは、コントロール内の各フィールドを表すNumberFieldのコレクションを保持するクラスです。
一般的に数値の整数値、小数点、小数値は配置の順番が決まっているため、入力書式を設定するNumberFieldsコレクションではコレクションのアイテムを追加または削除できません。
一方、表示フィールドを設定するには、DisyplayFieldsプロパティが参照するNumberDisplayFieldCollectionを使用します。NumberDisplayFieldCollectionは、コントロール内の各フィールドを表すNumberDisplayFieldのコレクションを保持するクラスです。
GcNumberCellの書式を設定するには、それぞれのコレクションのAddメソッドもしくはAddRangeメソッドを使用して直接フィールドオブジェクトを追加する方法と、AddRangeメソッドのオーバーライドの1つを使用して、キーワード文字列によりフィールドを自動生成する方法があります。それぞれの方法による書式の設定方法については、以下のトピックを参照してください。
GcNumberCellでは、接頭語および接尾語をリテラル文字として表示できます。接頭語/接尾語は入力用および表示用の2つがあり、それぞれNumberSignField、NumberSignDisplayField(接頭語/接尾語フィールド)で定義します。
頭語/接尾語は正数と負数のぞれぞれを設定できます。
GcNumberCell.DisplayFieldsプロパティまたはGcNumberEditingControl.DisplayFieldsプロパティのコレクションを通して特定のフィールドにアクセスできます。
GcNumberCellの表示フィールドコレクション内の特定のフィールドにアクセスする場合、次のいずれかの方法を使うことができます。
コレクションのインデックスがわかっている場合は、インデックスを使ってフィールドを取得することができます。
次のサンプルはインデックスを使ってフィールドを取得する例です。ここではGcNumberCellの3番目のフィールドを取得する例です。
Dim cell As GrapeCity.Win.MultiRow.InputMan.GcNumberCell = DirectCast(GcMultiRow1.Rows(0).Cells(0), GrapeCity.Win.MultiRow.InputMan.GcNumberCell) Dim myField As GrapeCity.Win.MultiRow.InputMan.NumberDisplayField = cell.DisplayFields(2)
GrapeCity.Win.MultiRow.InputMan.GcNumberCell cell = (gcMultiRow1.Rows[0].Cells[0] as GrapeCity.Win.MultiRow.InputMan.GcNumberCell);
GrapeCity.Win.MultiRow.InputMan.NumberDisplayField myField = (GrapeCity.Win.MultiRow.InputMan.NumberDisplayField)cell.DisplayFields[2];
また、インデックスを使わず、設定したキー(文字列)を使って特定のフィールドにアクセスすることもできます。
キーは、各フィールドのNameプロパティにキーとして文字列を設定します。
次のサンプルはキーを使ってフィールドを取得する例です。ここではGcNumberCellの特定の表示フィールドのNameプロパティに予め"Key1"という文字列が設定されていることを前提にしています。
Dim cell As GrapeCity.Win.MultiRow.InputMan.GcNumberCell = DirectCast(GcMultiRow1.Rows(0).Cells(0), GrapeCity.Win.MultiRow.InputMan.GcNumberCell) Dim myField As GrapeCity.Win.MultiRow.InputMan.NumberDisplayField = cell.DisplayFields("Key1")
GrapeCity.Win.MultiRow.InputMan.GcNumberCell cell = (gcMultiRow1.Rows[0].Cells[0] as GrapeCity.Win.MultiRow.InputMan.GcNumberCell); GrapeCity.Win.MultiRow.InputMan.NumberDisplayField myField = (GrapeCity.Win.MultiRow.InputMan.NumberDisplayField)cell.DisplayFields["Key1"];
InputManと共通です。フィールド間のキャレットの移動を検出するには、GcNumberEditingControl.FieldEnterおよびFieldLeaveイベントを使用します。