3 つのフォームを持つアプリケーションがあるとします。ワークフロー、ウィザード スタイルを通じてユーザーを導くメイン フォーム。ウィザードの特定のステップで時折表示されるモーダル ウィンドウ。3 番目の「情報」ウィンドウは、ユーザーがワークフローのどこにいるかに関係なく、いつでも表示できます。
モーダル ウィンドウがメイン フォームからフォーカスを奪うようにするにはどうすればよいですか?
メイン フレームから最も明白なInfoFrame.Create(nil).Show
ものを使用すると、モーダル フォームが表示されているときに情報ウィンドウが使用できなくなります。
興味深いことに、モーダル ウィンドウから情報ウィンドウを作成して表示すると、目的の方法で応答し、モーダル ウィンドウが閉じられた後も持続します。ただし、モーダル ウィンドウが再び表示されると、情報ウィンドウは強制的にバックグラウンドに移動し、応答しなくなります。
ShowModal
別のフォームのプロシージャが呼び出された場合でも、情報ウィンドウを常に使用できるようにするにはどうすればよいですか?
私が取り組んでいる実際のアプリケーションでは、実際には約 12 の「ワークフロー」メイン ウィンドウ (それらの多くはモーダルでもあります) から数十のモーダル フォームがありますが、情報ウィンドウは 1 つだけです (複数のインスタンスが表示される場合があります)。 ShowModal へのすべての呼び出しを別のものに変更する必要はありませんが、それが唯一のオプションである場合、呼び出しをラップまたはサブクラス化することは嫌いではありません。