Delphi - обнаружение, если мое приложение имеет открытый модальный диалог - PullRequest
2 голосов
/ 22 июля 2010

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

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

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

Ответы [ 3 ]

4 голосов
/ 22 июля 2010
3 голосов
/ 22 июля 2010

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

if not IsWindowEnabled(MyMainWindow.Handle) then

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

2 голосов
/ 22 июля 2010

использование AnyPopup () функция

О GetLastActivePopup ().Может возвращать значение, совпадающее с параметром hWnd, когда

  • Окно, идентифицированное hWnd, было самым последним активным.
  • Окно, идентифицированное hWnd, не имеет никаких всплывающих окон.
  • Окно, идентифицируемое hWnd, не является окном верхнего уровня или принадлежит другому окну.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...