4D v13.4

データ入力の制御と補助

ホーム

 
4D v13.4
データ入力の制御と補助

データ入力の制御と補助  


 

 

プロパティリストを使用して、アクティブオブジェクトへのデータ入力を制御または補助する様々なプロパティを設定できます。これらのプロパティを使用すると以下のことが可能です:

  • 選択とデータ入力に関係する属性を設定できます。
  • 入力可能な文字を制御するための入力フィルターを設定できます。
  • 選択リストを割り当てることができます。
  • 指定リストや除外リストを指定できます。
  • 最大値や最小値を指定できます。
  • デフォルト値を設定できます。
  • オブジェクトの選択モードを指定できます。
  • ヘルプメッセージを表示できます。

入力可属性はユーザーがオブジェクトに値を入力できるかどうかを指定します。これはフィールドおよび変数オブジェクトのプロパティリストの“入力”テーマで設定します。

フォームウィザードのリレートフィールド入力可チェックボックスの選択を解除している場合、リレートしたテーブルのフィールドは入力ができません。この場合、プロパティリストで入力可にチェックを入れると、そのフィールドオブジェクトへの入力を許可できます。

すべてのアクティブオブジェクトはデフォルトで入力可です。特定のフォーム上の特定のフィールドやオブジェクトを入力不可にしたい場合、入力可チェックボックスの選択を解除します。入力不可のオブジェクトはデータの表示のみを行います。メソッドでフィールド名や変数名を使用してデータを制御します。入力不可オブジェクトでもOn Clicked, On Double Clicked, On Drag Over, On Drop, On Getting Focus そして On Losing Focus フォームイベントは使用できます。これを利用すれば、カスタムコンテキストメニューを容易に管理し、ドラッグ&ドロップ可能なインターフェースをデザイン、そして入力不可変数を選択することができます。

注:

  • プロパティリストの内容はコンテキストを考慮します。フィールドや変数の入力可属性が選択解除されると、入力制御に関連するプロパティ (必須入力、タブ有効、入力フィルター等) はリストに表示されなくなります。
  • ストラクチャーエディターでフィールドに対し表示のみプロパティを設定できます (UNREGISTER CLIENT参照)。この場合入力可オプションはこのフィールドのプロパティリストに表示されません。

必須入力チェックボックスを選択すると、そのフォーム上でフィールドが必須入力となります。フィールドに値が入力されない場合、4Dはレコードを受け入れません。

デフォルトでフィールドは必須入力ではありません。すべてのフォームでフィールドを必須入力にするには、ストラクチャーエディターのインスペクターウィンドウで必須入力属性を設定します。特定のフォームのみでフィールドを必須入力にしたい場合、オブジェクトプロパティの必須入力オプションを選択します。

入力可と必須入力属性は、ストラクチャーエディターで設定するフィールド属性と同じです (UNREGISTER CLIENT参照)。これらの属性を特定のフォームで異なるものに設定したい場合、フィールドごとにプロパティで設定できます。これらの属性はフィールドおよび変数オブジェクトのプロパティリストの"入力"テーマで設定できます。

これらの属性はストラクチャーエディターで設定したフ
ィールド属性を上書きしません。ストラクチャーエディターですでにフィールドに対し表示のみ属性が割り当てられていると、入力可フォーム属性を使用してそれを入力可にすることはできません。ストラクチャーエディターでフィールドに対しすでに必須入力属性が設定されている場合、必須入力フォーム属性を選択解除して非必須入力にすることはできません。入力可と必須入力チェックボックスは、ストラクチャーエディターでの設定を反映しません。

フォーム上のアクティブオブジェクトごとにタブ有効属性を設定できます。この属性が選択されると、オブジェクトは入力順に組み込まれ、ユーザーがTabキーを押すことで選択されるようになります。

デフォルトでこの属性は、この属性をサポートするすべてのアクティブオブジェクトに対し選択されています。選択を解除すると、そのオブジェクトは入力順から外されます。しかしマウスクリックやメソッドによって選択することは可能です。

入力順についてはデータの入力順を変更するを参照してください。

入力ができない (ボタンなどの) オブジェクトに対し、タブ有効プロパティを設定できます。この場合Tabキーを使用してオブジェクトを選択することができますが、依然として入力はできません。

タブ有効プロパティは、オブジェクトがフォーカスを得ることが可能な場合にのみ有効です。しかしいくつかのオブジェクトはフォーカスを得ることができてもタブが有効でない場合があります (例えばクリックで選択可能だがタブでは選択できないオブジェクト)。この場合、オブジェクトはデータ入力順には含められません。

