数値コントロールの主要機能である書式フィールドの設定とその活用方法について解説します。
数値コントロールの書式には、入力用と表示用の2つがあり、それぞれ入力フィールドと表示フィールドを使って書式を設定します。
入力フィールドを設定するには、Fields プロパティが参照するNumberFields を使用します。NumberFieldsは、コントロール内の各フィールドを表すNumberField のコレクションを保持するクラスです。
一般的に数値の整数値、小数点、小数値は配置の順番が決まっているため、入力書式を設定するNumberFieldsコレクションではコレクションのアイテムを追加または削除できません。
一方、表示フィールドを設定するには、DisyplayFields プロパティが参照するNumberDisplayFieldCollection を使用します。NumberDisplayFieldCollectionは、コントロール内の各フィールドを表すNumberDisplayField のコレクションを保持するクラスです。
数値コントロールの書式を設定するには、それぞれのコレクションのAdd メソッドもしくはAddRange メソッドを使用して直接フィールドオブジェクトを追加する方法と、AddRange メソッドのオーバーライドの1つを使用して、キーワード文字列によりフィールドを自動生成する方法があります。それぞれの方法による書式の設定方法については、以下のトピックを参照してください。
数値コントロールでは、接頭語および接尾語をリテラル文字として表示できます。接頭語/接尾語は入力用および表示用の2つがあり、それぞれNumberSignField、NumberSignDisplayField (接頭語/接尾語フィールド)で定義します。
接頭語/接尾語は正数と負数のぞれぞれを設定できます。
現在キャレットが置かれているフィールドは、ActiveField プロパティで取得できます。
数値コントロールの表示フィールドコレクション内の特定のフィールドにアクセスする場合、次のいずれかの方法を使うことができます。
コレクションのインデックスがわかっている場合は、インデックスを使ってフィールドを取得することができます。
次のサンプルはインデックスを使ってフィールドを取得する例です。ここでは数値コントロールの3番目のフィールドを取得する例です。
Dim MyField As GrapeCity.Win.Editors.Fields.NumberDisplayField = GcNumber1.DisplayFields(2)
GrapeCity.Win.Editors.Fields.NumberDisplayField myField = gcNumber1.DisplayFields[2];
また、インデックスを使わず、設定したキー(文字列)を使って特定のフィールドにアクセスすることもできます。
キーは、各フィールドのName プロパティにキーとして文字列を設定します。
次のサンプルはキーを使ってフィールドを取得する例です。ここでは数値コントロールの特定の表示フィールドのName プロパティに予め"Key1"という文字列が設定されていることを前提にしています。
Dim MyField As GrapeCity.Win.Editors.Fields.NumberField = GcNumber1.DisplayFields("Key1")
GrapeCity.Win.Editors.Fields.NumberField myField = gcNumber1.DisplayFields["Key1"];
コントロールには、フィールド間のキャレットの移動によって発生する2つのイベントが用意されています。
これらのイベントを使えば、フィールド毎に入力された値をチェックすることや、その値に応じた独自処理の実装など、フィールドを使った細やかな処理の実装を可能になります。
各フィールドクラスには、コントロールのFieldEnterとFieldLeaveと同様の機能を持つEnter とLeave イベントが提供されています。これらのイベントを使うことでも、ユーザーは同様の処理を実装することが可能です。しかし、フィールドクラスのイベントの場合、フィールド毎にイベントを実装する必要があることから、動的なフィールド操作や書式の仕様変更などに対しての処理が煩雑になる可能性があることや、デザインウィンドウ上からイベントハンドラを生成できないことなどのデメリットがあるためフィールドクラスのイベントよりもコントロールのイベントを使うことが推奨されます。 |