canvas教程

关于改变ListView某一列的颜色

字号+ 作者:H5之家 来源:H5之家 2017-12-09 09:13 我要评论( )

【话题】关于改变ListView某一列的颜色 2009-08-24 19:11:22 来自:爱学习123 浏览数: 106 次 procedure TMainFrm.lvMainFrmCustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boo

【话题】关于改变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 下一页

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • JavaScript——关于画布元素canvas的使用

    JavaScript——关于画布元素canvas的使用

    2017-12-04 13:05

  • Canvas技术绘制随机改变的验证码

    Canvas技术绘制随机改变的验证码

    2017-10-13 08:20

  • 关于预加载InstantClick的问题解决方法

    关于预加载InstantClick的问题解决方法

    2017-10-10 14:01

  • 关于canvas画图,for循环之后img.onload只显示最后一个?

    关于canvas画图,for循环之后img.onload只显示最后一个?

    2017-10-07 10:00

网友点评