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

重新创建:

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

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

    根据要求添加代码(但是,这不会很有趣。)
    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来显示问题。
  • 运行Delphi
  • 打开任何代码文件并搜索字符串,然后使用F3直到出现对话框“未找到搜索匹配项”,“从文件开头重新开始搜索”。
  • 关闭步骤2中的“未找到搜索匹配项”窗口。
  • 将鼠标悬停在Delphi任务栏按钮上,然后将其移至迷你预览。
  • 您应该会在Delphi主窗口上方看到“未找到搜索匹配项”窗口。
    我已经在柏林和东京(10.2.1)
  • 上对此进行了验证

    最佳答案

    似乎Dave Olson对此的评论是Windows版本特定的,这是正确的。这个问题似乎在Windows 10的最新版本中已经完全消失(即使与以前显示该问题的较早版本的程序一起使用时也是如此)。顺便说一句,我想知道那些无法重现该问题的人是否还在Windows Insider程序,并且具有较新的版本。

    10-07 19:21
    查看更多