各位大侠,请问什样在listview控件里对每一行设置不同的颜色,而且还可以每一列设置,谢谢了!

解决方案 »

  1.   

    看看这个例子的效果你就知道了。
    procedure TForm1.ListView1AdvancedCustomDrawSubItem(
      Sender: TCustomListView; Item: TListItem; SubItem: Integer;
      State: TCustomDrawState; Stage: TCustomDrawStage;
      var DefaultDraw: Boolean);
    begin
      if (Item.Index+SubItem) mod 2=0 then
        Sender.Canvas.Brush.Color:=clYellow
      else
        Sender.Canvas.Brush.Color:=clGreen;
    end;procedure TForm1.ListView1AdvancedCustomDrawItem(Sender: TCustomListView;
      Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
      var DefaultDraw: Boolean);
    begin
      if Item.Index mod 2=0 then
        Sender.Canvas.Brush.Color:=clRed
      else
        Sender.Canvas.Brush.Color:=clBlue;
    end;
      

  2.   

    很好,谢谢 facedge(朝戈) !
      

  3.   

    想你这样的需要,不用onAdvancedXXXXXXXXXX,delphi help里面也建议没事少用这个。就用onCustomDrawItem和OnCustomDrawSubItem
    onCustomDrawItem是说整行重画的时候干啥,onCustomDrawItemSubItem是某个subitem被冲画的时候干啥。在以上两个响应函数里面摄制sender.canvas的一些属性就可以,比如canvas.brush就是背静的样子,包括很多,是tbrush类的,brush.color就是背景颜色。想设置文字颜色啥的就改变canvas.font.两个函数中item参数是说哪行被重画,subitem说的是被重画的subitem的索引值。看看delphi help,里面有更加详细的解释,还有example