| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3957 人关注过本帖
标题:dbgrid中的一列,根据数值的范围不同,显示不同颜色
只看楼主 加入收藏
honestwinnie
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-7-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
dbgrid中的一列,根据数值的范围不同,显示不同颜色
我用dbgrid显示了很多数据,对于其中的一列,我想依据此列显示的数值不同,<100的显示红色,,>=100的依旧显示黑色,可是我尝试了好多次,都全部显示为红色,我该怎么做?附我的代码:DELPHI7

begin
      if DBGrid1.Fields[9].Value<100 then
         begin
            DBGrid1.Columns.Items[9].Font.color:=clRed;
            DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
         end;
end;
搜索更多相关主题的帖子: 颜色 
2011-07-10 18:02
yuutian
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:137
专家分:686
注 册:2010-10-27
收藏
得分:20 
我给出以下的三种,你可以参考以下:

第1种 如果你想要为TDBGrid中所选的某一格或某些格指定颜色,而且你不想使用dgRowSelect选项,因为你想让TDBGrid可以直接在TDBGrid单元格中编辑数据,你应该使用TDBGrid的OnDrawColumnCell事件。

  下面我们用到的技巧可以动态改变TDBGrid中的单元格文本的颜色。

  代码如下:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 if Table1.FieldByName(’Salary’).AsCurrency>36000 then
  //指定所需改变颜色行的条件表达式
  DBGrid1.Canvas.Font.Color:=clMaroon;
  //指定颜色为clMaroon
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

  上述代码执行的功能是:把薪水超过3万6千元的员工(employee)记录字体颜色用栗色(Maroon)标出来。


第2种 如何动态改变TDBGrid中行的颜色,代码如下:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 if Table1.FieldByName(’Salary’).AsCurrency>36000 then
  DBGrid1.Canvas.Brush.Color:=clWhite;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;  

  上述代码执行的功能是:把薪水超过3万6千元的员工(employee)记录背景用白色(White)标出来


第3种 如何改变指定列中某些单元格的背景色,代码如下:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
 if Table1.FieldByName(’Salary’).AsCurrency>40000 then
 begin
  DBGrid1.Canvas.Font.Color:=clWhite;
  DBGrid1.Canvas.Brush.Color:=clBlack;
 end;
 if DataCol = 4 then
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

  上述代码执行的功能是:把薪水超过4万的员工(employee)记录背景用黑色(White)标出来而文本用白色标出来。
2011-07-11 17:43
honestwinnie
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-7-10
收藏
得分:0 
十分感谢,已经调试完毕。

if DataCol = 4 then  主要是没有这个语句所以调试没有成功。十分感谢
2011-07-12 19:29
快速回复:dbgrid中的一列,根据数值的范围不同,显示不同颜色
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021359 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved