MESCIUS SPREAD for Windows Forms 17.0J
入力の制御(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 プロパティで、指定した色を適用するかどうかを設定します。

マイナス値の書式と色を設定したGcNumber型セル

マイナスキーの動作

マイナスキーは値をプラスとマイナスを切り替えるスイッチ機能を行います。(1回目のマイナスキー押下で値がマイナスに変化、2回目押下でプラスに変化) この動作は、GcNumber型セルに以下のショートカット機能が設定されていることで実現されています。

この動作を、マイナスキーが押下された場合には値をマイナスに変更するだけの動作とさせることもできます。(1回目のマイナスキー押下で値がマイナスに変化、2回目押下でもマイナスのまま。プラスにしたい場合はプラスキーを押下する)
既定の動作から新しい動作に変更するためには、上記で挙げたふたつのショートカット機能を削除します。

ゼロとnull値

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に設定すると、入力された値が書式設定により定義された最大桁数に達すると、自動的に次のセルへフォーカスを移動できます。

参照

 

 


© MESCIUS inc. All rights reserved.