Вопрос

Когда я вызываю OpenDialog из своей формы в событии ButtonClick.Диалоговое окно не отображается как модальное и также отображается на панели задач (в WindowsXP).Я могу вернуться к основной форме и нажимать Открыть снова и снова - появляется сразу несколько диалоговых окон..

Как мне сделать OpenDialog модальным в Firemonkey?Специально ли это сделано для того, чтобы никакие модальные диалоги не были разрешены из-за мультиплатформенной структуры FM?

Редактировать: Ошибка исправлена в обновлении 3.

Это было полезно?

Решение

Я думаю, это ошибка.В FireMonkey много ошибок модального типа, и, надеюсь, они будут исправлены в ближайшее время.В настоящее время даже модальные формы не являются модальными.

Для решения вашей проблемы у меня есть обходной путь для Windows, но вам это может не понравиться.

Вам необходимо исправить следующую строку в методе TPlatformWin.DialogOpenFiles() в FMX.Platform.Win.

Под with OpenFile do изменение:

hwndOwner := 0;

К этому:

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

Эта функция использует Windows GetOpenFileName Вызов API, даже несмотря на то, что он устарел в Vista и выше.Если передается дескриптор владельца, диалоговое окно является модальным, в противном случае это не так.

Возможно, вы захотите отправить это как ошибку в qc.embarcadero.com вместе с обходным путем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top