有什么办法可以避免在任务栏 mini-window hover 上显示隐藏表单?
Is there any way to avoid hidden forms being displayed on taskbar mini-window hover?
这与 Delphi 应用程序有关,该应用程序具有已显示然后隐藏但未释放的子窗体。如果用户将鼠标悬停在应用程序的 (Windows 10) 任务栏 "mini-view" 上,隐藏的表单将变为可见(在悬停期间)。当用户单击迷你视图时,它们将隐藏将焦点转移到应用程序。有什么办法可以避免这种情况吗?
重新创建:
- 创建新的 VCL Forms 应用程序。
- 向项目添加一个新表单并将其设置为自动创建。
- 添加一个按钮以显示然后隐藏表单(或使用 ShowModal 打开)
- 运行 申请
- 单击按钮显示第二个表单,然后将其关闭。
- 将鼠标悬停在应用程序任务栏按钮上以显示主 window 的迷你视图。
- 将鼠标悬停在迷你视图上,可以看到隐藏的 windows 出现在主窗体上。
请注意,最小化应用程序并恢复它 "fix" 会影响直到下一次显示表单。也许这是导致它的原因或解决方法的线索?这不是一个大问题,因为它似乎不会导致任何实际问题,但它看起来确实不专业。
按要求添加代码(但不会很有趣。)
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" window。
- 将鼠标悬停在 Delphi 任务栏按钮上,然后将其移至迷你预览。
- 您应该会看到 "Search Match Not Found" window 出现在 Delphi 主 window 上方。
我已经在柏林和东京 (10.2.1)
上验证了这一点
Dave Olson 关于此 Windows 版本特定的评论似乎是正确的。这个问题似乎在 Windows 10 的最新版本中完全消失了(即使与以前会显示该问题的程序的旧编译版本一起使用时也是如此。)顺便说一句,我想知道那些无法重现的人是否问题出在 Windows Insider Program 上并且有较新的版本。
这与 Delphi 应用程序有关,该应用程序具有已显示然后隐藏但未释放的子窗体。如果用户将鼠标悬停在应用程序的 (Windows 10) 任务栏 "mini-view" 上,隐藏的表单将变为可见(在悬停期间)。当用户单击迷你视图时,它们将隐藏将焦点转移到应用程序。有什么办法可以避免这种情况吗?
重新创建:
- 创建新的 VCL Forms 应用程序。
- 向项目添加一个新表单并将其设置为自动创建。
- 添加一个按钮以显示然后隐藏表单(或使用 ShowModal 打开)
- 运行 申请
- 单击按钮显示第二个表单,然后将其关闭。
- 将鼠标悬停在应用程序任务栏按钮上以显示主 window 的迷你视图。
- 将鼠标悬停在迷你视图上,可以看到隐藏的 windows 出现在主窗体上。
请注意,最小化应用程序并恢复它 "fix" 会影响直到下一次显示表单。也许这是导致它的原因或解决方法的线索?这不是一个大问题,因为它似乎不会导致任何实际问题,但它看起来确实不专业。
按要求添加代码(但不会很有趣。)
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" window。
- 将鼠标悬停在 Delphi 任务栏按钮上,然后将其移至迷你预览。
- 您应该会看到 "Search Match Not Found" window 出现在 Delphi 主 window 上方。 我已经在柏林和东京 (10.2.1) 上验证了这一点
Dave Olson 关于此 Windows 版本特定的评论似乎是正确的。这个问题似乎在 Windows 10 的最新版本中完全消失了(即使与以前会显示该问题的程序的旧编译版本一起使用时也是如此。)顺便说一句,我想知道那些无法重现的人是否问题出在 Windows Insider Program 上并且有较新的版本。