Delphi中为DBGrid控件添加色彩

 

 

 

Delphi中为DBGrid控件添加色彩

2005-08-08 09:13作者:小刀轻舞出处:天极网责任编辑:方舟

 

 

  添加不同颜色到TDBGrid组件中将会增强组件的显示外观和区别数据库中不同内容的行或列。

  TDBGrid组件是一种非常棒的用来显示数据内容的组件,本文的重点将用来解释---如何在TDBGrid中改变特定行或列或单元格的颜色。

  准备阶段:

  本文假设你已经知道如何将一个TDBGrid与数据库相联接,最容易的方法是使用“Database Form Wizard”,将TDBGrid与DBDemo(Delphi自带数据库中的employee.db相联接,选择除Except之外的所有字段。

  给TDBGrid上颜色

  为列上色

  第一种是最容易的一类上色,最直接的让你的用户看到,为TDBGrid中指定的某一列上色。

  我们采用的方法是通过TDBGrid的TColumns属性来完成。步骤如下:

   用鼠标选择Form上的TDBGrid组件,在Object Inspector中双击TDBGrid的Columns属性打开Columns编辑窗口。(想了解更多内容查阅Delphi帮助中的“Columns editor: creating persistent columns”主题。)

  下面你所要做的就是指定你需要改变颜色的那一行或几行的背景颜色,如果你要改变字体颜色,就将Font属性集中的Color属性修改一下。

 

2010年2月28日 - wh_0826 - wh_0826的博客

图1

 

  就是这么简单,只要轻点几下鼠标就可以了,这样修改之后的TDBGrid就不再是呆板的白色背景了。

  为行上色

  第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)标出来。

 

2010年2月28日 - wh_0826 - wh_0826的博客

图2

 

  第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)标出来。

 

2010年2月28日 - wh_0826 - wh_0826的博客

图3

 

  第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)标出来而文本用白色标出来。

  就是这样方便,因为你使用的是Delphi,这句像在为Borland作广告了,呵呵,我的程序在Delphi7+Winxp和Delphi+Windows2000上编译通过,大家不妨一试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值