当另一个表单以模态方式显示时,如何制作未禁用的表单?

时间:2012-10-18 11:08:58

标签: delphi delphi-xe vcl

我有一个实用程序对话框(非模态和保持在顶部),在使用应用程序时应始终可以访问(想想在使用应用程序时可用于记笔记的对话框)即使显示模态对话框

无法更改应用程序的其余部分。

有可能吗?我该怎么办呢?

1 个答案:

答案 0 :(得分:16)

调用ShowModal时,将禁用所有现有顶级窗口。这就是模态的工作方式。如果您有一个合理的交互窗口,您只需要再次启用它。

例如,您可以将其添加到实用程序窗口:

type
  TMyUtilityForm = class(TForm)
  protected
    procedure WMEnable(var Message: TWMEnable); message WM_ENABLE;
  end;
....
procedure TMyUtilityForm.WMEnable(var Message: TWMEnable);
begin
  if not Message.Enabled then
    EnableWindow(Handle, True);
  inherited;
end;

这将确保永远不会禁用您的实用程序窗口。