このプロパティはアクティブオブジェクト (入力可か不可かにかかわらず) や入力できないフィールドのプロパティリスト中、"入力"テーマで設定できます。

オブジェクトに対しフォーカス表示プロパティが選択されていると、そのオブジェクトはフォーカスを得ることができ、またキーボードなどを使用してアクティブ化することができます。オブジェクトはフォーカスを得ると、オブジェクトごとあるいはOSごとに定められた方法でハイライトします。ただし"フォーカスの四角を隠す"オプションが選択されている場合を除きます (後述)。

チェックボックスにフォーカスがある

チェックボックスが選択されているが、フォーカスが表示されない状態

入力できないオブジェクトにフォーカス表示プロパティが設定されていると、ユーザーはエリアの内容を選択、コピー、およびドラッグ&ドロップすることができます。

実行時、フィールドやすべての入力可オブジェクトは (Tabキーやクリックにより) フォーカスを得たときグラフィカルにそれを表現します。フォーカスの四角を隠すオプションをチェックするとこのグラフィカル表現を無効にできます。

入力可フォームオブジェクトには選択リストを割り当てることができます。3タイプの選択リスト、標準の選択リスト、指定リスト、除外リストがあります。

標準の選択リストはプロパティリストの“データソース”テーマで、指定リストや除外リストは"値の範囲"テーマで指定します。

選択リストを割り当てる前に、リストエディターを使用して事前にリストを作成しなければなりません (リスト参照)。

"データソース"テーマの選択リストドロップダウンリストを使用してフィールドに対しデータソース選択リストを割り当てると、4Dはデータ入力中に自動で選択リストを表示します。選択リストはフォーム実行中にフィールドや入力可オブジェクトが選択されると表示されます。そしてユーザーはリストから入力する値を選択できます。選択リストから選択され、入力された値はキーボードからのタイプで上書きすることもできます (リストが指定リストとしても指定されている場合を除き)。

指定リスト (“値の範囲”テーマ) は有効な値のリストを指定するために使用します。例えば指定リストとして役職名のリストを指定できます。こうすると、事前に作成されたリスト中の役職名だけ有効な値となります。

指定リストを指定しても、フィールドが選択されたときに自動でリストは表示されません。フォーム実行中に指定リストの内容を表示したい場合は、"データソース"テーマの選択リストドロップダウンで同じリストを指定します。

除外リストを使用すると、リスト中の項目は入力できなくなります。例えば従業員に使用される入力フォーム上のフィールドに、管理者だけが入力できる値のリストを除外リストとして割り当てることができます。

フィールドの選択リストはテーブルまたはフォームレベルで設定できます。テーブルレベルで選択リストを割り当てるにはストラクチャーエディターのインスペクターウィンドウを使用します (UNREGISTER CLIENT参照)。するとこのフィールドにはすべてのフォームとデータベースの検索エディターで選択リストが有効になります。フォームレベルで選択リストを割り当てると、そのフォームだけで選択リストが有効になります。

日本語利用時の注意点: 入力フィルターは日本語IMEと互換性がありません。入力文字種の制限及び#を使用した入力文字数の制限もできません。例えば半角数字のみを2文字だけ入力を許可する目的で、入力フィルターに&9##と指定しても、IME経由での全角数字やその他日本語文字の入力を防ぐことはできませんし、任意の数の文字が入力できてしまいます。アプリケーション仕様としてこのような制御が必要な場合は4Dコマンドを使用する必要があります。

入力フィルターを使用するとデータ入力中にユーザーがタイプできる文字を制御できます。先に説明したデータ入力制御とは異なり、入力フィルターは文字ごとに処理が行われます。例えばパーツ番号が常に2つの文字とそれに続く3つの数字で構成されるとき、そのパターンを入力フィルターを通して強制することができます。さらに特定の文字や数字のみを使用するよう制御することもできます。

入力フィルターはデータ入力時にのみ動作します。ユーザーがオブジェクトの選択を解除した後のデータ表示には効果がありません。通常入力フィルターとGET LIST ITEM PARAMETERを一緒に使用します。フィルターはデータ入力を制約し、表示フォーマットはデータ入力後の値の表示を制御します。

データ入力中、入力フィルターはタイプされるたびに文字を評価します。ユーザーが無効な文字をタイプすると (例えば数字ではなく文字)、4Dは入力を受け付けません。ユーザーが有効な文字を入力するまで値は変更されません。

入力フィルターは入力フィルタードロップダウンリストから組み込みのフィルターを選択する、またはエリアに入力フィルターコードをタイプすることで設定できます。入力フィルタードロップダウンリストには日付、時間、または文字オブジェクトのフィルターが含まれます。

