gpt4 book ai didi

delphi - 具有 VCL 样式的 TComboBoxEx : Borders flicker

转载 作者:行者123 更新时间:2023-12-03 15:50:23 25 4
gpt4 key购买 nike

我正在使用Delphi XE3。当使用自 Delphi XE2 以来可用的自定义样式(例如 Carbon)时,将鼠标移到 TComboBoxEx 控件的边框上(MouseExit/Enter)时,会出现明显的白色闪烁。

重现步骤:创建一个新的 VCL Forms 应用程序,将 TComboBoxEx 放在表单上,​​选择例如项目选项中的 Carbon --> Application\Appearance 并启动应用程序

这是一个已知的问题/错误吗?是否有已知的解决方案?

谢谢

最佳答案

此边框闪烁问题不是使用 Delphi VCL 样式的产物。
(不使用VCL样式也可以观察到同样的问题)

罪魁祸首是 Desktop Window Manager这是
Windows 视觉样式和主题的重要组成部分。

您之所以会看到此问题,而其他人可能不会,是因为您在某个时候更改了默认 Windows 主题(aero 主题),或者您更改了所选主题的特定视觉效果属性。

您可能还有意或无意地禁用了桌面窗口管理器,因为它作为 Windows 服务运行。

更准确地说,如果您启用桌面合成功能,该问题就可以解决。
此功能仅在 Aero 主题中可用(默认),但在 BasicClassic 中不可用,但有时它可能会出现即使不可用也可用。

控制面板 --> 系统 --> 高级系统设置 --> 高级 --> 性能设置 --> 视觉效果

enter image description here


When desktop composition is enabled, individual windows no longer draw directly to the screen or primary display device as they did in previous versions of Windows. Instead, their drawing is redirected to off-screen surfaces in video memory, which are then rendered into a desktop image and presented on the display.

正如您可能已经猜到的,此函数的功能基本上是充当缓冲区
,它以一种非常简洁的方式解释了关闭此选项时边框闪烁的原因。

重要事实

只有当您当前的主题是 Aero 主题并使用 Windows Visual Styles 时,才能启用桌面合成功能。 .(默认情况下为每个 Aero 主题启用)

Aero 主题中默认启用视觉样式,您可以通过确保在性能设置中启用在 Windows 上使用视觉样式功能来检查它是否已启用。当经典或基本主题生效时,桌面合成功能永远不会发挥作用,也无法启用。 (自 Windows 8 起经典主题已被弃用)

有时在 Windows 7 中,即使使用基本或经典主题,桌面合成功能也会在性能选项中显示出来,但不要被愚弄,这是一个内部错误。

重现此错误的步骤:

  1. 从默认的 Windows Aero 主题开始
  2. 按照上述方式进入性能设置
  3. 从列表中取消选中桌面组合
  4. 将鼠标悬停在 TComboBoxEx 的边框上,它现在应该闪烁为你进入/离开。
<小时/>

但是如果我取消选中在 Windows 上使用视觉样式复选框,会发生什么情况?为什么这可以解决闪烁问题?

这将导致桌面窗口管理器 (DWM) 禁用所有 Windows 控件的主题。这意味着将使用较旧的渲染样式来绘制控件,而不是使用较新的 Aero 渲染样式。

您可以使用以下方法关闭单个控件的视觉样式,而无需全局关闭它SetWindowTheme(Handle, nil, nil)

这也是禁用视觉样式时解决 TComboBoxEx 边框闪烁问题的原因。还值得一提的是,自 Windows 8 以来,您无法再禁用视觉样式,因为正如我所说,经典主题已被弃用。

<小时/>

关于解决方案,我认为您确实没有太多选择。考虑到用户在修改 Windows 主题的视觉效果方面有多大的自由度,这种事情必然会发生。至少您可以确定这个问题不会发生在默认的 Windows 主题上。

关于delphi - 具有 VCL 样式的 TComboBoxEx : Borders flicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17525994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com