有没有办法避免在任务栏迷你窗口悬停时显示隐藏的表单?

时间:2017-08-05 15:18:37

标签: delphi delphi-10.1-berlin delphi-10.2-tokyo

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

重新创建:

  1. 创建一个新的VCL表单应用程序。
  2. 向项目添加新表单并将其设置为自动创建。
  3. 添加一个按钮以显示然后隐藏表单(或使用ShowModal打开它)
  4. 运行应用程序
  5. 单击按钮以显示第二个表单,然后将其关闭。
  6. 将鼠标悬停在应用程序任务栏按钮上以显示主窗口的迷你视图。
  7. 将鼠标悬停在迷你视图上,看到隐藏的窗口显示在主窗体上。
  8. 请注意,最小化应用程序并恢复它确实"修复"直到下次显示表单时的影响。也许这就是造成它的原因或解决方法的线索?这不是一个巨大的问题,因为它似乎不会导致任何实际问题,但它确实看起来不专业。

    按要求添加代码(但它不会非常有趣。)

    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
    2. 打开任何代码文件并搜索字符串然后使用F3,直到您收到对话框"搜索未找到匹配","从文件开头重新开始搜索"
    3. 关闭未找到的搜索匹配"第2步的窗口。
    4. 将鼠标悬停在Delphi任务栏按钮上,然后将其移至迷你预览。
    5. 您应该会看到"未找到搜索匹配"窗口出现在Delphi主窗口上方。 我在柏林和东京(10.2.1)
    6. 验证了这一点

1 个答案:

答案 0 :(得分:0)

看来Dave Olson关于这个特定于Windows版本的评论是正确的。在最新的Windows 10版本中,这个问题似乎已经彻底消失了(即使与旧的编译版本的程序一起使用,以前也会出现问题。)顺便说一句,我想知道那些无法重现问题的人在Windows Insider计划中有更新的版本。