Delphi TListView双缓冲存储器';如果使用样式,则无法工作

Delphi TListView双缓冲存储器';如果使用样式,则无法工作,delphi,delphi-xe2,vcl-styles,Delphi,Delphi Xe2,Vcl Styles,当您启用应用程序样式并将TListView的Double Buffered属性设置为True时,它将不起作用。当您更新listitems及其子项时,它会闪烁。有人能解决这个问题吗 实际上我喜欢这种风格,但是仍然存在技术问题。现在我不能相信风格 谢谢, K.这篇文章结尾的建议似乎有效: 只需从StyleElements中删除seClient并手动将背景调整为样式颜色。您是指VCL样式吗?不要使用双缓冲。在任何地方它总是会导致风格和主题方面的问题。列表视图的最佳方法是虚拟模式。使用虚拟模式时,始终

当您启用应用程序样式并将TListView的Double Buffered属性设置为True时,它将不起作用。当您更新listitems及其子项时,它会闪烁。有人能解决这个问题吗

实际上我喜欢这种风格,但是仍然存在技术问题。现在我不能相信风格

谢谢,
K.

这篇文章结尾的建议似乎有效:


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

您是指VCL样式吗?不要使用双缓冲。在任何地方它总是会导致风格和主题方面的问题。列表视图的最佳方法是虚拟模式。使用虚拟模式时,始终只呈现控件内容的可见部分,因此如果要在最后一个可见节点下添加新项,则不会进行重新绘制。不要调用刷新。通过调用
UpdateItems
,您可以仅使更改的项目无效。如果仍然闪烁,则提交QC报告并停止使用VCL样式。它们很烂。XE2 VCL样式是一个bug工厂。他们将修复XE3中的许多VCL样式错误。不知道它是否对您有帮助。在DelphiXE3中运行了一些测试(v.17.0.4625.53395的试用版)之后,我可以说:。使用10ms的更新定时器(我知道是极端的更新速率),我可以说是我见过的使用双缓冲区的Windows风格的唯一真正平滑的显示(不管我使用的是Windows还是VCL风格,虚拟还是非虚拟模式)。因此,为了解决您的问题,我建议您实现双缓冲区到VCL样式(您可以通过重写样式挂钩来实现),忽略上面的注释,这些注释指出了双缓冲区的缺点:-)