GrapeCity MultiRow for Windows Forms 11.0J
書式の設定

GcMaskCellの主要機能である入力フィールドの設定とその活用方法について解説します。
書式設定の概要
GcMaskCellの入力領域はフィールドから構成されており、フィールドによって書式の設定やスタイルを定義することが可能です。フィールドを設定するには、Fieldsプロパティが参照するMaskFieldCollectionを使用します。MaskFieldCollectionは、セル内の各フィールドを表すMaskFieldのコレクションを保持するクラスです。

GcMaskCellの書式を設定するには、直接フィールドオブジェクトを追加する方法と、キーワード文字列によりフィールドを自動生成する方法があります。それぞれの方法による書式の設定方法については、以下のトピックを参照してください。
リテラル文字とプロンプト文字

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

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


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


(図)2つ目のパターンフィールドのみ異なるプロンプト文字("*")

文字の自動変換
AutoConvertプロパティをTrueに設定すると、Fieldsプロパティが参照するフィールドコレクションのパターンフィールド(MaskPatternField.Pattern)で設定された書式に基づいて、変換可能な文字はすべて自動的に変換されます。例えば、書式が \A{8} のように設定されていると、小文字を入力しても自動的に大文字に変換されます。また、全角文字だけが許可されている場合は、入力された半角文字は全角文字に変換されます。

セル内部で行われる自動変換の手順を以下に示します。
  1. 小文字から大文字、または大文字から小文字への変換を行います。
  2. 手順1の変換が行われない場合、全角から半角、または半角から全角への変換を行います。
  3. 手順2の変換が行われない場合、全角大文字から半角小文字、全角小文字から半角大文字、半角大文字から全角小文字、半角小文字から全角大文字のいずれかの変換を行います。
半角カタカナ、全角カタカナ、およびひらがなは、次のように変換されます。
  • 半角カタカナは全角カタカナに変換。変換できない場合はひらがなに変換。
  • 全角カタカナは半角カタカナに変換。変換できない場合はひらがなに変換。
  • ひらがなは全角カタカナに変換。変換できない場合は半角カタカナに変換。

Fieldsプロパティのパターンフィールドに"^\V"が設定された場合、IVS(Ideographic Variation Sequence)文字およびIVSの親となる漢字(以下、親字)は以下のように変換されます。
"^\V"(IVS文字を除外する)
IVS 親字に変換されます
親字 そのまま入力されます
フィールド操作の方法
GcMaskCell.Fieldsプロパティまたは GcMaskEditingControl.Fields プロパティのコレクションを通して特定のフィールドにアクセスできます。
フィールドコレクション内の特定のフィールドにアクセスする場合、次のいずれかの方法を使うことができます。
  • インデックスからフィールドにアクセス
  • キー(文字列)からフィールドにアクセス

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

Dim cell As GrapeCity.Win.MultiRow.InputMan.GcMaskCell = DirectCast(GcMultiRow1.Rows(0).Cells(0), GrapeCity.Win.MultiRow.InputMan.GcMaskCell)
Dim myField As GrapeCity.Win.MultiRow.InputMan.MaskField = cell.Fields(2)
GrapeCity.Win.MultiRow.InputMan.GcMaskCell cell = (gcMultiRow1.Rows[0].Cells[0] as GrapeCity.Win.MultiRow.InputMan.GcMaskCell);
GrapeCity.Win.MultiRow.InputMan.MaskField myField = cell.Fields[2];

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

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

Dim cell As GrapeCity.Win.MultiRow.InputMan.GcMaskCell = DirectCast(GcMultiRow1.Rows(0).Cells(0), GrapeCity.Win.MultiRow.InputMan.GcMaskCell)
Dim myField As GrapeCity.Win.MultiRow.InputMan.MaskField = cell.Fields("Key1")                        
GrapeCity.Win.MultiRow.InputMan.GcMaskCell cell = (gcMultiRow1.Rows[0].Cells[0] as GrapeCity.Win.MultiRow.InputMan.GcMaskCell);
GrapeCity.Win.MultiRow.InputMan.MaskField myField = cell.Fields["Key1"];
イベントの利用
フィールド間のキャレットの移動を検出するには、GcMaskEditingControl.FieldEnterおよびFieldLeaveイベントを使用します。
   
関連トピック

 

 


© 2008 GrapeCity inc. All rights reserved.