2012-08-27 7 views
6

フィールドレベルの検証があるときにモーダルフォームのキャンセルを許可する最善の方法は何ですか?フィールドレベルの検証がある場合にモーダルフォームのキャンセルを許可する最善の方法は何ですか?

私は、モーダルで示されたDelphiフォームを持っています。その中にはTComboBoxes、TEdits、OkとCancelボタンがあります。これらのフィールドには、データが有効であることを確認するためのOnExitメソッドがあります。しかし、フィールドを検証せずにフォームを閉じることができるようにするには、[キャンセル]ボタンをクリックしてください。キャンセルボタンがクリックされた後、フィールドのOnExitが呼び出され、フォームを閉じるボタンのOnClickの前に検証が実行されます。このタイミングは、ユーザが放棄したいデータを修正するために望ましくない。ありがとう。

答えて

10

「フィールド終了時に」データ検証を完全に放棄しました。彼らは何をしているのかを知っているユーザーを失望させます(たとえば、誰かが別のソースからデータをコピーして現在の画面に貼り付けている場合、すべてのデータが貼り付けられている場合のみ意味をなさないそのような行動の道を歩む)。

代わりに、ユーザーが現在の画面から移動する準備ができているときに、通常は「OK」または「次へ」ボタンをクリックすると、データの検証が試行されます。

+7

妥当性検査は、間違ったデータに関する何かを叫び声を出しているメッセージダイアログであるとは限りません。それは、例えば、赤色の入力フィールドテキスト、フィールドの横にある何らかの種類の感嘆符マークアイコン、フィールドから飛び出す警告泡。すべての場合において、ユーザーが記録を保存するのを妨げるでしょう。 – TLama

+1

TLama - データが訂正されるまでOnExitイベントがユーザーをロックしない限り、あなたは正しいでしょう。 – user1595471

+1

私は@ user1595471で提案されているように全体の問題を回避する考えが好きで、これを可能にするためにエラーチェックフレームワークを変更するか、少なくともTLamaのようにユーザーにエラーがどのように表示されるかを変更することを提案します。しかし、これが容認できないと思われるなら、私は他の選択肢を探すでしょう。私の最初の考えは、ユーザー定義のメッセージを自分自身に渡して、フィールドのチェックを要求しています。私は、これはキャンセルボタンのイベントが発生し、ユーザー定義のメッセージが処理される前にフォームを閉じることができると信じています。入力に感謝します。 – user1627960

関連する問題