Delphi中为DBGrid控件添上色彩

本文介绍在Delphi中如何为TDBGrid中的特定行、列或单元格更改颜色,包括通过TColumns属性为列上色、使用OnDrawColumnCell事件为行上色等方法,并提供了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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

 

  图一

  就是这么简单,只要轻点几下鼠标就可以了,这样修改之后的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种 如何动态改变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)标出来而文本用白色标出来。

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

 

转载于:https://www.cnblogs.com/tecsoon/archive/2009/03/04/1403064.html

一、 DBGridEh(增强型表格组件)功能详解.....................................................................4 二、应用实例..........................................................................................................................5 1. 定制标题......................................................................................................................5 1) 制作复杂标题.......................................................................................................5 2) 按钮式标题..............................................................................................................5 3) 标题显示图片.......................................................................................................5 4) 如根据不同状态在数据单元格中显示相应图片...................................................5 5) 自动显示标题的升降排序标志符(▽降序△升序)并做相应排序...............6 6) 点dbgrideh 标题排序..............................................................................................7 7) 在DBGridEH 中怎样实现多重排序(标题出现0123等排列序号)? ................ 11 8) 让dbgrid显示序号................................................................................................ 11 2. 外观布局........................................................................................................................12 1) 根据不同字段值显示相应的小图片.....................................................................12 2) 显示检查框(checkbox)外观.............................................................................12 3) 显示单、多列下拉列表.........................................................................................12 4) 显示日历下拉列表.................................................................................................13 5) 3D或平面外观效果...............................................................................................13 6) 头和列头的启用关闭.........................................................................................13 7) DBGrid如何实现透明效果?.................................................................................13 8) 滚动条的各种应用.................................................................................................16 9) 数据高................................................................................................................19 10) DBGrid设置Rowheight后如何将单元格内容纵向和垂直都居中?..............19 11) 设置DBGridEH 自适应列宽的最好方法.........................................................20 12) Ehlib 的DBGridEh首列加序号........................................................................21 13) 分分列、单元格的颜色设置.........................................................................23 14) 点击不同单元格列,执不同的动作.............................................................27 15) 下拉式计算器.....................................................................................................28 16) 鼠标移到某个单元格,指针形状改变.............................................................28 17) 自动填充网格列宽到网格客户区.....................................................................29 18) 从注册表或ini文件中保存或恢复网格和列的层次。...................................29 3. 编辑功能........................................................................................................................29 1) 多选........................................................................................................................29 2) 文本多显示.........................................................................................................30 3) 显示备注字段.........................................................................................................30 4) 如何让dbgrideh1 显示数据时只显示两位小数...................................................30 5) 获得当前DBGridEh表中单元格的序号.............................................................30 6) 怎样在dbgridEh和Edit中显示金额的千分号...................................................30 7) end;请问怎么才能使DBGridEh不滚动就能提交数据?...................................32 8) 我怎么把dbgrid 里的数据一次插入到数据库呢................................................32 9) 在DBGrid中可选中而又可进入编辑状态......................................................32 10) 修正DBGrideh 丢失焦点时自动关闭输入法的问题......................................35 11) DBGRIDEH选定多删除怎么实现...............................................................36 12) DBGrid 滚动表格的代码...................................................................................37 4. 统计功能........................................................................................................................37 白波九道整理自用版 第 3 页 1) 页脚合计................................................................................................................37 2) 定制表格底部(footer)区域的汇总统计.......................................................38 3) TDBSumList说明..................................................................................................38 4) 如何工作以及为什么有时SumList的集合值计算不正确?.............................39 5) dbgrideh列求和.....................................................................................................39 5. 数据功能........................................................................................................................40 1) 查找字段点击某列值的下拉按纽弹出一个从数据库取值下拉列表...............40 2) 使用DBGridEh自动过滤实现方法.....................................................................40 3) 使用DBGridEh自动过滤实现方法2 ..................................................................41 4) DBGridEh 控件中使用过滤功能 (适用ehlib 5.2 ehlib 5.3)................................42 5) 支持模糊查询.........................................................................................................43 6) ehlib4.4.50中支持模糊匹配的修改方法..............................................................44 7) EhLib 5.0 Build 5.0.13的过滤字串都是模糊过滤修改.......................................45 8) 滚动条滚动时选择不变,还有自动过滤功能的实现.........................................45 9) 增量搜索................................................................................................................46 10) ehlib总是按两次ctrl+f才出来查找框,怎么办?.........................................46 11) 如何改良dbgrideh的文字过滤........................................................................46 12) 改进DBGrideh 表头点击自动排序,实现双击状态轮流.................................47 13) 改良Ehlib 的排序功能,加快排序速度.............................................................49 14) 在DbGridEh中显示TreeView效果................................................................50 15) DBGridEh-KeyList、PickList............................................................................51 16) 主从表设置........................................................................................................53 17) 在DbGridEh中显示表中表..............................................................................55 6. 输入/输出.......................................................................................................................56 1) 导入导出数据.........................................................................................................56 2) 从多种格式导入/导出数据到TDBGridEh...........................................................57 3) DBGRID 生成EXCEL报表.................................................................................57 4) 使用TPrintDBGridEh 组件.................................................................................61 5) 打印时确定Ehlib定义的报表表头颜色? ............................................................61 6) Ehlib 中的PrintDBGridEh如何印页码,即第几页共几页...................................62 7) 怎么让PrintDBGridEh只打印DbGridEh 中指定的列.......................................62 8) 怎样进横向打印/ 打印预览?........................................................................62 7. 将存在的DBGrid组件转换为DBGridEh组件...........................................................62 三、EhLib安装问题.............................................................................................................64 1. EhLib 安装步骤.............................................................................................................64 2. EhLib 安装问题(dbsumlst.dcu出错) ..........................................................................64 3. 安装提示找不到.BPL文件...........................................................................................65 四、Delphi 下的优秀表格(Grid)显示控件........................................................................65 1. NextGrid .........................................................................................................................65 2. TopGrid 3.01...................................................................................................................65 3. XLGrid............................................................................................................................66 4. DevExpress ExpressQuantumGrid .................................................................................66 5. TMS Grid Pack...............................................................................................................68 6. EhLib ..............................................................................................................................71 白波九道整理自用版 第 4 页 7. ProfGrid..........................................................................................................................71 8. EasyGrid .........................................................................................................................71 五、delphi 中配置文件的使用(*.ini).........................................................................71 六、窗口动画效果Animatewindow应用...........................................................................72 七、Delphi Excel to Sql Server..............................................................................................73 八、Delphi控制Excel的经验如下:..................................................................................76
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值