dbgrid用两种颜色间隔分行显示

Delphi代码如下:

 procedure   TForm1.DBGrid1DrawColumnCell(Sender:   TObject;   const   Rect:   TRect;  
      DataCol:   Integer;   Column:   TColumn;   State:   TGridDrawState);  
  begin  
      with   (Sender   as   TDBGrid)   do  
      begin  
          if   ((State   =   [gdSelected])   or   (State   =   [gdSelected,   gdFocused]))   then  
          begin  
              Canvas.Font.Color   :=   clHighlightText;  
              Canvas.Brush.Color   :=   clHighlight;  
          end  
          else  
          begin  
              if   DataSource.DataSet.RecNo   mod   2   <>   0   then  
                  Canvas.brush.Color   :=   clRed  
              else  
                  Canvas.brush.Color   :=   clYellow;  
          end;  
          DefaultDrawColumnCell(Rect,   DataCol,   Column,   State);   //这行是关键  
      end;  
  end;

 

简单的方法

  procedure   TForm1.DBGrid1DrawColumnCell(Sender:   TObject;   const   Rect:   TRect;  
      DataCol:   Integer;   Column:   TColumn;   State:   TGridDrawState);  
  begin  
      if   (Table1.RecNo   mod   2)=0   then  
          Dbgrid1.Canvas.Brush.Color:=clred;  
      else  
          Dbgrid1.Canvas.Brush.Color:=clblue;  
      Dbgrid1.DefaultDrawColumnCell(Rect,   DataCol,   Column,   State);  
  end;

 

改为c++builder 代码就是

void __fastcall TMainFrm::Veh_DBGridDrawColumnCell(TObject *Sender, const TRect &Rect,
    int DataCol, TColumn *Column, TGridDrawState State)
{

  try
  {
  if(Veh_DBGrid->DataSource->DataSet->RecNo%2==0)
  {
   Veh_DBGrid->Canvas->Brush->Color=clSilver;
  }
  else
  {
   Veh_DBGrid->Canvas->Brush->Color=clWindow;
     }
  Veh_DBGrid->DefaultDrawColumnCell(Rect,DataCol,Column,State) ;

  }
  catch(...)
  {
   //
  }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值