Delphi中为DBGrid控件添加色彩
2008-02-23 07:15:00来源:互联网 阅读 ()
添加不同颜色到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属性修改一下。
图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)标出来。
图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)标出来。
图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上编译通过,大家不妨一试。
上一篇: Delphi&BCB一线程序员开发经验
下一篇: Delphi初学者应小心的六大陷阱
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash