Delphi сообщение появляется за другой формой - PullRequest
8 голосов
/ 04 ноября 2011

Я использую приведенный ниже код для создания окна сообщений в Delphi 7. Однако у меня также есть другая форма на экране, для которой FormStyle имеет значение fsStayOnTop, и окно сообщения появляется за этой формой.

Есть ли способ заставить окно сообщения появиться спереди?

    if Application.MessageBox('Amessage here','Title', +MB_APPLMODAL + MB_ICONQUESTION + MB_YESNO) = IDNO then

Ответы [ 3 ]

8 голосов
/ 04 ноября 2011

Вызовите NormalizeTopMosts до отображения окна сообщения.

Используйте NormalizeTopMosts, чтобы разрешить окно сообщения или диалоговое окно, отображаемое с помощью функций Windows API (таких какMessageBox и MessageDlg) отображаются поверх самой верхней формы.В противном случае верхняя форма остается сверху и может скрывать окно сообщения.

(надеюсь, оно доступно в Delphi 7.)

Редактировать : Не уверены вотрицательный голосЕсли он намекает в направлении, что OP должен использовать собственную функцию MessageBox и установить его родительский HWND в самое верхнее окно - я бы согласился.Но, возможно, по какой-то причине это невозможно.

1 голос
/ 04 ноября 2011

В Windows.pas вы можете найти больше флагов для MessageBox():

MB_APPLMODAL = $00000000;
MB_SYSTEMMODAL = $00001000;
MB_TASKMODAL = $00002000;

Читать о них в Документация MessageBox

Вы даже можете использовать MB_TOPMOST флаг.

0 голосов
/ 04 ноября 2011

Попробуйте флаг MB_TASKMODAL вместо MB_APPLMODAL.

...