我想实现DBGrid奇偶行颜色的显示,下面是我的代码,可是当我一按新增时,它所有行的颜色都变成了$00FFFFC2这种(也就是所有行都变成只有一种颜色了),可是一按取消后,它的奇偶行颜色又能恢复正常.
请问各位大吓们,该如何去做呀?if DBGrid1.DataSource.DataSet.RecNo mod 2 = 1 then//奇偶行
  begin
    DBGrid1.Canvas.Brush.Color := $00DDE8FF;
  end
  else
  begin
    DBGrid1.Canvas.Brush.Color := $00FFFFC2;
    DBGrid1.Canvas.font.Color := $00FF0002;
  end;
  DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then//?取行
    begin
      DBGrid1.Canvas.Font.Color :=clRed;
      DBGrid1.Canvas.Brush.Color :=clYellow;
      DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
    end;

解决方案 »

  1.   

    procedure TMainForm.tb2gd0DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
       if gdSelected in State then  //选中行
      begin
        TDBGrid(sender).Canvas.Brush.Color := clInfoBk;
        TDBGrid(sender).Canvas.Font.Color := clFuchsia;
      end 
      else begin
        if TDBGrid(sender).DataSource.DataSet.RecNo mod 2=0 then //偶数行
          TDBGrid(sender).Canvas.Brush.Color := clSkyBlue
        else
          TDBGrid(sender).Canvas.Brush.Color := clInactiveCaptionText  ;//奇数行
      end;               
      TDBGrid(sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);      
    end;
      

  2.   

    你增加数据的时候用的和显示的是一个数据集 而且你用的dbedit吧
      

  3.   

    我用的是DBEdit,那请问一般用什么控件来作为数据输入的控件呀?
      

  4.   

    用 if gdSelected in [dsInsert,dsEdit] then  这种方法判断一下
      

  5.   

    if gdSelected in [dsInsert,dsEdit] then 
    不行吗