在 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(更新 1)的 4 个不同安装上。
是什么导致这种情况发生,我怎样才能使预览正常工作?
编辑
当我说“它不会发生在其他样式上”时,这并没有得到彻底的证明。我是根据之前在 Delphi 10 Seattle 中编译的其他应用程序来判断的。而在现实中,实际上所有的 VCL 风格都在这样做。不使用任何 VCL 样式,一切都按预期工作。
此外,那些未显示此类行为的预构建应用程序也将这些样式嵌入并手动应用。然而,一个新的空应用程序通过 IDE 项目选项分配样式来展示此行为。
有鉴于此,我将进一步测试手动嵌入/应用样式是否真的会有所作为。
编辑 2
如前所述,我通过手动分配样式进行了一些测试。在复制了另一个答案中的代码后,在运行时关闭并重新打开样式后,突然我不再看到这种行为。所以看起来这个问题只在加载默认样式时发生。我在之前的编辑中谈到的预编译应用程序都旨在在运行时动态应用样式,而不管 IDE 中的设置如何。
编辑 3
奇怪的是,在EDIT 2之后第一次工作之后,现在我无法让它再次按预期工作。在运行时切换样式不再是“修复”这个问题。它似乎只“修复”一次。那么为什么在我们的生产应用程序中一切正常,是一个进一步调查的问题。从技术上讲,这些应用程序甚至没有嵌入其中的样式。它们实际上被嵌入到单个 DLL 中,然后由这些应用程序共享,它们的资源在运行时被提取和应用。所以我将不得不深入研究并尝试重新创建工作代码。