说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在Delphi中随意控制DBGrid 每一行的颜色

HTML文档下载 WORD文档下载 PDF文档下载
在Delphi中随意控制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;

备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