Как сделать OpenDialog модальным в Firemonkey? - PullRequest
4 голосов
/ 30 ноября 2011

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

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

РЕДАКТИРОВАТЬ: Ошибка исправлена ​​в обновлении 3.

1 Ответ

3 голосов
/ 01 декабря 2011

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

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

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

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

hwndOwner := 0;

На это:

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

Функция использует WindowsGetOpenFileName API-вызов, даже если он устарел в Vista и выше.Если передается дескриптор владельца, диалоговое окно является модальным, в противном случае это не так.

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

...