質問

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にバグとして提出することをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top