100分:关于ListView的问题(100分)

  • 主题发起人 主题发起人 cshjun
  • 开始时间 开始时间
C

cshjun

Unregistered / Unconfirmed
GUEST, unregistred user!
如何让ListView中每行用不同颜色显示呢?
 
用自画来处理
 
很有点麻烦, 要画数据和标题部分,不知道其他富翁有什么好办法(不用第三方控件)?
 
具体如何实现?
 
在ListView的OnCustomDrawItem事件里——

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
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;
 
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Odd(Item.Index) then //隔行显示淡绿色
ListView1.Canvas.Brush.Color := ($EEFFEE);
end;
 
多人接受答案了。
 
后退
顶部