ダイアログでのユーザー入力の検証が失敗したときに呼び出すユーティリティルーチンがあります。問題のあるコントロールにフォーカスを設定し、ビープ音を鳴らして、ユーザーに適切なメッセージを表示します。これは、問題のあるコントロールが非表示になっていない限り、うまく機能します。ここで、関連するコントロールがある種の折りたたみ可能なグループボックス(場合によってはネストされている)の子である状況にこれを適応させる必要があり、SetFocusを呼び出す前に「祖先」ボックスが展開されていることを確認する必要があります。
今、私にはいくつかの可能性があります:
- 折りたたみ可能なコンポーネントに関する知識をエラー報告ルーチンに組み込みます。ルーチンはむしろ一般的なままでなければならないので、私はそれを避けたいと思います。
- SetFocusの前(または代わりに)に呼び出すことができるコールバックを渡します。関連するすべての場所でコールバックを渡すことを忘れないようにする必要があるため、これはエラーが発生しやすくなります。
- 私のお気に入りの解決策は、おそらくコンテナコントロールに「あなたとあなたの子コントロールが表示されていることを確認してください」というイベント(またはオーバーライド可能なメソッド)(おそらくTWinControl)ですが、そのようなことはわかりません。
この状況にどのように対処できるかについてのアイデアはありますか?