PowerTools SPREAD for Windows Forms 10.0J > 開発者ガイド > セル型 > InputManセル > GcMask型セル > 書式の設定(GcMask型セル) |
GcMask型セルの主要機能である書式フィールドの設定とその活用方法について解説します。
GcMask型セルの入力領域はフィールドから構成されており、フィールドによって書式の設定やスタイルを定義することが可能です。フィールドを設定するには、Fieldsプロパティが参照するMaskFieldCollectionInfoを使用します。MaskFieldCollectionInfoは、セル内の各フィールドを表すMaskFieldInfoのコレクションを保持するクラスです。
GcMask型セルの書式を設定するには、直接フィールドオブジェクトを追加する方法と、キーワード文字列によりフィールドを自動生成する方法があります。それぞれの方法による書式の設定方法については、以下のトピックを参照してください。
GcMask型セルは、リテラル文字列を設定し表示させることができます。リテラル文字とは、リテラルフィールド(MaskLiteralFieldInfoクラス)で定義された文字列をそのまま表示する文字列をいいます。 ShowLiteralsプロパティを使えば、入力中にリテラル文字列を表示するかどうかを指定できます。
また、パターンフィールド(MaskPatternFieldInfoクラス)には、プロンプト文字を設定することができます。プロンプト文字を使用することで、入力フィールドを明示的に表示したり入力文字数を視覚的に表すことができます。 プロンプト文字はGcMask型セルのPromptCharプロパティを使用して設定します。なお、各パターンフィールドのPromptCharプロパティを設定するとフィールドごとに異なるプロンプト文字も設定できます。
(図)プロンプト文字("_")
(図)2つ目のパターンフィールドのみ異なるプロンプト文字("*")
AutoConvertプロパティをTrueに設定すると、Fieldsプロパティが参照するフィールドコレクションのパターンフィールド(MaskPatternFieldInfo.Pattern)で設定された書式に基づいて、変換可能な文字はすべて自動的に変換されます。たとえば、書式が \A{8} のように設定されていると、小文字を入力しても自動的に大文字に変換されます。また、全角文字だけが許可されている場合は、入力された半角文字は全角文字に変換されます。
セル内部で行われる自動変換の手順を以下に示します。
Fieldsプロパティのパターンフィールドに"^\V"が設定された場合、IVS(Ideographic Variation Sequence)文字およびIVSの親となる漢字(以下、親字)は以下のように変換されます。
"^\V"(IVS文字を除外する) | |
---|---|
IVS | 親字に変換されます |
親字 | そのまま入力されます |
GcMaskCellType.Fieldsプロパティのコレクションをとおして特定のフィールドにアクセスできます。GcMask型セルのフィールドコレクション内の特定のフィールドにアクセスする場合、次のいずれかの方法を使うことができます。
コレクションのインデックスがわかっている場合は、インデックスを使ってフィールドを取得することができます。
次のサンプルコードはインデックスを使ってフィールドを取得する例です。ここではGcMask型セルの3番目のフィールドを取得する例です。
C# |
コードのコピー
|
---|---|
GrapeCity.Win.Spread.InputMan.CellType.GcMaskCellType cell = (fpSpread1.ActiveSheet.GetCellType(0, 0) as GrapeCity.Win.Spread.InputMan.CellType.GcMaskCellType);
GrapeCity.Win.Spread.InputMan.CellType.Fields.MaskFieldInfo myField = (GrapeCity.Win.Spread.InputMan.CellType.Fields.MaskFieldInfo)cell.Fields[2];
|
Visual Basic |
コードのコピー
|
---|---|
Dim cell As GrapeCity.Win.Spread.InputMan.CellType.GcMaskCellType = TryCast(FpSpread1.ActiveSheet.GetCellType(0, 0), GrapeCity.Win.Spread.InputMan.CellType.GcMaskCellType) Dim myField As GrapeCity.Win.Spread.InputMan.CellType.Fields.MaskFieldInfo = DirectCast(cell.DisplayFields(2), GrapeCity.Win.Spread.InputMan.CellType.Fields.MaskFieldInfo) |
また、インデックスを使わず、設定したキー(文字列)を使って特定のフィールドにアクセスすることもできます。キーは、各フィールドのNameプロパティにキーとして文字列を設定します。
次のサンプルコードはキーを使ってフィールドを取得する例です。ここではGcMask型セルの特定のフィールドのNameプロパティにあらかじめ"Key1"という文字列が設定されていることを前提にしています。
C# |
コードのコピー
|
---|---|
GrapeCity.Win.Spread.InputMan.CellType.GcMaskCellType cell = (fpSpread1.ActiveSheet.GetCellType(0, 0) as GrapeCity.Win.Spread.InputMan.CellType.GcMaskCellType); GrapeCity.Win.Spread.InputMan.CellType.Fields.MaskFieldInfo myField = (GrapeCity.Win.Spread.InputMan.CellType.Fields.MaskFieldInfo)cell.Fields["Key1"]; |
Visual Basic |
コードのコピー
|
---|---|
Dim cell As GrapeCity.Win.Spread.InputMan.CellType.GcMaskCellType = TryCast(FpSpread1.ActiveSheet.GetCellType(0, 0), GrapeCity.Win.Spread.InputMan.CellType.GcMaskCellType) Dim myField As GrapeCity.Win.Spread.InputMan.CellType.Fields.MaskFieldInfo = DirectCast(cell.DisplayFields("Key1"), GrapeCity.Win.Spread.InputMan.CellType.Fields.MaskFieldInfo) |