诸位大小侠客,兄弟我遇到个问题,百思不得其解,求教;我在用ListView1.Items.Insert(1)一个LISTITEM时,在ListView1AdvancedCustomDrawItem事件中,
将ListView1.Canvas.Brush.Color := clRed;
当插入完成后,却发现插入的LISTITEM下的所有LISTITEM
颜色都变成了成clRed;有什么办法能控制吗?
**********************************************************
**********************************************************
如果我要根据LISTITEM的值控制每个LISTITEM的颜色,我要怎么做;
**********************************************************
**********************************************************期待赐教;

解决方案 »

  1.   

    如果在你说的那个事件中指定画刷的颜色,那么ListView控件中画出的所有Item都将成为你指定的颜色。至于如果控制各个Item显示不同的颜色,个人认为只能从消息方面捕获了:
    先查出在一个ListView中创建一个Item时将触发什么消息的处理器,然后进入这个处理器进行重新定义----》加入一个你自己定义的过程,在这个过程中指定画刷的颜色。你可以按照这个思路试验试验!
      

  2.   

    如果你要根据ListItem的值来控制自身的显示颜色,只要在消息处理器中加入的过程中根据ListItem的值来定义画刷的颜色就可以了!
      

  3.   


    我在ListView1AdvancedCustomDrawItem事件中的代码:
      case (StrToInt(Item.Caption))
      begin
         1 : ListView1.Canvas.Brush.Color := clRed;
         2 : ListView1.Canvas.Brush.Color := clYellow;
         3 : ListView1.Canvas.Brush.Color := clWhite;
         4 : ListView1.Canvas.Brush.Color := clBlue;
         5 : ListView1.Canvas.Brush.Color := clBlack;
         6 : ListView1.Canvas.Brush.Color := clLime;
      end;我第6个LISTITEM的值是6,后果是所有的LISTITEM的颜色都是clLime;我是要让每个LISTITEM的颜色都不一样呀
      

  4.   

    var
      color:tcolor;
    begin
      color:=lisview.canvas.brush.color;
      ...
      ...do your custom painting
      lisview.canvas.brush.color:=color;
    end;