ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

delphi TcxGrid网格组件:OnCustomDrawCell 自绘网格事件的应用

2022-09-05 19:31:01  阅读:205  来源: 互联网

标签:Index ACanvas AViewInfo 自绘 TcxGrid 单元格 网格 事件 ID


onCustomDrawCell事件分为两种:

 

 

 

一个是整个表格的事件,需要判断单元格所在的字段,符合了之后,才能进行下一步

  取得单元格所在字段的字段名:TcxGridColumn(AViewInfo.Item).DataBinding.FilterFieldName

  AViewInfo.Item 表示当前单元格所在的列

  AViewInfo.value 表示当前单元格的值

  补充:  

//以下两句代码在下图中是等价的,建议使用第二行
ACanvas.FillRect(AViewInfo.Bounds, oColor);
ACanvas.Brush.Color := clTeal;

 

  

 

 

一个是指定列的事件.不需要判断所在字段

    一.当某一列的数值符合某个条件时,填充颜色.(你还可以设置它字体的各种属性等)

    效果图:

 

 

 

二.ACanvas字体样式设置

  请参考下图格式书写代码.注意style的层级关系.比如

  设置字体大小: ACanvas.Font.Size:=12;

  设置字体为粗体: ACanvas.Font.Style.fsBold:=True;

  都是成年人,其他字体设置,请自己举一反三

 

 

 

 

 

三.当某个值符合特定条件时,改变整行记录的背景色

  首先.我们要明白,这不是单独某一个列的行为,所以我们不能使用指定列的事件,而应该使用全局事件

procedure TForm1.cxGrid1DBTableView1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
  //AViewInfo.GridRecord.Values 返回的是一整行记录的数组
  //你也可以使用arr[0]这样的方式返回,但是如果用户移动列位置的时候,程序就会出错
  //所以还是用index来定位比较稳  
//字段名.Index 返回字段所在的位置,比如下面的ID.Index,反回的是ID字段排在第几列 if AViewInfo.GridRecord.Values[ID.Index] = 5 then ACanvas.Brush.Color := clTeal; end;

效果如下:

 

标签:Index,ACanvas,AViewInfo,自绘,TcxGrid,单元格,网格,事件,ID
来源: https://www.cnblogs.com/yoooos/p/16659277.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有