PowerTools SPREAD for Windows Forms 10.0J > 開発者ガイド > セル型 > InputManセル > GcNumber型セル > 入力の制御(GcNumber型セル) |
GcNumber型セルでは、入力可能な範囲を指定したりマイナス値を制御することができます。ここではGcNumber型セルが提供する入力機能について解説します。
GcNumber型セルでは書式設定により、数値の入力および表示書式を自由に設定することができます。入力書式は、セルが入力フォーカスを受け取ったときの書式で、表示書式は入力フォーカスのないときの書式です。
入力書式の設定は、Fields プロパティによって行われ、フィールドとよばれる入力領域を構成する要素によって定義されます。また、表示書式は、DisplayFields プロパティによって行われ、Fieldsプロパティと同様フィールドによって定義します。FieldsプロパティおよびDisplayFieldsプロパティについては、「書式の設定(GcNumber型セル)」で詳しく解説します。
セルのMaxValue プロパティとMinValue プロパティを設定してセルに入力可能な範囲を指定します。
これらのプロパティを使用する場合、検証は入力中のリアルタイムに行われます。全てのフィールドの値が入力されると検証が行われ、範囲外の値の場合にはMaxMinBehavior プロパティの設定によって値が制御されます。MaxMinBehaviorプロパティに設定できる値は以下のとおりで、既定値はMaxMinBehavior.AdjustToMaxMinです。
MaxMinBehaviorの値 | 説明 |
---|---|
AdjustToMaxMin | 値を最小値か最大値の近い方に設定します。 |
Clear | 値を削除してnullにします。 |
Restore | 変更前の値に戻します。 |
CancelInput | 最後の入力をキャンセルしてフォーカスを保持します。 |
Keep | エラーとなったTextプロパティの値を保持します。 |
次のサンプルコードは、最大値と最小値を設定します。
C# |
コードのコピー
|
---|---|
GrapeCity.Win.Spread.InputMan.CellType.GcNumberCellType gcNumberCell1 = new GrapeCity.Win.Spread.InputMan.CellType.GcNumberCellType(); // 最大値と最小値を設定 gcNumberCell1.MaxValue = 100; gcNumberCell1.MinValue = 0; // 範囲外の場合に値をどのように制御するかを設定 gcNumberCell1.MaxMinBehavior = GrapeCity.Win.Spread.InputMan.CellType.MaxMinBehavior.CancelInput; fpSpread1.ActiveSheet.Cells[0, 0].CellType = gcNumberCell1; |
Visual Basic |
コードのコピー
|
---|---|
Dim gcNumberCell1 As New GrapeCity.Win.Spread.InputMan.CellType.GcNumberCellType() ' 最大値と最小値を設定 gcNumberCell1.MaxValue = 100 gcNumberCell1.MinValue = 0 ' 範囲外の場合に値をどのように制御するかを設定 gcNumberCell1.MaxMinBehavior = GrapeCity.Win.Spread.InputMan.CellType.MaxMinBehavior.CancelInput FpSpread1.ActiveSheet.Cells(0, 0).CellType = gcNumberCell1 |
RoundPattern プロパティを使用すると、設定した書式に対して端数処理の詳細な設定ができます。RoundPatternプロパティに設定できる値は次のとおりで、既定値は四捨五入(RoundPattern.MidpointRoundAwayFromZero)です。
プロパティ値 | 説明 |
---|---|
Ceiling | 切り上げ |
Floor | 切り捨て |
MidpointRoundAwayFromZero | 四捨五入 |
MidpointRoundToEven | 近似値への丸め(偶数丸め、銀行丸め) |
SPREADおよびExcelのROUNDUP/ROUNDDOWN関数と動作が異なります。
GcNumber型セルの切り上げは、対象となる値より大きい最小の整数(または指定した桁数の小数)となります。以下、例です。
元の値 | GcNumber型セルで切り上げた値 | ROUNDUP関数で切り上げた値 |
---|---|---|
1.2 | 2 | 2 |
-1.2 | -1 | -2 |
GcNumber型セルの切り捨ては、対象となる値より小さい最大の整数(または指定した桁数の小数)となります。以下、例です。
元の値 | GcNumber型セルで切り捨てた値 | ROUNDDOWN関数で切り捨てた値 |
---|---|---|
1.2 | 1 | 1 |
-1.2 | -2 | -1 |
セルの入力をプラスの値かマイナスの値のいずれかのみを許可したい場合、ValueSign プロパティを設定します。
プロパティ値 | 説明 |
---|---|
NoControl | 数値の符号が設定されていません。正数、負数両方の入力を許可します。 |
Positive | 正数の入力のみを許可します。 |
Negative | 負数の入力のみを許可します。 |
マイナス値が入力されたとき、書式の設定で表示する文字列を指定することが可能ですが、NegativeColor プロパティを使用すれば、マイナス値が入力された場合の文字色を設定することができます。また、UseNegativeColor プロパティで、指定した色を適用するかどうかを設定します。
マイナスキーは値をプラスとマイナスを切り替えるスイッチ機能を行います。(1回目のマイナスキー押下で値がマイナスに変化、2回目押下でプラスに変化) この動作は、GcNumber型セルに以下のショートカット機能が設定されていることで実現されています。
この動作を、マイナスキーが押下された場合には値をマイナスに変更するだけの動作とさせることもできます。(1回目のマイナスキー押下で値がマイナスに変化、2回目押下でもマイナスのまま。プラスにしたい場合はプラスキーを押下する)
既定の動作から新しい動作に変更するためには、上記で挙げたふたつのショートカット機能を削除します。
GcNumber型セルで、ゼロを削除し値をnullとすることができるかどうかは、AllowDeleteToNull プロパティで設定します。
AllowDeleteToNullプロパティをTrueに設定することで、入力された「0」をDeleteキーやBackSpaceキーで削除し、そのValueプロパティをnullにすることができます。
入力書式の設定で小数の入力を許可しない場合、小数点が含まれた数値がクリップボードから貼り付けられたときの入力値をAcceptsDecimal プロパティを使用して制御することができます。既定値はDecimalMode.Cutです。
AcceptsDecimalの値 | 説明 |
---|---|
Cut | 小数点以下が切り捨てられます。「123.45」という数値が「123」として入力されます。 |
Filter | 小数点が削除されます。「123.45」という数値が「12345」として入力されます。 |
EditMode プロパティ を使って、コントロールがフォーカスを受け取ったときのデフォルトの編集モードを定義できます。EditMode プロパティをEditMode.Insertにすると挿入モード、EditMode.Overwriteにすると上書きモードになります。また、EditMode.FixedInsertとEditMode.FixedOverwriteでは、編集モードが固定されるので、実行中に[Ins]キーが押されても編集モードは切り替わりません。
AcceptsCrLf プロパティを使用してクリップボードへ改行を含む文字列をコピー、または貼り付けた場合の改行コードの扱いを設定できます。AcceptsCrLfプロパティは、CrLfMode 列挙体を使用して次の値を設定できます。
AcceptsCrLfの値 | 説明 |
---|---|
NoControl | 改行コードはそのままでコピー、貼り付けを行います。 |
Filter | 全ての改行コードを削除しコピー、貼り付けを行います。 |
Cut | 最初の改行コード以降の文字列を削除します。標準コントロールと同じ動作です。 |
ExitOnLastChar プロパティをTrueに設定すると、入力された値が書式設定により定義された最大桁数に達すると、自動的に次のセルへフォーカスを移動できます。