ほとんどの場合、4D組み込みのフィルターを使用することができます。しかしカスタマイズされたフィルターを作成することも可能です (フィルターエディター参照)。開発者が作成したフィルターの名前は縦棒 (|) 付きで入力フィルターリストの先頭に追加されます。

ドロップダウンリストから選択した後に入力フィルターを更新することができます。例えば大文字と小文字、記号およびワイルドカード文字 (@) の入力を許可したい場合、まず以下のフィルターを選択します:
    &"a-z;0-9; ;,;.;-"
そして以下のように変更します:
    &"a-z;0-9; ;,;.;-;@"

入力フィルターのコードは通常アンパサンド (&) から始まります。これは4Dに、この後に続く文字が入力フィルターであることを伝えます。コードがチルダ (~) から始まる場合、これは “&” と同じ意味を持ちますが、文字が自動で大文字に変換される点が異なります。
&は通常“A”、“a”、あるいは“9”が続きます。それぞれ大文字のみを許可 (A)、大文字と小文字を許可 (a)、数字のみを許可 (9) を意味します。例えば&9は数字のみ、&Aは大文字のみを許可します。シャープ (#) は許可される文字数を指定するために使用します。フィルターに#が含まれない場合、フィルターは文字数を制限しません。例えば&9は任意の数の数字入力を許可します。フィルター&9##は2つの数字入力を受け入れます。
エクスクラメーションマーク (!) は、ユーザーが入力できる文字数を示す記号を変更するために使用します。!が使用されない場合、4Dは下線 (_) をユーザーが入力可能な場所に表示します。例えば!?&9##は2つの?を入力可能な場所に表示し、かつその場所には数字のみを受け入れます。入力フィルターの作成についてはフィルターとフォーマットのコードを参照してください。

入力フィルタードロップダウンリストから選択できる入力フィルターの説明は以下の表の通りです:

入力フィルター説明
~Aすべての文字が入力可能、大文字に変換される。
&9数字だけが入力可能。
&A大文字の文字だけが入力可能。
&a文字だけが入力可能(大文字と小文字)。
&@特殊記号を除く数字と文字が入力可能。
~a##2桁の任意の文字が入力可能、大文字に変換される
!0&9##.##.##標準の日付入力フォーマット。入力領域に0を表示し、任意の数値を入力可能。
!0&9####.##.##標準の日付入力フォーマット。入力領域に0を表示し、任意の数値を入力可能。
!0&9##年##月##日カスタム日付入力フォーマット。入力領域に0を表示し、任意の数値を入力可能。
!0&9####年##月##日カスタム日付入力フォーマット。入力領域に0を表示し、任意の数値を入力可能。
!0&9##:##時間入力フォーマット。時と分だけを入力可能。入力領域に0を表示し、任意の4桁の数値を入力。
!0&9##:##:##時間入力フォーマット。時、分、秒を入力。入力領域に0を表示し、任意の6桁の数値を入力。
!0&9##時##分##秒時分秒の文字付きの時間入力フォーマット。入力領域に0を表示し、任意の数値を入力可能。各単位の前に2桁の数値を入力。
!0&9####-####入力領域に0を表示。任意の数値を入力可能。4桁と4桁の数字をハイフンで区分。
!_&9(##) !0###-####先頭の2桁の入力領域にアンダースコアを表示しカッコで囲み、残りの入力領域に0を表示。
!0&9###-###-####入力領域に0を表示。任意の数値を入力可能。3桁と3桁と4桁の数字をハイフンで区分。
!0&9###-##-###入力領域に0を表示。任意の数値を入力可能。3桁と2桁と4桁の数字をハイフンで区分。
~"A-Z;0-9; ;,;.;-"大文字の文字と句読点。大文字の文字、数字、スペース、コンマ、ピリオド、ハイフンだけを入力可能。
&"a-z;0-9; ;,;.;-"大文字と小文字の文字と句読点。小文字の文字、数字、スペース、コンマ、ピリオド、ハイフンだけを入力可能。
&"0-9;.;-"数値。数字、小数点、ハイフン(マイナス記号)だけを入力可能。

入力フィルターの使用時には通常、対応する表示フォーマットを使用します。入力フィルターが動作するのはデータ入力時のみです。そのフィールドから外に出てしまったら、データ表示についての効力は失います。例えばソーシャルセキュリティ番号の入力フィルター(&9###-##-####)を使用した場合、これに対応するソーシャルセキュリティ番号の表示フォーマット(###-##-####)を選択すべきです。表示フォーマットが選択されていない場合、ハイフンなしの番号だけがそのフィールドに表示されます。

よく使用されるフィールドタイプ用の入力フィルターとそれに対応する表示フォーマットを以下に紹介します:

フィールドタイプ入力フィルター表示フォーマット
~a##(none needed)
郵便番号 (標準)&9#####(必要なし)
郵便番号 (拡張)&9#####-#########-####
電話番号&9###-#######-####
&9(###) ###-####(###) ###-####
&9 ###-###-#######-###-####
日付!0&9##/##/##(任意の日付フォーマット)
時間!0&9##:##(任意の時間フォーマット)

表示フォーマットは詳細フォーム、一覧フォーム、クイックレポート上で使用できます。クイックレポートでの表示フォーマットの利用については表示フォーマットの設定を参照してください。

オブジェクトプロパティの"値の範囲"テーマにある入力エリアで最大値と最小値を指定して、数値や日付時間の範囲を制限できます。

データ入力時、ユーザーが最小値より小さい値や最大値より大きい値を入力すると、警告メッセージが表示されます。4Dは入力カーソルをそのエリアに戻し、ユーザーは有効な値を入力しなければなりません。

最大値や最小値を設定するには、制限値として指定する値を入力します。制限を設定する入力エリアには適切な入力フィルターを設定します。例えば日付フィールドに最大値と最小値を設定する場合、日付入力フォーマットを設定します。

設定した値は上限と下限になります。つまりユーザーは設定された最大値と最小値を入力することができます。最小値より小さい値、あるいは最大値よりも大きい値が拒否されます。例えば最大値が15のとき、ユーザーは15を入力できますが、16は入力できません。ユーザーが入力できる値を制限するためにメソッドを使用することもできます。メソッドではより正確で有用な情報をユーザーにフィードバックできます。またデータベースの他の値に基づく制限値を設定することもできます。例えばメソッドを使用すれば顧客ごとの与信限度額を検証できます。

指定リストを使用して非連続の許可値のリストを作成することもできます。

詳細については先の指定リストセクションおよびリストの作成と変更を参照してください。

フィールドや入力可能オブジェクトにデフォルト値を割り当てることができます。デフォルト値は新規レコードが作成され、最初に表示されるときに代入されます。エリアが入力不可に設定されていなければ、デフォルト値を書き換えることができます。

プロパティリストの"値の範囲"テーマ内、デフォルト値欄に、デフォルト値として指定する値をタイプします。デフォルト値はフィールド型に対応していなければなりません。日付、時刻、シーケンス番号については、4Dが提供する記号を使用することができます。日付と時刻はシステムから取得されます。シーケンス番号は4Dが自動で生成します。自動で使用できるデフォルト値の記号は以下の通りです:

記号意味
#D本日の日付
#H現在の時刻
#Nシーケンス番号

レコード毎のユニーク番号を生成するためにシーケンス番号を使用できます。シーケンス番号は倍長整数型で新規レコード毎に生成されます。番号は1から始まり、1づつ増加します。シーケンス番号が割り当てられたレコードが削除されても、その番号は再利用されません。シーケンス番号はテーブルごとに管理されます。詳細は4DランゲージリファレンスSequence numberコマンドを参照してください。

(コンボボックス、スクロールエリア、ポップアップメニュー、タブコントロール、ドロップダウンリストなど) オブジェクトが値のリストを表示する場合、デフォルト値として使用する値のリストを定義できます。リストはフォームが表示される前にオブジェクトにロードされます。

デフォルト値のリストを受け入れるオブジェクトの場合、デフォルト値エリアがボタンになります:

このボタンをクリックすると、デフォルト値ダイアログボックスが表示されれます:


デフォルト値のリストを入力します。値は行ごとに分割されます。OKをクリックするとデフォルト値ダイアログボックスが閉じられ、プロパティリストウィンドウに戻ります。

デフォルト値ダイアログボックスにデフォルト値を入力すると、リストは自動で、オブジェクトに割り当てられた変数と同じ名前の配列にロードされます。ランゲージを使用してこの配列を参照することで、オブジェクトを管理できます。

注:

  • リストエディターで作成したリストを使用して、階層リストやタブコントロールのデフォルト値を設定することもできます。
  • メソッドを使用してデフォルト値を設定することもできます。オブジェクトにメソッドでデフォルト値を設定するためには、オブジェクトあるいはフォームメソッドをOn Loadイベントで実行するように設定し、そこで値を割り当てます。
  • リストを受け入れるオブジェクトでは、リストエディターを使用してデフォルト値リストを作成し、Load listコマンドで階層リストを作成することができます。その後"階層リスト"テーマのコマンドを使用してリストで作業を行うことができます。リストはOn LoadフォームイベントやOn Startupデータベースメソッド等でロードできます。

互換性に関する注意: このオプションはデータベースが非Unicodeモードで動作する場合のみ有効です。Unicodeモードでは設定が無視されます。機能に関する詳細は以前のバージョンの4Dドキュメントを参照してください。

4Dには複数の言語で利用可能なスペルチェッカーが含まれています (日本語は含まれません)。文字やテキスト型のフィールドや変数、および4D Writeエリアでチェックを有効にできます。

自動スペルチェックプロパティ (“入力”テーマ) を使用して、そのオブジェクトのスペルチェックを有効にします。有効にするとスペルチェックは自動で入力中、オブジェクトがフォーカスを失ったときに実行されます。

注: オブジェクトごとにSPELL CHECKINGコマンドを使用してチェックを行うこともできます。

スペルチェッカーの有効化の方法にかかわらず、未知の単語が見つかった場合は以下のダイアログボックスが表示されます:

複数のボタンが利用できます:

  • 無視: 不明な語句はそのまま残されます。
  • すべてを無視: 不明な単語はそのまま残され、このエリアの他の箇所にある同じ語句もすべてそのまま残されます。
  • 追加: 不明な語句が辞書に追加されます。したがってスペルチェック機能でその語句は検出されなくなります。
  • 変更: 不明な語句は、修正エリアに提示された語句で置き換えられます。
  • すべてを変更: 不明な語句、ならびに他の箇所にある同じ語句はすべて、修正エリアに提示された語句で置き換えられます。
  • 閉じる: 修正を行わずに、ダイアログボックスが閉じられます。

注: 閉じるボタン以外のボタンをクリックした場合には、エリアの最後までスペルチェックが続行されます。

4Dのスペルチェック機能では、フランス語、英語、ドイツ語、スペイン語の4つの辞書を使用できます。デフォルトで4Dはカレントのアプリケーション言語に対応する辞書を使用します。

しかし[#cmd id="904"/]コマンドを使用して、別言語の辞書を強制的に開くことができます。4Dではスペルチェックが受け入れるカスタマイズされた単語のリストも含め、ランゲージごとに特別な辞書を設定し使用することができます。これらの辞書の設定については付録 D: 特別な辞書を使用するを参照してください。

フォーム上のフィールドやアクティブオブジェクトにヘルプメッセージを追加して、ユーザーがデータベースを使いやすくし、生産性が向上するよう手助けすることができます。ヘルプメッセージはTipsとして表示されます。

例えばデータ入力時に日付は年、月、日をスラッシュで区切るようユーザーに指示するヘルプメッセージを作成できます。

ヘルプTipはマウスがフィールドやオブジェクトに重なった時に表示されます:

注: フィールドにはデータベースストラクチャーレベルでヘルプメッセージを結び付けることができます。この場合フィールドのヘルプTipは、そのフィールドが置かれたすべてのフォームで表示されます。詳細はUNREGISTER CLIENTの"ヘルプTip"を参照してください。同じフィールドに2つの異なるヘルプTipが結び付けられている場合、フォームレベルのヘルプが優先されます。

プロパティリストにある"ヘルプ"テーマのヘルプTipドロップダウンリストを使用してフォーム中の任意のオブジェクトにヘルプTipを結び付けることができます。以下のいずれかが可能です:

  • 既存のヘルプTipを選択する。ヘルプTipは事前にヘルプTipsエディターで定義されていなければなりません。
  • エリアに直接ヘルプメッセージを入力する。この場合XLIFFアーキテクチャーを利用することができます。ここにXLIFF参照を入力し、アプリケーション言語に対応するメッセージを表示させられます。XLIFFに関する詳細はMissingRefを参照してください。4D参照を使用することもできます (スタティックテキスト中で参照を使用する参照)。

選択あるいは入力したメッセージは、フォーム中で選択されたフィールドやオブジェクト用にヘルプTipとして表示されます。

選択したオブジェクトのヘルプTip割り当てを削除するには、プロパティリストでなしを選択します。

このプロパティは文字やテキスト型のフィールドや変数で使用できます。このプロパティを選択すると、オブジェクト中で選択した文字列の反転状態が、フォーカスを失った後も表示されるようになります。これにより、テキストスタイルを更新するようなインターフェースの実装が容易になります (マルチスタイル (リッチテキストエリア)参照)。

 
プロパティ 

プロダクト: 4D
テーマ: アクティブオブジェクトのプロパティ