在 Windows 11 Delphi 12.1 中,我有一个只有一个按钮的简单 Delphi VCL 应用程序:
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.Minimize;
ShowMessage('Test');
Application.Restore;
end;
不幸的是,应用程序的窗体无法恢复。只有单击任务栏图标后,窗体才会恢复。
通话结束后,如何以编程方式恢复表单ShowMessage
?
编辑:
与此同时,我发现了一个非常简单的解决方案:
procedure TForm1.Button1Click(Sender: TObject);
begin
//Application.Minimize;
Application.MainForm.Visible := False;
ShowMessage('Test');
Application.MainForm.Visible := True;
//Application.Restore;
end;
但是,对话框显示时任务栏图标会消失ShowMessage
。如何避免这种情况?
尝试使用表单的
WindowState
属性:这是因为
Application.MainFormOnTaskbar
默认情况下为 True。您正在隐藏/显示拥有任务栏按钮的窗口,这就是按钮也会隐藏/显示的原因。您必须在调用之前
Application.MainFormOnTaskbar = False
在主文件中进行设置。这将使窗口成为任务栏按钮的所有者。它还应该解决/的行为。.dpr
Application.Run()
Application
Application.Minimize()
Application.Restore()
但是,这样做实际上会使 VCL 的窗体窗口管理行为与 Vista 之前的行为类似,这可能会导致 Vista+ 中本
MainFormOnTaskbar=True
应解决的其他副作用。因此,请非常小心。另一种方法是简单地将表单窗口移出屏幕,然后将其移回。
您可以改用表单
Hide()
和Show()
方法: