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

Mar*_*rkF 5 delphi delphi-10.1-berlin delphi-10.2-tokyo

这与具有子窗体的Delphi应用程序有关,该子窗体已显示然后隐藏但未释放。如果用户将鼠标悬停在应用程序的(Windows 10)任务栏“迷你视图”上,则隐藏的窗体将变得可见(在悬停期间)。当用户单击迷你视图以将焦点更改为时,它们将隐藏。应用程序。有什么办法可以避免这种情况?

重新创建:

  1. 创建一个新的VCL窗体应用程序。
  2. 将新窗体添加到项目并将其设置为自动创建。
  3. 添加一个按钮以显示然后隐藏表单(或使用ShowModal打开它)
  4. 运行应用程序
  5. 单击按钮显示第二个窗体,然后将其关闭。
  6. 将鼠标悬停在应用程序任务栏按钮上可以显示主窗口的迷你视图。
  7. 将鼠标悬停在迷你视图上,可以看到隐藏的窗口出现在主窗体上。

请注意,最小化应用程序并还原它可以“修复”影响,直到下次显示表单为止。也许这是导致问题的线索或解决方法的线索?这并不是一个大问题,因为它似乎并没有引起任何实际问题,但是看起来确实不专业。

根据要求添加代码(但是,这不会很有趣。)

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;
Run Code Online (Sandbox Code Playgroud)

更新:如何仅使用Delphi IDE显示问题。

  1. 运行德尔福
  2. 打开任何代码文件并搜索字符串,然后使用F3直到出现对话框“找不到搜索匹配项”,“从文件开头重新开始搜索”
  3. 关闭第2步中的“找不到搜索匹配项”窗口。
  4. 将鼠标悬停在Delphi任务栏按钮上,然后将其移至迷你预览。
  5. 您应该会在Delphi主窗口上方看到“找不到搜索匹配项”窗口。我已经在柏林和东京(10.2.1)对此进行了验证

Mar*_*rkF 0

戴夫·奥尔森 (Dave Olson) 关于这是 Windows 版本特定的评论似乎是正确的。这个问题似乎在 Windows 10 的最新版本中完全消失了(即使与以前显示该问题的较旧编译版本的程序一起使用也是如此。)顺便说一句,我想知道无法重现该问题的人是否在Windows Insider 计划并有更新的版本。