1

最近、モーダルフォームがときどき消えてしまう(ウィザード)という問題がありました。長いデバッグセッションの後、モーダルフォームを含むユニットの一部ではないコードの一部で未処理の例外が原因であることが判明しました。この問題は、モーダルフォームを表示するDelphiのコードが原因です。これは、 show操作をtry finallyブロックにラップし、途中でモーダルフォームを非表示にします。例外が発生すると、モーダルフォームの制御外のコードでも、例外ハンドラーは、表示されているモーダルフォームのコンテキストで例外を発生させ、前述のtry/finallyブロックをトリガーします。したがって、モーダルフォームは一見奇妙な時間に消えます。

エラーを報告するより高いレベルの例外コードがありますが、2つの理由から、モーダルフォームのコンテキスト内からエラーをトラップできるようにしたいと考えています。まず、モーダルフォームのコンテキスト内でエラーを表示することにより、不快感の少ないユーザーエクスペリエンスを提供します。次に、モーダルフォームを終了せずに、可能であればエラー回復操作を試行します。

モーダルフォームのユニットの外部でそのユニット内から発生する例外をトラップする方法はありますか?このための戦略がある場合は、キーボード入力のフォーカス、フォームの可視性、ウィンドウの状態に関する奇妙な問題を回避するために実装する必要のあるニュアンスを教えてください。これは、ほとんどのソリューションが通常使用できなくなるためです。

4

0 に答える 0