Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Delphi 7 - ShowMessage, чтобы оставаться сверху и не иметь возможности щелкнуть другие окна приложений, если вы не нажмете кнопку "ОК" в сообщении

Автор вопроса: user3211668Ответов: 2

Как я могу это сделать?

procedure TFMain.Button2Click(Sender: TObject);
begin
ShowMessage('Cya!!');
Application.Terminate;
end;

Есть ли способ, чтобы можно было только щелкнуть "ОК" в ShowMessage, и если я этого не сделаю, я не смогу щелкнуть что-либо еще в моем интерфейсе?

delphidelphi-7

Ответы

Ответ 1 · рейтинг 2 · Stijn Sanders

Я думаю, вы ищете флаг MB_SYSTEMMODAL на MessageBox. Вместо ShowMessage вызовите MessageBoxнепосредственно, например:

MessageBox(Application.Handle,'Cya!!',PChar(Application.Title),MB_OK or MB_ICONINFORMATION or MB_SYSTEMMODAL);

Ответ 2 · рейтинг 3 · David Heffernan

Нет поддерживаемого способа показать окно, которое препятствует взаимодействию с другими приложениями.

Вы можете использовать ShowMessage, чтобы отобразить модальное диалоговое окно, которое всегда будет отображаться самым верхним в вашем приложении и модальность которого покрывает все остальные окна в вашем приложении. То есть пользователь не может взаимодействовать с другими окнами в вашем приложении, пока отображается окно сообщения. Это максимальное количество модальностей, поддерживаемых системой.

Вы можете создать модальное диалоговое окно со свойством "Показать сверху". Вы не можете запретить пользователю взаимодействовать с другими приложениями, но вы можете убедиться, что ваше окно всегда находится поверх окна, с которым хочет работать пользователь. Уделите минутку тому, чтобы подумать, как пользователь отреагирует на то, что ваше приложение сделает это.

Если вы решите, что хотите это сделать, вы можете использовать MessageBox с MB_SYSTEMMODAL. Или вы можете создать свою собственную форму (или использовать CreateMessageDialog) и установить ее свойство show on top (установить FormStyle на fsStayOnTop) перед вызовом ShowModal.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы