网上文摘 小说 Flash游戏 最近更新 下载排行 资源分类 下载指南
经典编程资源 精彩不容错过
设为首页
加入收藏
联系我们
当前位置:Delphi园地技巧文章控件使用 → 在Delphi中随意控制DBGrid 每一行的颜色简易方法
在Delphi中随意控制DBGrid 每一行的颜色简易方法
日期:2004年10月29日 作者: 人气: 查看:[大字体 中字体 小字体]
Delphi中使用 DBGrid 控件时,每一列都能按需要随意地改变颜色,但要改变每一行的颜色却很难,那么在不重新制作新控制件的情况下,有没有好的办法让DBGrid按照用户自己要求随意改变每一行颜色的?答案是有,下面介绍一种简单的方法。

    要改变DBGrid每一行的颜色,只要在ONDrawColumnCell事件中设定要改变颜色的行的条件,
并指定DBGrid的Canvas.Brush.color属性并且把Canvas.pen.mode属性设成pmmask,再调用DBGrid 的DefaultDrawColumnCell方法即可。注意在改变这两个属性前要先保护好原来的
Canvas.Brush.color 属性的值,调节器用完成 DefaultDrawColumnCell 方法后要把原属性值改
回,现以 Delphi\demos\db\clientmd 目录下的演示程序 clintproj.dpr 为例子,做简单说明,下面是对程序中的栅格 MemberGrid 的合条件的整行进行变色,变成黑体背景黄色的,其它不合条件的行的颜色为正常字体,白色背景,只在 DrawColumnCelL 事件中设条件其它的不变,如下:

procedure TClientForm.MemberGridDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  oldcolor:tcolor;
  oldpm:tpenmode;
begin
  if DM.ProjectTEAM_LEADER.Value = DM.Emp_ProjEMP_NO.Value then  {设定变色的行的条件}
     MemberGrid.Canvas.Font.Style := [fsBold];
     MemberGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
     {上面是演示程序的原内容,以下是增加部分}
  if DM.ProjectTEAM_LEADER.Value =DM.Emp_ProjEMP_NO.Value then {设定变色的行的条件}
  begin
     oldpm:= MemberGrid.Canvas.pen.mode;
     oldcolor:= MemberGrid.Canvas.Brush.color;
     MemberGrid.Canvas.Brush.color:=clyellow;
     MemberGrid.Canvas.pen.mode:=pmmask;
     MemberGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
     MemberGrid.Canvas.Brush.color:=oldcolor;
     MemberGrid.Canvas.pen.mode:=oldpm;
  end;
 
end;
 
    感觉上这个方法和前面的几个颜色控制方法的原理是一样的,都是通过ONDrawColumnCell事件来实现变色醒目美化的功能。:)

(出处:www.delphibbs.com)

相关文章:
·多表头的DBGridEH导出到Excel中
·DBGrid应用全书之定义表格颜色
·打印TDBGrid内容
·自制精美易用的DBGrid
·把DBGrid导出到Excel表格(支持多Sheet)
·隔行改变DBGrid网格颜色
·在Delphi的DBGrid中插入其他可视组件
·锁定DBGrid左边的列
·点击DBGrid的Title对查询结果排序
·去掉DbGrid的自动添加功能
 → 特别推荐
 → 热点TOP10
关于我们 | 广告服务 | 发布资源 | 联系站长 Copyright © 2002-2006 Delphi园地 All Rights Reserved