文/小刀轻舞
在微软软件帝国的摇旗呐喊声中,各种开发工具纷纷推陈出新,VB.net和VC#.net等微软的嫡系在短时间内拥有了一大批FANS。能在开发工具领域和微软一决高下的Borland公司也不甘示弱把Delphi“打扮”的漂漂亮亮的,让我们这些坚定的D迷依旧信心满满,坚守这块阵地。一些对Pascal语法情有独钟或对VCL爱慕非凡的新生力量也加入了我们阵营之中,新加入的同志大多以开发数据库类的软件做为初始的一步,这样对“数据感知”控件了解成为了必须,这其中最经常用到的要属DBGrid,我们就来谈谈如何增强DBGrid的功能。虽然原生的DBGrid功能已经非常强大,但在实际开发工作还是会碰到捉襟见肘的时候,例如将不同类型的数据用不同的颜色加以区分这个功能就非常有用,这一功能有助于加强软件与用户的交互,要知道用户可是上帝喔,让上帝满意是最重要的事情啊!
添加不同颜色到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属性修改一下。

| 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; |

| 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; |

| 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; |