CxGrid 改变某行或单元格的颜色
CxGrid 改变某行或单元格的颜色
一个表(T)的结构结构如下.
ID Test
1 2001
2 1444
3 1788
5 2645
6 4568
cxGrid成功连接到该表, 如果要实现单元格特效, 就要在cxGridDBTableView的 OnCustomDrawCell
写代码. 该事件声明原形为
type
TcxGridTableDataCellCustomDrawEvent = procedure(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean) of object;
参数 Sender: 你要实现特效的TableView; ACanvas: 画布, 这个参数比较重要, 就是用这个参数画出
特效; AViewInfo: 自定义条件的来源; 从这个参数中获取单元格值; ADone: 设为真就不会Paint.
下面是以 Test字段的值来控件单元格颜色
var
CheckValue: integer;
cxColumn: TcxGridColumn;
begin
cxColumn := (Sender as TcxGridDBTableView).GetColumnByFieldName('Test');
if cxColumn = nil then
Exit;
//这个条件用来限制是否只Paint指定的单元格, 去掉则Paint整行.
if SameText(AViewInfo.Item.Name, cxColumn.Name) then begin
CheckValue := AViewInfo.GridRecord.Values[gdtvTestTest.Index]; //获取单元格
//以下是满足条件的字体变色
if CheckValue >= 4000 then //大于4000为红色
ACanvas.Font.Color := clRed
else if CheckValue >= 3000 then //大于3000绿色
ACanvas.Font.Color := clGreen
else if CheckValue >= 2000 then //大于2000蓝色
ACanvas.Font.Color := clBlue;
//以下是满足条件的数据背景变色
{if CheckValue >= 4000 then begin //大于4000为红色
AViewInfo.Focused;
ACanvas.Brush.Color := clRed
end
else if CheckValue >= 3000 then //大于3000绿色
ACanvas.Brush.Color := clGreen
else if CheckValue >= 2000 then //大于2000蓝色
ACanvas.Brush.Color := clBlue; }
end;
end;
以上内容为转贴,在使用过程中,发现作者固定了字段Test,而我遇到的问题是:客户提出对cxGrid中不可编辑的列用特别的颜色标记,这时候,字段就不是固定的,于是对上面的代码做了改造:
procedure TForm1.cxGrid1DBTableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
cxColumn: TcxGridColumn;
aFieldName:String;
begin
aFieldName:=TcxGridItemDBDataBinding(AViewInfo.Item.DataBinding).FieldName;
//引用 cxGridDBDataDefinitions单元,才支持TcxGridItemDBDataBinding类.这行取出当前列的字段名
cxColumn := (Sender as TcxGridDBTableView).GetColumnByFieldName(aFieldName);//按字段名取出Column对象
if not cxColumn.Options.Focusing then//不允许编辑的列标记为特殊颜色.
ACanvas.Brush.Color:=clRed;
end;
上面的代码,实现当cxGrid中某一列.Options.Focusing:=False时,用红色显示.
最后证明,下面这个方法是可行的
比如AViewInfo.Item.ID in [i, j] 或AviewInfo.RecordViewInfo.GridRecord.Values[i]为第i列符合条件的值.
if (AViewInfo.Item.ID in [6, 7]) and (trim(AViewInfo.RecordViewInfo.GridRecord.Values[8]) = 'T') then
begin
ACanvas.Brush.Color := clmoneygreen;
ACanvas.Font.Name := 'Times New Roman';
ACanvas.Font.Size := 10;
ACanvas.Font.Color := clCaptionText;
end;
CxGrid 改变某行或单元格的颜色的更多相关文章
- gridview根据条件来改变行的颜色以及改变单元格的颜色。
gridview根据条件来改变行的颜色以及改变单元格的颜色. 通过在RowDataBound事件中写代码来实现,见代码. protected void GridView1_RowDataBound(o ...
- 改变DataGrid某一行和单元格的颜色
前段时间做WPF项目,需要改变DataGrid某一行的颜色.高度,以及某个单元格的颜色.单元格字体的颜色,自然就必需取到datagrid的一行和一行的单元格,网上也是搜索了好久才找到,记录下来便于使用 ...
- Devexpress Winform Gridcontrol 中根据条件单元格的值改变单元格的颜色等属性。
提供一下三种方法 1.使用设计器 点击gridcontrol控件,run designer,format Condtions, add,然后进行各种条件的设置. 2.用代码代替设计器. 实例代码: p ...
- ExtJs GridPanel 给表格行或者单元格自定义样式
Ext.onReady(function(){ Ext.create('Ext.data.Store', { storeId:'simpsonsStore', fields:['name', 'ema ...
- zclip结合easyui实现复制datagrid每行特定单元格数据的功能
在easyui的datagrid里面,实现复制每行特定单元格的功能,关键是想想如何获取到每个单元格的数据,功能是点击按钮"复制",然后复制object的下载地址,截图如下所示: 进 ...
- (转载)WPF:DataGrid设置行、单元格的前景色
WPF:DataGrid设置行.单元格的前景色 0. 说明 /********************************** 本示例实现功能1.DataGrid基本操作2.列标题样式3.内容居中 ...
- table、tr、td表格的行、单元格等属性说明
table.tr.td表格的行.单元格等属性说明 <table>标签定义HTML表格.简单的HTML表格由table元素以及一个或多个tr.th或td元素组成. tr元素定义表格行,th元 ...
- Easyui之datagrid实现点击单元格修改单元格背景颜色
前段时间有个需求中有点击datagrid的单元格实现某种事件,调用datagrid的onclickCell这个方法很容易实现,但是体验不好啊,完全不知道自己刚才点击的是哪个单元格,然后就尝试单击单元格 ...
- X5学习笔记—给单元格添加颜色
设置grid某一个单元格的颜色 可以用dhtmlxgrid的原生态方法 setCellTextStyle (row_id, ind, styleString) 参数: rowid:行id cellin ...
随机推荐
- Java界面编程—事件的种类
Java处理事件相应的类和监听接口大多位于 awt 包中. 在 java.swing.event 包中有专门用于 swing 组件的事件类和监听接口. awt 事件类继承自 AWTEvent,其超类是 ...
- JSP概述、API、注释
JSP自带的API包含4个包,可通过Tomcat的官网查看,JSP和EL的API是分开的 javax.servlet.jsp // 包含用于Servlet/JSP容器将JSP页面翻译为Servlet的 ...
- gsl库安装
下载ftp://ftp.gnu.org/gnu/gsl/ 下载后解压,可以按照文件夹中INSTALL文件的指导,进入解压文件夹"gsl-2.4"执行以下5步: ./configur ...
- android windows的一些item属性
<item name="android:windowFrame">@null</item> :Dialog的windowFrame框为无 <item ...
- Linux学习笔记:JDK安装
系统为CentOS 7,安装Oracle jdk1.8 卸载系统自带的Openjdk(若无可跳过这一步,可以通过 java -version 查看),步骤是:查找Openjdk,卸载Openjdk r ...
- 关于 construct object opp
constructor 定义和用法 constructor 属性返回对创建此对象的数组函数的引用. 语法 object.constructor 实例 例子 1 在本例中,我们将展示如何使用 const ...
- Windows 8 Stroe Apps 控件
重新想象 Windows 8 Store Apps (3) - 控件之内容控件: ToolTip, Frame, AppBar, ContentControl, ContentPresenter; 容 ...
- django之补充
一 QuerySet类型 QuerySet类型:只和orm有关,如果一涉及数据库,就会有QuerySet类型的出现. QuerySet切片操作:QuerySet是支持切片操作的,不过不能放负数.查询集 ...
- 2018.12.08 codeforces 914D. Bash and a Tough Math Puzzle(线段树)
传送门 线段树辣鸡题. 题意简述:给出一个序列,支持修改其中一个数,以及在允许自行修改某个数的情况下询问区间[l,r][l,r][l,r]的gcdgcdgcd是否可能等于一个给定的数. 看完题就感觉是 ...
- 2018.11.01 NOIP训练 树的排列(树形dp)
传送门 跟这道题差不多. 只不过是让权值小的儿子做权值大的儿子的父亲而已. 代码