【话题】关于改变ListView某一列的颜色
2009-08-24 19:11:22 来自:爱学习123 浏览数:106次
procedure TMainFrm.lvMainFrmCustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
begin
case SubItem of
1: lvMainFrm.Canvas.Font.Color := clBlue;
2: lvMainFrm.Canvas.Font.Color := clRed;
else
lvMainFrm.Canvas.Font.Color := clBlack;
end;
end;
但是运行后发现从SubItem =3开始后面都成clRed,请问这是怎么回事?
更多相关的话题
梦幻小公主回复于24日19点20分
但是我换成MS Sans Serif这个字体又不行了,不知道是怎么一回事?是不是有另外的属性需要设置?贴子的分我明天加
卫南南回复于24日19点31分
我原先是用cdsHot来判的,可以实现鼠标移过就会让记录改色,但是我用cdsSelected发现把所有的字体都变成了红色,不知道是怎么回事?
tomlian回复于24日19点43分
onCustomDrawItem 这个事件里我也试过,但是跟CustomDrawSubItem 相反,根本就没有反应
雪花飘飘回复于24日19点53分
procedure TMainFrm.lvMainFrmCustomDrawItem(Sender: TCustomListView;Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Item.Caption = '冷量底数' then
lvMainFrm.Canvas.Font.Color := clred
else
lvMainFrm.Canvas.Font.Color := clBlack;
if cdsHot in State then begin
lvMainFrm.Canvas.Font.Color := clRed;
end;
end;
运行结果是一片黑色
chenwei6733回复于24日20点02分
得分回复需要阅读,请登录CSDN!
快乐每天回复于24日20点12分
我试了,语句在SubItem=3的时候是clBlack的,但实际界面上却还是clRed
林大伟回复于24日20点22分
得分回复需要阅读,请登录CSDN!
woaini1314回复于24日20点35分
其实这个问题我已经解决了,但是就是实现不了指定列改变颜色跟这个功能并存。
lshh2008回复于24日20点48分
不好意思 ,分要100才能加,可惜我没那么多分了,只能解决问题后另外开贴给分
咪咪爸爸回复于24日20点59分
得分回复需要阅读,请登录CSDN!
胡旻月回复于24日21点11分
不会啊.在自画中,就能实现啊.void __fastcall TForm1::ListView1CustomDrawItem(TCustomListView *Sender,
TListItem *Item, TCustomDrawState State, bool &DefaultDraw)
用这个事件,
TCustomDrawState State>>>cdsSelected 如果是选择就改变其状态.
jiangjingjing回复于24日21点19分
case SubItem of这一行上设置断点跟踪下每次刷新.
人猿泰山回复于24日21点31分
学习顺便帮你顶贴
wangjixi回复于24日21点41分
我发现如果我设了HotTrackStyles中的hsHandPoint,那我前面写的改变列字段的语句就会出现上面说我情况,但是如果我不设这个属性,那么我的鼠标进过行把行字体改为红色的功能就不能实现了,矛盾,我想应该有办法同时实现这二个功能的吧,不知道有没有人实现过?
游侠007回复于24日21点51分
不好意思,忘了给分,明天才能加
江湖之人回复于24日22点03分
没分啦,所以就没得吸引力啦
fangfang958@回复于24日22点17分
得分回复需要阅读,请登录CSDN!
maytty回复于24日22点26分
Delphi(Pascal) code procedure TMainFrm.lvMainFrmCustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boolean); begin case SubItem of 1: lvMainFrm.Canvas.Font.Color := clBlue; 2: lvMainFrm.Canvas.Font.Color := clRed; else lvMainFrm.Canvas.Font.Color := clBlack; end; lvMainFrm.Canvas.Font.Name := '宋体'; end;
sgtony回复于24日22点37分
你应该处理onCustomDrawItem事件,而不是CustomDrawSubItem里面的代码没得问题。
汉口老头回复于24日22点48分
如果要自己画,好像在LISTVIEW中有一个自画属性要设为TRUE.好像是OnSelfDraw=True
上一页 1 2 下一页