在Windows 10上使用Delphi 10 Seattle,以及Windows 10 Dark VCL Style。当窗口处于正常状态时,将鼠标悬停在任务栏图标上会显示缩略图中的完整窗口。但是,如果我最小化我的应用程序,则将鼠标悬停在任务栏图标上仅显示缩略图中的标题栏。此外,如果我将鼠标悬停在缩略图上,则窗口预览也只显示标题栏,没有其他内容。如果我将窗户恢复到自然状态,一切都会正常工作。
我确定它与特定的VCL风格“Windows 10 Dark”有关,因为其他VCL样式不会这样做。实际上,在根本不使用VCL样式的情况下,预览仅显示表单的客户区域,并且根本不显示标题栏。但是使用这种风格,我只能看到标题栏。
这是空白表格,仅 应用了“Windows 10 Dark”样式,无代码:
当窗口处于正常状态时,Aero Peek显示正常:
当它处于最小化状态时,只显示标题栏:
当鼠标悬停在最小化的缩略图上时,也只显示标题栏:
正如您所看到的,这完全违背了Aero Peek的目的。看起来有些东西导致它恢复到古老的Windows 3.1最小化窗口样式。
我安装了vcl-style-utils
库并尝试了Vcl.Styles.Fixes
单元,但仍然没有运气。确认此行为发生在Delphi 10 Seattle(Update 1)的4个不同安装上。
导致这种情况发生的原因是什么?如何使预览正常工作?
修改
当我说“它没有发生在其他风格上”时,这并未得到彻底证实。我根据之前在Delphi 10 Seattle编译的其他应用程序进行判断。实际上,实际上所有 VCL样式都是这样做的。不使用任何VCL样式,一切都按预期工作。
要添加,那些未显示此类行为的预构建应用程序也会手动嵌入和应用这些样式。然而,新的空应用程序通过IDE项目选项分配样式来表现出这种行为。
鉴于此,我将进一步测试手动嵌入/应用样式是否确实有所作为。
编辑2
如上所述,我通过手动分配样式进行了一些测试。在关闭之后复制并在运行时返回样式后,突然我不再看到这种行为。因此,只有在加载默认样式时才会出现此问题。我在之前的编辑中谈到的预编译应用程序都设计为在运行时动态应用样式,而不管IDE中设置的样式。
编辑3
奇怪的是,在 EDIT 2 之后第一次工作之后,现在我再也无法按预期工作了。在运行时切换样式不再“修复”这个。它似乎只是“修复”了一次。那么为什么一切在我们的生产应用中都能正常工作,这是一个需要进一从技术上讲,这些应用程序甚至没有嵌入其中的样式。它们实际上嵌入到单个DLL中,然后由这些应用程序共享,并且它们的资源在运行时被提取和应用。所以我将不得不深入挖掘并尝试重新创建工作代码。