delphi 有什么方法可以避免隐藏的表单显示在任务栏的小窗口悬停?

mlnl4t2r  于 2023-02-04  发布在  其他
关注(0)|答案(1)|浏览(158)

这与Delphi应用程序有关,该应用程序的子窗体已显示,然后隐藏,但未释放。如果用户将鼠标悬停在(Windows 10)应用程序的任务栏"迷你视图"上,隐藏的窗体将变为可见(悬停期间)。当用户单击迷你视图将焦点切换到应用程序时,它们将隐藏。有什么方法可以避免这种情况吗?
要重新创建:
1.创建一个新的VCL表单应用程序。
1.向项目中添加一个新窗体,并将其设置为autocreate。
1.添加按钮以显示然后隐藏窗体(或使用ShowModal打开窗体)
1.运行应用程序
1.单击按钮以显示第二个窗体,然后将其关闭。
1.将鼠标悬停在应用程序任务栏按钮上以显示主窗口的迷你视图。
1.将鼠标悬停在迷你视图上,可以看到隐藏窗口出现在主窗体上。
请注意,最小化应用程序并恢复它确实"修复"了影响,直到下一次显示表单。也许这是导致它的原因或解决方案的线索?这不是一个大问题,因为它似乎不会导致任何实际问题,但它确实看起来不专业。
按照要求添加代码(不过这不会很有趣)。

program Project1;
uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.

// Only code that was added to TForm1:
procedure TForm1.Button1Click(Sender: TObject);
begin
  // Show and then hide the form or use ShowModal and close it before testing the hover.
  Form2.Show;
  Form2.Hide;
  // Form2.ShowModal;
end;

更新:如何仅使用Delphi IDE显示问题。
1.运行Delphi
1.打开任何代码文件并搜索字符串,然后使用F3,直到出现对话框"未找到搜索匹配项","从文件开头重新开始搜索"
1.关闭步骤2中的"未找到搜索匹配项"窗口。
1.将鼠标悬停在Delphi任务栏按钮上,然后将其移动到迷你预览。
1.你应该会看到"搜索匹配项未找到"窗口出现在Delphi主窗口上。我已经在柏林和东京验证过了(10.2.1)
[2023更新]此行为与Windows 10和11上系统属性、高级、性能设置中名为"最小化和最大化时动画显示窗口"的选项直接相关。关闭该选项后,上述行为不会发生。

ldxq2e6h

ldxq2e6h1#

看来Dave Olson关于这个问题是Windows版本特有的评论是正确的。这个问题似乎在Windows 10的最新版本中已经完全消失了(即使是在使用以前会显示这个问题的旧编译版本的程序时)。顺便说一句,我想知道无法重现这个问题的人是否在Windows内部程序中,并且有更新的版本。

相关问题