ダイアログのユーザー入力の検証に失敗したときに呼び出すユーティリティルーチンがあります。問題のコントロールにピントを合わせ、ビープ音を鳴らし、ユーザーに適切なメッセージを表示します。問題のコントロールが隠されていない限り、これはうまく機能します。これを、関連するコントロールが何らかの折り畳み可能なグループボックス(おそらくネストされている)の子である状況に適応させる必要があります.SetFocusを呼び出す前に、「祖先」ボックスが展開されていることを確認する必要があります。エラー報告ルーチンに折りたたみ可能なコンポーネントに関する入れ子の子コントロールが表示されていることを確認してください
- ビルド知識: は今、私はいくつかの可能性があります。私はルーチンがむしろ一般的にとどまるべきであるので、それを避けたいと思います。
- SetFocusの前に(またはその代わりに)呼び出すことができるコールバックを渡します。これは、すべての関連する場所でコールバックを渡すことを忘れてはいけないので、エラーが発生しやすくなります。しかし、私はそのようなことを知らない「あなたとあなたの子コントロールが表示されていることを確認してください」のコンテナコントロールに指示します(おそらくのTWinControl中)
- 私のお気に入りのソリューションは、おそらくイベント(またはoverrideable法)になります。私はこのような状況を扱うことができる方法を
任意のアイデア?私の意見で
私は「保存」を押すと、突然拡大/移動を開始する形式を中心にガジェット場合FWIWは、ユーザーとして、私はかなり驚くだろう。代わりに通知が必要です。ちょうど私の見解... –
私は知らない。アプリが「あなたは無効なデータを入力していますが、現在あなたが探しているコントロールがどこにあるのか知っていますが、あなたには表示されません」と告げると、私は迷惑になるだろうと思います。 :-) –
Sertacにはポイントがあります!選択を変更したり、木を広げたり、物を動かしたりすると、ユーザーは「文脈を失う」ことになります。そのようなときに、「何か、どこですか」という瞬間があります。より良いアイデアは、データが隠されようとしているときにデータを検証することです。ユーザはまだ手元にあるタスクに集中しています。たとえば、PageControlのOnChangingイベントで現在のTabSheetのコントロールを検証し、問題がある場合は変更をブロックします。 –