Как я могу это сделать?
procedure TFMain.Button2Click(Sender: TObject);
begin
ShowMessage('Cya!!');
Application.Terminate;
end;
Есть ли способ, чтобы можно было только щелкнуть "ОК" в ShowMessage, и если я этого не сделаю, я не смогу щелкнуть что-либо еще в моем интерфейсе?
Ответ 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.