这适用于具有子窗体的Delphi应用程序,该子窗体已显示然后隐藏但未释放 . 如果用户将鼠标悬停在应用程序的(Windows 10)任务栏“迷你视图”上,隐藏的表单将变为可见(在悬停期间) . 当用户单击迷你视图以将焦点更改为时,它们将隐藏应用程序 . 有什么方法可以避免这种情况吗?
要重新创建:
-
创建一个新的VCL表单应用程序 .
-
向项目添加新表单并将其设置为自动创建 .
-
添加一个按钮以显示然后隐藏表单(或使用ShowModal打开它)
-
运行应用程序
-
单击按钮显示第二个表单,然后将其关闭 .
-
将鼠标悬停在应用程序任务栏按钮上以显示主窗口的迷你视图 .
-
将鼠标悬停在迷你视图上,看到隐藏的窗口显示在主窗体上 .
请注意,最小化应用程序并恢复它会“修复”该影响,直到下次显示表单为止 . 也许这是导致它的原因或解决方法的线索?这不是一个大问题,因为它似乎没有引起任何实际问题,但它确实看起来不专业 .
按要求添加代码(但这不会非常有趣 . )
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,直到获得对话框"Search Match Not Found","Restart search from beginning of the file"
-
从步骤2关闭"search match not found"窗口 .
-
将鼠标悬停在Delphi任务栏按钮上,然后将其移动到迷你预览 .
-
您应该看到"Search Match Not Found"窗口出现在Delphi主窗口上方 . 我在柏林和东京证实了这一点(10.2.1)
1 回答
似乎Dave Olson关于这个特定于Windows版本的评论是正确的 . 在Windows 10的最新版本中,这个问题似乎已经完全消失了(即使与之前显示该问题的旧程序编译版程序一起使用 . )另外,我想知道无法重现问题的人是否在Windows Insider程序并有更新的版本 .