,Delphi   工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛,Delphi
您的位置:Yesky > 软件 > 开发者网络 > 正文
Delphi中为DBGrid控件添上色彩
[文章信息]
作者:小刀轻舞
时间:2005-05-25
出处:天极网
责任编辑:方舟
[文章导读]
本文的重点将用来解释---如何在TDBGrid中改变特定行或列或单元格的颜色……
advertisement
热点推荐
· 图文详解:黑客入侵方式演示
· Java异常处理的陋习展播
· 多媒体系列教程:网页设计制作
· Powerpoint动画演示教程连载
· 光盘刻录手册:禁忌与技巧(下)
[正文]
  在微软软件帝国的呐喊声中,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上编译通过,大家不妨一试。

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
,Delphi相关内容,Delphi焦点新闻
  • 用Delphi编写清空回收站程序
  • Delphi设计形象的动态三维饼图
  • Delphi实现在局域网内传递消息程序
  • 用Delphi获取本地计算机名称和IP地址
  • Delphi编程根据IP地址得到主机名
  • FVD刺激高清碟机加速商业化 抢占商机最重要
  • 3家搜索引擎集体诉讼8848 吕春维未敢出席
  • 杨元庆:没有准备不会获批的备用方案
  • 军队信息化诞生新领域 电子军务呼之欲出
  • 世界经济论坛公布信息化程度全球最新排名
  • 2004政务绩效评估:政府门户尚处于发展阶段
  • 甲骨文出资5.15亿美元 意图收购RetekInc
  • 技术并购:帮你突破传统增长的“天花板”
  • ,DelphiAdvertisement

    天极无线
    经典名曲 华语流行 欧美风情 人声音效 原声大碟
    你好周杰伦-安又琪
    直线-张韶涵
    天边-张韶涵
    看我72变-蔡依林
    乱世佳人-Twins
    全世界下雨-张娜拉
    我们的爱-飞儿乐队
    分手快乐-梁静茹
    爱在西元前-周杰伦
    三万英尺-迪克牛仔
    爱如潮水-张信哲
    爱情宣言-齐秦
    寻找玛依拉-刀郎
    驼铃-刀郎
    老鼠爱大米-杨臣刚
    功夫主题曲
    仙剑主题曲杀破狼
    天下无贼片尾曲
    冲动的惩罚-刀郎
    情人-刀郎
    爱情-莫文蔚
    挪威的森林-伍佰
    奔跑 - 羽泉
    因为爱 - 羽泉
      ·时尚女人圈
    ·经典影视专集
    ·美女秀场
    ·美丽大自然专题
    ·流行金曲
    ·科幻电影特区
    | 最新推荐
    ·你好周杰伦
    ·杀破狼
    ·寻找玛依拉
    ·孤单公园
    ·男人海洋
    | 魔术铃声
    ·少女丰胸
    ·少妇丰胸
    ·减肥魔铃
    ·增高魔铃
    ·美容魔铃

    今日报价查询 更多报价