【问题标题】:Delphi TListView DoubleBuffered doesn't work if you are using Styles如果您使用样式,Delphi TListView DoubleBuffered 不起作用
【发布时间】:2012-09-22 12:05:56
【问题描述】:

当您启用应用程序样式并将 TListView 的 DoubleBuffered 属性设置为 True 时,它​​不起作用。当您更新列表项及其子项时,它会闪烁。有人对此有解决方案吗?

我其实很喜欢 Styles,但是仍然存在技术问题。现在我不能相信样式了。

谢谢, K.

【问题讨论】:

  • 你是说VCL样式?不要使用双缓冲。任何地方。它总是会导致样式和主题出现问题。列表视图的最佳方法是虚拟模式。
  • 在虚拟模式下,总是只渲染控件内容的可见部分,所以如果你在最后一个可见节点下添加新项目,则不会重新绘制。
  • 不要调用刷新。您可以通过调用UpdateItems 使您更改的项目无效。如果它仍然闪烁,则提交 QC 报告并停止使用 VCL 样式。他们很烂。
  • 嗯,XE2 VCL 样式是一个错误工厂。他们将修复 XE3 中的许多 VCL 样式错误。不知道它是否对你有帮助。
  • 在 Delphi XE3(v.17.0.4625.53395 试用版)中运行一些测试后,我可以说以下内容。使用 10 毫秒更新计时器(我知道极端更新速率)我可以说我见过的唯一真正 smooth 显示使用双缓冲区的 Windows 风格(不管我使用的是 Windows 还是 VCL 风格,虚拟或非虚拟模式)。因此,作为您的问题的解决方法,我建议您对 VCL 样式实现双缓冲区(您可以通过覆盖样式挂钩来实现)忽略上述 cmets 说的不好关于双缓冲区:-)

标签: delphi delphi-xe2 vcl-styles


【解决方案1】:

这个帖子末尾的建议似乎有效:
https://forums.embarcadero.com/thread.jspa?messageID=849037

只需从 StyleElements 中移除 seClient 并手动将背景调整为样式颜色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-19
    • 2016-05-09
    • 2019-09-20
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    相关资源
    最近更新 更多