ハッピーユーザーインターフェイス キーイベントハンドリング その2(4D v16)

リストボックスのキーイベントハンドリング(4D v16)

ハッピーUIを目指して実装中の会計ソフトで、キーイベントをハンドリングしてみたことを報告します。

エディットフィールド、リストボックスのリストで編集中の列、で検証しました。主役は次の2つのイベントです。これらをプロパティリストでチェックしておいてください。

On Before Keystroke
On After Keystroke

キーボードのあるキーが押されたとき、これらの2つのイベントが発生します。
キーが押される前の状態でOn Before Keystrokeが発生、、キーが押されたあとの状態でOn After Keystrokeが発生します。
それぞれのイベントでGet edit textを使って文字列を取得すると、キーイベント発生前の文字列、発生後の文字列をそれぞれ取得することができます。
入力されようとしているキーはKeystrokeで取得します。

Before Keystrokeを使ってKeystroke、を取得し、ある特定のキーをフィルタにかけることができます。

□ やりたいこと
あるフィールドに入ったあとで、

・キーボードが押されたら、数値しか受け付けない(キーフィルタ機能)
・数字の文字列が登録されていたら、別フィールドに対応する値を表示(別のフィールド移動機能)
・登録されている値がわからない場合に、値を選択するインタフェースを提供(ダイアログ表示機能)

会計ジロウでは会計ジローの例を見てみましょう。
科目コードには数字とハイフンだけを入力可にして、他の文字を無視します。(キーフィルタ機能)科目コードが登録済みであれば、科目名を別のフィールドに表示します。科目コードがわからない場合に備えて、登録されている科目コードの一覧を表示して選択できるようにもしたいですね。

ここでは、キー「h」(helpの頭文字)をタイプされたときに科目コードの一覧を表示するようにします。科目コードの数字を入力されている最中に突然「h」を押すと、ダイアログが表示されて科目一覧で選択できる、というシナリオです。

このようにヘルプ画面を表示する操作としては、コマンドキーやコントロールキーとキーの組み合わせもありまして、これらをモディファイアと呼びますが、この話はまた別の機会にします。

続きはこちら