设置DBGrid当前行的颜色

本文介绍如何通过创建TDBGrid的子类MyDBGrid来提供访问父类保护成员的方法,并展示了如何在DrawColumnCell事件中使用这些方法来改变当前行和其他行的背景颜色。

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


定义个子类MyDBGrid继承TDBGrid,以提供访问父类保护成员的接口。
type
  MyDBGrid=class(TDBGrid)
  private

  public
    function GetRow:integer;
    function IsCurrent:boolean;
end;

 


function MyDBGrid.GetRow: integer;
begin
  result:=row;
end;

function MyDBGrid.IsCurrent: boolean;
begin
  result:=(DataLink.ActiveRecord=row-1);
end;

 

判断是否是当前行。

type
  TGlobal=class

      class function IsCurrentRow(AMyDBGrid:MyDBGrid):boolean;

end;

class function TGlobal.IsCurrentRow(AMyDBGrid: MyDBGrid): boolean;
begin
  result:=AMyDBGrid.IsCurrent;
end;

 

在DrawColumnCell事件中。

 

procedure TFormMain.MyDBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if TGlobal.IsCurrentRow(MYDBGrid(Sender)) 

    begin
        (Sender as TDBGrid).Canvas.Brush.Color :=$000080FF;

    end
    else
    begin
      if (Sender as TDBGrid).DataSource.DataSet.RecNo  mod 2 =0 then
        (Sender as TDBGrid).Canvas.Brush.Color :=rgb(246,246,246);   //$00F3F3F3; //定义背景颜色
    end;
    (Sender as TDBGrid).DefaultDrawColumnCell(Rect,DataCol,Column,State);

end;

 

效果:

 

 

 

 

 

转载于:https://www.cnblogs.com/lance2088/archive/2008/08/21/1272976.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值