REPORT风格下,怎么样对每一行上色?
我在用了AdvancedCustomDrawItem自画之后,里面的记录全被盖掉了,CAPTION还好,可以TEXTOUT出来,SUBITEMS呢?而且这样做比较麻烦,完全丧失了LISTVIEW的易用性,有没有更好的方法?请赐教!
我在用了AdvancedCustomDrawItem自画之后,里面的记录全被盖掉了,CAPTION还好,可以TEXTOUT出来,SUBITEMS呢?而且这样做比较麻烦,完全丧失了LISTVIEW的易用性,有没有更好的方法?请赐教!
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
R: TRect;
begin
with Sender.Canvas do begin
R := Item.DisplayRect(drBounds);
if Item.Index mod 2 = 1 then begin//对奇数行改变底色和字体
Brush.Color := clTeal;
Font.Color := clYellow;
Font.Style := Font.Style + [fsBold];
DefaultDraw := False;
end;
if cdsSelected in State then begin
Brush.Color := clHighLight;
Font.Color := clHighLightText;
end;
FillRect(R);
TextRect(R, R.Left + 2, R.Top, Item.Caption);
end;
DefaultDraw := False;
end;
Var
Frect: TRect;
Begin
Frect := Listview.BoundingRect; If Def Then
Begin
If (item.Index Mod 2) = 0 Then
Listview.Canvas.Brush.Color := Color1 //$00FFB3B3
Else
Listview.Canvas.Brush.Color := Color2; //$00FFB3B3
End
Else
Listview.Canvas.Brush.Color := Color1; //$00FFB3B3
Listview.Canvas.FillRect(Frect);
End;Procedure TForm1.ListView1AdvancedCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
Var DefaultDraw: Boolean);
Begin
DrawLV(listview1, item, $00EEF7FF, clWhite);End;