画面にEdit等を置いて画面を作成しているのですが、入力チェック(例えば年号1〜4等)をする場合、
どこのイベントでするのが一番いいのか経験の長い人に助言を頂きたく書き込みしました。
キーを押した時のイベント順序は、FormKeyDown -> EditExit -> EditKeyDown、というのは分かりました。
そこで私は今こんな感じにしています。
FormKeyDown : ファンクションキーが押された時の処理。エンターキーを次の項目に飛ぶようにする処理。
EditExit : 入力された値が正しいかチェック。正しくなければExitして抜ける。
EditKeyDown : 特殊なキー(例えばHOME押されたらウィンドウ出す等この項目特有処理)が押された時の処理。
という流れで組んでいます。
大抵の場合はこれでいけてるのですが、イベントの中で特殊な処理をすると変な動きをしたりします。
経験の長い方はどういう処理の流れにしているか教えて頂けると助かります。
よろしくお願い致します。
私の場合、入力中の入力チェックは行わず、「OK」ボタンや「次へ」ボタンのようなコミット処理でチェックします。
EditExitだと、フォーカスが離れるときのイベントなのでフォーカスが変わるようなエラー報告の場合問題が出やすいです。
EditExitでどうしてもやりたい場合は、Labelに表示するだけにするなど、フォーカスに依存しないエラー報告処理だけ行い、コミット時に再度チェックします。
にしのさん、レスありがとうございます。
コミット時にチェックを行いたいのですが、現在稼動しているシステムのバージョンアップ版を開発しているので、
古い方のシステムは入力時にチェックしているのと、エラーはウィンドウ表示して、その項目に止まっているというシステムなので変更が出来ないんです。
とりあえず、グローバル変数を持たせてExit時にチェックするしないを切り替えれるようにして、何とか無事に動くようになりました。
あまり綺麗なプログラムではありませんが・・・
ありがとうございました。
ツイート | ![]() |