请问各位大侠,小弟想让DBGrid的相邻两行以不同的颜色显示,写了如下代码,可总是以clScrollBar来显示,好像是if Query1.RecNo mod 2=0 then没体作用,请帮我看看吧,谢谢了: 
  if Query1.RecNo mod 2=0 then
    DBGrid1.Canvas.Brush.Color:=clInfoBk
  else
    DBGrid1.Canvas.Brush.Color:=clScrollBar;

解决方案 »

  1.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      if Odd(TDBGrid(Sender).DataSource.DataSet.RecNo) then
        TDBGrid(Sender).Canvas.Brush.Color := clInfoBk
      else TDBGrid(Sender).Canvas.Brush.Color := clScrollBar;
      TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;
      

  2.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      if Odd(TDBGrid(Sender).DataSource.DataSet.RecNo) then
        TDBGrid(Sender).Canvas.Brush.Color := clred
      else 
        TDBGrid(Sender).Canvas.Brush.Color := clblue;
      TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;
      

  3.   

    不行啊,还是一种颜色
      if Query1.RecNo mod 2=0 then
          DBGrid1.Canvas.Brush.Color:=clBlue
      else
        DBGrid1.Canvas.Brush.Color:=clScrollBar;
      (sender as TDBGrid).DefaultDrawColumnCell(Rect,DataCol,Column,State);
    显示的是 clScrollBar
      if Odd(TDBGrid(Sender).DataSource.DataSet.RecNo) then
        TDBGrid(Sender).Canvas.Brush.Color :=clBlue
       else TDBGrid(Sender).Canvas.Brush.Color := clScrollBar;
      TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
    显示的是clBlue
    都是一种颜色啊