比如要将偶数行变为蓝色,在ListView的OnCustomDrawItem事件里——
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  if Item.Index mod 2 = 0 then Sender.Canvas.Brush.Color := clBlue;
end;

解决方案 »

  1.   


      procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
      Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
    var
      R: TRect;
    begin  if Item.Index mod 2 = 0  then
        ListView1.Canvas.Brush.color := clAqua
      else
        ListView1.Canvas.Brush.color := clWhite;
      if cdsSelected in state then
        ListView1.Canvas.Brush.Color := clRed;
      R := Item.DisplayRect(drBounds);
      ListView1.Canvas.FillRect(R);
      ListView1.Canvas.TextOut(R.Left + 1, R.Top + 1, Item.Caption);
      DefaultDraw:= False;
    end;我的代码不仅是改颜色,而且在颜色上面写原来的text内容,不会被重画的颜色覆盖掉!!去试试看,直接Ctrl+C & Ctrl+V 就行了
      

  2.   

    machin(刷新一下):
       我试了,你不用多此一举再去TextOut,只要DefaultDraw不动它就行了。