Excelにおいて、データの入力規則(検証機能)を使用してユーザーがセルに入力できるデータの種類または値を制限する、という使い方は非常に一般的です。
ExcelライクなUIの業務アプリ開発に適した製品「SPREAD for Windows Forms」では、Excelさながらのデータの入力規則だけでなく、InputManと互換の14種類の検証機能も使用することができるので、様々なデータ検証の要件に柔軟に対応できます。
今回はこれらの設定方法について簡単に説明していきたい思います。
Excelライクに「データの入力規則」を設定する
まずはExcelの「データの入力規則」のように入力データの検証を行う方法です。SPREADデザイナに新たに追加された「データ検証」のメニューから設定します。
Excelの「データの入力規則」ダイアログとほぼ同一のUIの「データ検証」ダイアログが表示されます。なぜ「データの入力規則」というメニュー名じゃないのか疑問が湧くくらい同じUIです。
使い方もExcelと同様です。次の例では入力データを0~99999の数値に制限します。
「エラーメッセージ」タブから、範囲外のデータが入力された場合はエラーダイアログを表示するように設定追加します。
アプリケーションを実行し、範囲外の値(以下の例では”100000″)を入力するとエラーメッセージが表示され、入力データを制限することができました。
同様の設定をコードから行うことも可能です。
サンプルコード(C#)
// 4~7列目の項目の入力データを0~99999に制限する GrapeCity.Spreadsheet.DataValidation dv = fpSpread1.Sheets[0].Validations.Add( new GrapeCity.CalcEngine.RangeReference(0, 3, fpSpread1.Sheets[0].RowCount, 6), GrapeCity.Spreadsheet.DataValidationType.WholeNumber, GrapeCity.Spreadsheet.DataValidationErrorStyle.Stop, GrapeCity.Spreadsheet.DataValidationOperator.Between, "0", "99999"); dv.ShowError = true; dv.ErrorTitle = "無効な入力データです。"; dv.ErrorMessage = "0~99999の数値を入力してください。"; dv.IgnoreBlank = true;
InputManと互換の14種類の検証機能(セルバリデータ)で入力規則を設定する
InputManの入力データの検証機能と互換性のある検証機能、「セルバリデータ」をSPREADでも用することができます。ここでいうバリデータ(Validator)とは検証ツール(機能)のことを意味します。
このセルバリデータは、多段明細グリッドコンポーネントのMultiRowにも搭載されていますが、それと同等のものが実装されたことになります。
なのでInputManやMultiRowを使用したことのあるユーザーや、一緒に使用しているユーザーは、同様の方法で検証機能を実装できるので効率が良いです。
但し、SPREADやMultiRowの場合は「組み込みセルバリデータ」、InputManは「検証アイテム」という形式での提供になるので、機能の名称が異なる場合もありますが、できることや使い勝手はほぼ同じです。
それぞれの機能の比較を表にまとめると以下のようになります。
検証対象 | 機能名 | |
---|---|---|
InputMan | SPREAD/MultiRow | |
必須入力 | EmptyText | RequiredFieldValidator |
型 | InvalidType | RequiredTypeValidator |
必須リスト | IncludeList | IncludeListValidator |
除外リスト | ExcludeList | ExcludeListValidator |
サロゲート文字 | SurrogateChar | SurrogateCharValidator |
正規表現 | RegularExpression | RegularExpressionValidator |
対になる文字 | InvalidPairChar | PairCharValidator |
数値範囲 | InvalidNumberRange | RangeValidator |
日付範囲 | InvalidDateTimeRange | |
コントロールまたは セルの数値の比較 |
NumberCompareControl | CompareCellValidator |
コントロールまたは セルの日付値の比較 |
DateTimeCompareControl | |
数値の比較 | NumberCompareValue | CompareValueValidator |
日付値の比較 | DateTimeCompareValue | |
書式 | CharFormat | CharFormatValidator |
文字列の比較 | CompareString | CompareStringValidator |
文字列の長さ | TextLength | TextLengthValidator |
エンコード形式 | EncodingCheck | EncodingValidator |
※RangeValidator
、CompareCellValidator
、CompareValueValidator
については、数値と日付値で共通のバリデータを使用します。(RequiredType
プロパティで検証対象のデータ型を指定します。)
SPREADデザイナからセルバリデータを設定するには、「データ検証」->「セルバリデータ」のメニューを選択します。
「CellValidator コレクションエディタ」が表示されるので。セルバリデータを追加します。今回の例では入力データを全角文字に制限するよう、CharFormatValidator
を選択し、「追加」クリックします。
Format
プロパティに入力可能な文字種を指定するためのキーワードを設定します。全角文字を指定する場合は全角でZ
を設定します。使用できるキーワードは、InputManセルの書式に設定できるものと同様です。
次に不正な値が入力された場合の通知の設定を行います。Actions
プロパティ右側の「…」のアイコンをクリックします。
「ValidateActionBase コレクションエディタ」が開くので、通知方法を指定します。今回はデータの不正をアイコンで通知するようIconNotify
を選択し、追加します。
セルの編集終了時に通知が行われるよう、以下のようにプロパティを設定します。
プロパティ名 | 設定値 |
---|---|
DoActionReason | EndEdit |
IconTip | 全角文字で入力してください。 |
以上で設定は完了です。デザイナで変更を適用したあと、アプリケーションを実行し、セルに全角以外の文字を入力すると、アイコンでエラー通知が表示されます。またアイコンにカーソルをあわせればエラー情報がツールチップで表示されます。
こちらもすべての設定をコードから行うことも可能です。
サンプルコード(C#)
// 2~3列目の項目の入力データを全角文字に制限し、エラー時はアイコンで通知する。 FarPoint.Win.Spread.CharFormatValidator formatValidator = new FarPoint.Win.Spread.CharFormatValidator(); formatValidator.Format = "Z"; FarPoint.Win.Spread.IconNotify iconNotify = new FarPoint.Win.Spread.IconNotify(); iconNotify.DoActionReason = FarPoint.Win.Spread.ValidateReasons.EndEdit; iconNotify.IconTip = "全角で入力してください。"; formatValidator.Actions.Add(iconNotify); fpSpread1.Sheets[0].AddValidators( new FarPoint.Win.Spread.Model.CellRange( 0, 1, fpSpread1.Sheets[0].RowCount, 2), formatValidator);
おわりに
いかがでしたでしょうか。Excel互換の設定方法は、Excelとほぼ同じ使い勝手で入力規則を設定できるので慣れている方には嬉しいですね。
また、セルバリデータを使用した設定方法も手順こそは多いですが、Excelでは複雑な数式を設定しないといけないような制御も、ダイアログからプロパティを設定するだけで比較的簡単に行うことができます。
製品Webサイトでは、SPREADの基本機能を体感できるデモアプリケーションを公開しています。今回紹介したデータ検証の機能も含まれていますので、ぜひダウンロードしてお試しください。