MESCIUS InputMan for Windows Forms 12.0J
書式の設定

タイムスパンコントロールの主要機能である書式フィールドの設定とその活用方法について解説します。

書式設定の概要

タイムスパンコントロールの書式には、入力用と表示用の2つがあり、それぞれ入力フィールドと表示フィールドを使って書式を設定します。
入力フィールドを設定するには、Fields プロパティが参照するTimeSpanFieldCollection を使用します。TimeSpanFieldCollectionは、各入力フィールドを表すTimeSpanField のコレクションを保持するクラスです。
一方、表示フィールドを設定するには、DisplayFields プロパティが参照するTimeSpanDisplayFieldCollection を使用します。TimeSpanDisplayFieldCollectionは、各表示フィールドを表すTimeSpanDisplayField のコレクションを保持するクラスです。

タイムスパンコントロールの書式を設定するには、それぞれのコレクションのAdd メソッドもしくはAddRange メソッドを使用して直接フィールドオブジェクトを追加する方法と、AddRange メソッドのオーバーライドの1つを使用して、キーワード文字列によりフィールドを自動生成する方法があります。それぞれの方法による書式の設定方法については、以下のトピックを参照してください。

リテラル文字とプロンプト文字

ShowLiterals プロパティを使えば、入力中にリテラル文字列を表示するかどうかを指定できます。
リテラル文字とは、TimeSpanLiteralField (リテラルフィールド)で定義された文字列をそのまま表示する文字列をいいます。

また、リテラルフィールド以外のフィールドには、プロンプト文字を設定することができます。プロンプト文字を使用することで、入力フィールドを明示的に表示したり入力文字数を視覚的に表すことができます。 プロンプト文字はコントロールのPromptChar プロパティを使用して設定できます。なお、各フィールドのPromptChar プロパティを設定するとフィールドごとに異なるプロンプト文字も設定できます。


(図)プロンプト文字("_")


(図)時間と秒フィールドのみ異なるプロンプト文字("*")

フィールド操作

DefaultActiveField プロパティを使用すると、コントロールがフォーカスを受け取ったときにキャレットを配置するフィールドを指定できます。現在キャレットが置かれているフィールドは、ActiveField プロパティで取得できます。

フィールドコレクション内の特定のフィールドにアクセスする場合、次のいずれかの方法を使うことができます。

コレクションのインデックスがわかっている場合は、インデックスを使ってフィールドを取得することができます。
次のサンプルはインデックスを使ってフィールドを取得する例です。ここではタイムスパンコントロールの3番目のフィールドを取得する例です。

Dim MyField As GrapeCity.Win.Editors.Fields.TimeSpanField = GcTimeSpan1.Fields(2)
GrapeCity.Win.Editors.Fields.TimeSpanField myField = gcTimeSpan1.Fields[2];

また、インデックスを使わず、設定したキー(文字列)を使って特定のフィールドにアクセスすることもできます。
キーは、各フィールドのNameプロパティにキーとして文字列を設定します。

次のサンプルはキーを使ってフィールドを取得する例です。ここではタイムスパンコントロールの特定のフィールドのName プロパティに予め"Key1"という文字列が設定されていることを前提にしています。

Dim MyField As GrapeCity.Win.Editors.Fields.TimeSpanField = GcTimeSpan1.Fields("Key1")
GrapeCity.Win.Editors.Fields.TimeSpanField myField = gcTimeSpan1.Fields["Key1"];
イベントの利用

コントロールには、フィールド間のキャレットの移動によって発生する2つのイベントが用意されています。

これらのイベントを使えば、フィールド毎に入力された値をチェックすることや、その値に応じた独自処理の実装など、フィールドを使った細やかな処理の実装を可能になります。

各フィールドクラスには、コントロールのFieldEnterとFieldLeaveと同様の機能を持つEnter とLeave イベントが提供されています。これらのイベントを使うことでも、ユーザーは同様の処理を実装することが可能です。しかし、フィールドクラスのイベントの場合、フィールド毎にイベントを実装する必要があることから、動的なフィールド操作や書式の仕様変更などに対しての処理が煩雑になる可能性があることや、デザインウィンドウ上からイベントハンドラを生成できないことなどのデメリットがあるためフィールドクラスのイベントよりもコントロールのイベントを使うことが推奨されます。

関連トピック

 

 


© MESCIUS inc. All rights reserved.