比如要将偶数行变为蓝色,在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;
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;
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 就行了
我试了,你不用多此一举再去TextOut,只要DefaultDraw不动它就行了。