Delphi 7 - ShowMessage保持领先,不能单击其他Windows应用程序,除非你按“确定”''消息中的按钮

时间:2014-03-21 11:38:59

标签: delphi delphi-7

我该怎么做?

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

有没有办法只能点击ShowMessage中的“确定”,如果我不能点击界面中的任何其他内容?

2 个答案:

答案 0 :(得分:3)

没有受支持的方式来显示阻止与其他应用程序交互的窗口。

您可以使用ShowMessage来显示模式对话框,该对话框始终显示在应用程序的最顶层,其模态涵盖应用程序中的所有其他窗口。也就是说,在显示消息框时,用户无法与应用程序中的其他窗口进行交互。这是系统支持的最大模态量。

您可以创建一个在top属性上显示的模式对话框。您无法阻止用户与其他应用程序交互,但您可以确保您的窗口始终位于用户想要使用的窗口之上。现在花一点时间考虑用户如何对您的应用程序做出反应。

如果您决定要这样做,可以将MessageBoxMB_SYSTEMMODAL一起使用。或者,您可以创建自己的表单(或使用CreateMessageDialog)并在调用FormStyle之前将其显示在top属性上(将fsStayOnTop设置为ShowModal)。

答案 1 :(得分:2)

我认为你正在寻找MessageBox上的MB_SYSTEMMODAL旗帜。而不是ShowMessage,请直接致电MessageBox,如下所示:

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