通常、ShowModalを使用してダイアログを開くと、ダイアログが閉じられるまで現在のスレッドの実行が停止します。私はモーダルダイアログを表示したいが、ダイアログがまだ開いている間は現在のスレッドで実行を続ける。 「モーダル」とモーダルダイアログを非同期に開く
私は単純にモーダルダイアログが閉じられるまで、ユーザーがアプリケーションの他の形態のいずれかと相互作用しないことを意味します。
デルファイShowModal機能は、私が必要とする1つに、「モーダル」のわずかに異なる定義を提供する:
モーダルフォームは、フォームが閉じられるまで、アプリケーションを実行し続けることができないものです。
現在、私はこのようなコードを持っている:私はまだ親ウィンドウと対話することができますを除いて、私は表示されない方法
(など、それを閉じて、それを周りに移動)、
dialog.Parent:=self;
dialog.Show;
// keep doing stuff...
この作品をShowModalを使用せずに、ユーザーが親ウィンドウとやりとりするのを止めるフォーム?
これは機能しているようです。私はShowModalを2つの関数に分割しました。 ShowModalNonBlockingおよびCloseModalNonBlocking。私はコンパイルされないコードをいくつか削除しなければならなかった。私はもっと良い解決策があることを望んでいるが、これは私が今までに見つけた最良の提案である。 – awmross
私はあなたがコードを投稿できないことを知っていますが、 "split at line X"のようなヒントを投稿できますか? – Mawg
@Mawg "ShowModalNonBlocking"関数は "Show()"を呼び出して終了しました。 "CloseModalNonBlocking"は、ダイアログを無効にするためのWindowsメッセージを送信することによって開始されました。希望は助ける? – awmross