私は、ユーザーインターフェイスとのやりとりを妨げるようなモーダルフォームをDelphiで作成しようとしていますが、他のフォームの実行は引き続き可能です。これは可能ですか?Delphiのモーダルフォームは非ブロック化できますか?
2
A
答えて
2
フォームには「実行」はありませんが、アクティブな(モーダル)フォームがある間にスレッドを使用してバックグラウンドでコードを実行できます。
3
モーダルフォームは、モーダルフォームが閉じたときにのみ返される関数ShowModal
を呼び出すことによって呼び出されます。同じスレッド、つまりUIスレッドでコードを実行する場合は、ShowModal
から呼び出す必要があります。ほとんどの場合、それは耐えられるアプローチではありません。そこから、問題のコードはUIスレッド以外のスレッドで実行されなければならないと結論づけることができます。
3
Windowsはバックグラウンドでメッセージを処理し続けるため、たとえばタイマーで発生した更新は引き続き発生します。すべてのキーボードイベントとマウスイベントがモーダルフォームに向けられているだけです。理論的には、メッセージを別のフォームに投稿して、必要に応じて「アクション」コードを追加することができます。あなたが主なスレッドでまだやっていることがたくさんあります。質問は、これがあなたが実際にやりたいことかどうかです。
2
可能ですが、お勧めしません。
これは、メインスレッドで引き続きアプリケーションがビジー状態であると言う進捗状況を示すために行っています。
ShowModalのコードを半分に分割し、repeat untilループを削除することです。
フォームを表示するために前半を呼び出すことができます。後半を呼び出してもう一度閉じることができます。
ShowModal内ループで終端されているアプリのApplication.HandleMessage ABDチェックへの呼び出しがあること
NonBlockingModalForm = TNonBlockingModalForm.Create();
try
NonBlockingModalForm.FirstHalfOfShowModal;
DoStuff;
finally
NonBlockingModalForm.SecondHalfOfShowModal;
NonBlockingModalForm.Free;
end;
ノートの線に沿って何か。
UIをうまく再生したい場合は、これを行う必要があります。
関連する問題
- 1. Delphi onshowメインフォーム/モーダルフォーム
- 2. C#モーダルフォームの前に非モーダルフォームを表示しますか?
- 3. CenterParent非モーダルフォームへの方法
- 4. Java非ブロック化HTTPサーバー
- 5. 非ブロック化ソケットがブロックされています
- 6. pythonのSysLogHandlerは非ブロックですか?
- 7. モーダルフォームからノンモーダルフォームを表示すると、モーダルフォームが閉じます
- 8. WebSocketによる非ブロック化の送信
- 9. BeginThread delphiのブロック機能
- 10. 関数をMATLABで非ブロック化する方法は?
- 11. HTTP応答が要求されたときの非ブロック化オプション
- 12. Java NIO非ブロック化SocketChannelsの書き込みと読み取り
- 13. Delphiのモーダルフォームにリリースの代わりにフリーを使用するのは安全ですか?
- 14. SQLAlchemyを非ブロックに設定できますか?
- 15. MVCコアで非同期コードをブロックすることはできますか?
- 16. Perl:非ブロック化FIFOを読む
- 17. Delphi(非OLE)用のOpenOffice.orgエクスポートコンポーネントはありますか?
- 18. メインフォームを最小化せずに子モーダルフォームを復元せずに子モーダルフォームを最小化する
- 19. DelphiでUSBストレージデバイスからrawブロックを読み取る方法は?
- 20. TensoFlowは非構造化データを学習できますか?
- 21. Springは「非Bean」フィールドを初期化できますか?
- 22. QDialogはブロックされていますが、非モーダルですか?
- 23. epollを使ってハンドラ関数を非ブロック化するには?
- 24. Windowsの匿名パイプでの非ブロック化io
- 25. SQL Serverのユニークキークラスタ化または非クラスタ化インデックスですか?
- 26. ブラウザはローカルストレージをブロックできますか?
- 27. glGetErrorはスレッドをブロックできますか?
- 28. サブプロセス出力をPythonで非ブロック化する
- 29. Qualtricsでランダム化できるブロック数に制限はありますか?
- 30. 非ブロック化IOを使用してファイルに書き込む方法は?
あなたはフォームから出てほしいものを、どこに属している場所に移動してみませんか? MVCまで行く人もいれば、自分のロジックをすべて自分のフォームに入れない限り行く。 –
この質問は私には明らかではありません。私はあなたが本当に欲しいものは何ですか?ユーザー対話またはコードの実行? –
私は、Modalフォームの全体的な設計目的は、質問を誤解していない限り、背景が相互作用しないようにすることだと思いましたか? –