OpenDialogをFiremonkeyでモーダルに表示する方法は?
-
26-10-2019 - |
質問
ButtonClickイベントでフォームからOpenDialogを呼んでいるとき。ダイアログはモーダルとして表示されず、タスクバー(WindowsXP)にも表示されます。メインフォームに戻って、何度も開くことをクリックできます - 一度にいくつかのダイアログをポップアップします。
firemonkeyでモーダルになるためにオペンディアログを作るにはどうすればよいですか? FMのマルチプラットフォームアンチュールによりモーダルダイアログが許可されないように特別に作成されていますか?
編集: バグはアップデート3で修正されています。
解決
バグだと思います。 Firemonkeyには多くのモーダルタイプのバグがあり、うまくいけば彼らがすぐにそれらを修正することを願っています。現在、モーダルフォームでさえモーダルではありません。
あなたの問題については、私はWindowsの回避策を持っていますが、あなたはそれが好きではないかもしれません。
fmx.platform.winのtplatformwin.dialogopenfiles()メソッドで次の行を修正する必要があります。
下 with OpenFile do
変化する:
hwndOwner := 0;
これに:
hWndOwner := FmxHandleToHWND(Application.MainForm.Handle);
関数はウィンドウを利用します GetOpenFileName
APIコールは、Vistaなどで非推奨されていますが。所有者のハンドルが渡された場合、ダイアログはモーダルです。そうでない場合はそうではありません。
これは、回避策とともにqc.embarcadero.comにバグとして提出することをお勧めします。
所属していません StackOverflow