ListView 在运行时的颜色项
我知道当我使用 OnDraw 事件将项目添加到列表时,我可以为项目设置自定义颜色,但我想在项目已经位于列表中后的某个时刻更改项目的颜色。
有办法做到这一点吗?
I know that i can set custom colors to items when i add them to the list using OnDraw Events but i want to change colors of the items at a certain point after they are already in the list.
Is there a way to do this ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
要仅重绘某些项目,请使用
UpdateItems
方法。它有两个输入参数,您可以在其中指定要重绘的项目的范围。如果您只想重绘一项,则只需将该一项索引指定为范围即可。在此示例中,我将项目的颜色存储到
TListItem.Data
属性并在计时器事件中淡出此颜色。更改值后,我调用UpdateItems
强制触发绘制项目事件的函数。是的,没有DoubleBuffered
设置,它会闪烁(即使您将计时器的间隔设置为 500 毫秒)。To redraw only certain items use the
UpdateItems
method. It has two input parameters where you can specify the range of the items to be redrawn. If you are going to redraw only one item, then just specify that one item index as a range.In this example I'm storing the color of the item into the
TListItem.Data
property and fading this color in the timer's event. After changing the value I call theUpdateItems
function which force the draw item event to fire. And yes, withoutDoubleBuffered
set, it flickers (even when you set the timer's interval e.g. to 500ms).