4

ButtonClick イベントでフォームから OpenDialog を呼び出しているとき。ダイアログはモーダルとして表示されず、タスクバーにも表示されます (WindowsXP の場合)。メイン フォームに戻って [開く] を何度もクリックすると、一度にいくつかのダイアログが表示されます。

Firemonkey で OpenDialog をモーダルにするにはどうすればよいですか? FM のマルチプラットフォーム アンチャーのために、モーダル ダイアログが許可されないように特別に作成されていますか?

編集:このバグは Update 3 で修正されています。

4

1 に答える 1

3

バグだと思います。FireMonkey には多くのモーダル タイプのバグがあり、すぐに修正されることを願っています。現在、モーダル フォームでさえモーダルではありません。

あなたの問題については、Windows 用の回避策がありますが、気に入らないかもしれません。

FMX.Platform.Win の TPlatformWin.DialogOpenFiles() メソッドの次の行を修正する必要があります。

変更with OpenFile do中:

hwndOwner := 0;

これに:

hWndOwner := FmxHandleToHWND(Application.MainForm.Handle);

GetOpenFileNameこの関数は、 Vista 以降では廃止されていますが、Windows API 呼び出しを利用しています。オーナー ハンドルが渡された場合、ダイアログはモーダルになり、それ以外の場合はモーダルになりません。

これを回避策とともにバグとして qc.embarcadero.com に送信することをお勧めします。

于 2011-11-30T23:57:14.957 に答える