Delphi – определение того, открыто ли в моем приложении модальное диалоговое окно

StackOverflow https://stackoverflow.com/questions/3306260

Вопрос

У меня есть приложение Delphi 2006, которое отображает модальное диалоговое окно предупреждения при обнаружении ошибки.Поскольку проверка на наличие ошибки выполняется в обработчике простоя, диалоговое окно может появиться поверх другого модального диалогового окна, если оно отображается.Это может привести к запутанной ситуации для пользователя, когда основная форма приложения не получает фокус после закрытия диалогового окна предупреждения, поскольку это еще одно скрытое модальное диалоговое окно.

Я хотел бы отложить всплывающие окна с оповещениями, пока в приложении открыты модальные диалоговые окна.

Я попробовал GetLastActivePopup (MyMainWindow.Handle), но, похоже, он все время возвращает ненулевое значение.

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

Решение

Другие советы

Просто протестируйте

if not IsWindowEnabled(MyMainWindow.Handle) then

Это также позаботится о ситуациях, когда диалог, отличный от Delphi, действует модально, как в windows.MessageBox(Handle....или общий диалог показывает (т.TOpenDialog).

Использование Функция Anypopup () .

О getlastictivePopup ().Это может возвращать значение точно так же, как параметр HWND, когда

    .
  • Окно, идентифицированное HWND, было совсем недавно активным.
  • Окно, идентифицированное HWND, не владеет всплывающими окнами.
  • Окно идентифицирует HWND, не является окном верхнего уровня, или он принадлежит другому окну.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top