如何强制用户只在一个活动窗口中单击按钮而无法单击其他窗口中的内容?

时间:2013-04-08 07:16:32

标签: delphi

我有一个小问题。

我认为必须有一个简单的方法,但我找不到关键字,所以请教我。


以下是问题:

例如,默认的ShowMessage弹出一个带“OK”按钮的窗口,然后程序会在您单击“确定”之前暂时停止。

这是有道理的,但问题是,在单击“确定”之前,您仍然可以与其他对象进行交互。

这肯定会导致这样的问题:

var
  Count: Integer; //initial it to 1

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(Count));
  Inc(Count);
end;

通过不关闭消息框,程序始终停在同一位置,变量保持不变。

如何锁定弹出窗口以便无法与其他对象进行交互?(如果您这样做,系统会强制您将焦点转回弹出窗口)

是否可以使用ShowMessage实现这一目标?


如果我能得到一些提示,将会有所帮助。

非常感谢。


编辑: 使用单位QDialogs.ShowMessage版本会导致非模态问题。小心那些你不熟悉的单位大声笑。

1 个答案:

答案 0 :(得分:0)

ShowMessage显示模式对话框。换句话说,它会在对话框显示时禁用其拥有的窗口。因此,您无法与应用中的其他窗口进行交互。 ShowMessage已经做了你想做的事。

如果您在对话框显示时发现可以与应用程序中的其他窗口进行交互,那么您必须将窗口所有权设置错误。