如何改变ListView控件的某一行的字体颜色(100分)

  • 主题发起人 主题发起人 system_owen
  • 开始时间 开始时间
S

system_owen

Unregistered / Unconfirmed
GUEST, unregistred user!
如何改变ListView控件的某一行的字体颜色
(delphi or cbuilder code[:)])
 
调用 canvas 的 TextOut 画:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
R: TRect;
begin
with TListView(Sender).canvas do
if cdsSelected in State then
begin
font.Style := [fsBold];
font.color := clred;
brush.Color := clgreen;
R := item.DisplayRect(drlabel);
textout(R.Left + 1, R.Top + 1, item.Caption);
defaultdraw := False;
end
else
DefaultDraw:=true;
end;
 
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
R: TRect;
begin
if cdsSelected in State then Exit;
with TListView(Sender).Canvas do
if Item.Index mod 2 = 0 then
begin
Brush.Color := $FFFFFF;
Font.Color := $003366;
end
else
begin
Brush.Color := $FFFDF0; //F5FFF4;
Font.Color := $006633;
end;
end;
 
mlzhou:
您的方法很有效,只是有一个问题,当我用鼠标点击此条目时,颜色会恢复默认值,
能否使一行都变颜色(item.caption and subitems)
qdyount:
您的方法我没有实现出来,可能是因为我使用的是CBuilder的原因。
 
谢谢,我还是先派分好了
 
我倒!把mlzhou和qdyoung的答案结合起来就可以了!
 
谢谢,我已经实现出来了,再次感谢两位的帮助
 
后退
顶部