ドキュメントの2つのビューを持つDelphi7アプリケーションがあります(たとえば、WYSIWYG HTML編集にはWYSIWYGビューとソースビューがある場合があります-実際のアプリケーションではありません)。それらは別々のウィンドウで開くか、メインウィンドウのタブにドッキングすることができます。
個別のフォームの1つからモーダルダイアログを開くと、メインフォームが前面に表示され、ウィンドウタスクバーに選択したウィンドウとして表示されます。メインフォームがWYSIWYGビューであり、ソースビューがポップアウトされているとします。ソースビューの特定のポイントに移動し、画像タグを挿入します。画像に必要なプロパティを選択して入力するためのダイアログが表示されます。WYSIWYGビューとソースビューが重なっている場合、WYSIWYGビューが前面に表示され、ソースビューは非表示になります。ダイアログが閉じられると、ソースビューが再び表示されます。
所有者とParentWindowのプロパティを、関連するフォームに設定してみました。
dialog := TDialogForm.Create( parentForm );
dialog.ParentWindow := parentForm.Handle;
この問題を解決するにはどうすればよいですか?他に何をしようとすべきですか?
人々が私の例につまずいているように思われることを考えると、おそらく私はより良い例で試すことができます:同時に複数のファイルを開くことができるテキストエディタ。開いているファイルは、タブ(Delphi IDEなど)または独自のウィンドウにあります。ユーザーがスペルチェックダイアログまたは検索ダイアログを表示するとします。何が起こるかというと、ファイルが独自のウィンドウで編集されている場合、モーダルダイアログが表示されると、そのウィンドウはzオーダーのメインフォームの下に送信されます。ダイアログを閉じると、元のzオーダーに戻ります。
注:Delphi 7を使用していて、この問題の解決策を探している場合は、ページの下の方にある私の答えを参照して、最終的に何をしたかを確認してください。