cxgrid 根据A列的值设定B列值的颜色

kckcxy 2012-08-20 03:53:21
需求是这样,要将A列的值与B列的值进行比较,如果A列的值小于B列的值,那B列的值就显示为红色。

共有4列要作比较。请问如何写代码?

A<b b列值显示红色
d<f f列值显示红色
g<j j列值显示红色
m<w w列值显示红色
...全文
137 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kckcxy 2012-08-21
  • 打赏
  • 举报
回复
解决了,我把代码贴上来,希望对有同样需求的朋友有所帮助

procedure TYinDangBiao.cxGrid1DBBandedTableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
if (AViewInfo.GridRecord.Values[cxGrid1DBBandedTableView1.GetColumnByFieldName('pds').Index] < AViewInfo.GridRecord.Values[cxGrid1DBBandedTableView1.GetColumnByFieldName('njzzk').Index]) and (AViewInfo.Item.ID = 8) then
ACanvas.Canvas.Font.Color := clRed
else if (AViewInfo.GridRecord.Values[cxGrid1DBBandedTableView1.GetColumnByFieldName('nzk').Index] < AViewInfo.GridRecord.Values[cxGrid1DBBandedTableView1.GetColumnByFieldName('n1jzzk').Index]) and (AViewInfo.Item.ID = 14) then
ACanvas.Canvas.Font.Color := clRed
else if (AViewInfo.GridRecord.Values[cxGrid1DBBandedTableView1.GetColumnByFieldName('n1zk').Index] < AViewInfo.GridRecord.Values[cxGrid1DBBandedTableView1.GetColumnByFieldName('n2jzzk').Index]) and (AViewInfo.Item.ID = 19) then
ACanvas.Canvas.Font.Color := clRed
else if (AViewInfo.GridRecord.Values[cxGrid1DBBandedTableView1.GetColumnByFieldName('n2zk').Index] < AViewInfo.GridRecord.Values[cxGrid1DBBandedTableView1.GetColumnByFieldName('n3jzzk').Index]) and (AViewInfo.Item.ID = 24) then
ACanvas.Canvas.Font.Color := clRed;
end;
酣酣 2012-08-21
  • 打赏
  • 举报
回复
呵呵!
CxGrid底下有Demo的!
kckcxy 2012-08-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

//假定窗体为Form1、表格为cxGrid1DBTableView1,则:
Delphi(Pascal) code

procedure TForm1.cxGrid1DBTableView1StylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCu……
[/Quote]
运行出错哦!
广州佬 2012-08-20
  • 打赏
  • 举报
回复
//假定窗体为Form1、表格为cxGrid1DBTableView1,则:

procedure TForm1.cxGrid1DBTableView1StylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
var i:integer;
begin
if AItem=nil then exit;
case AItem.Index of
1: i := 0; //A列为0,B列为1
5: i := 3; //F列为5,D列为3
9: i := 6; //J列为9,G列为6
22: i := 12; //W列为22,M列为12
else
exit;
end;
if ARecord.Values[AItem.Index]>ARecord.Values[i] then//如果该记录的当前列的值大于参照列的值
AStyle.Color:=clRed//用红底色显示
else
AStyle.Color:=clWindow; //用白底色显示
end;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