我也用过这些方法,效果不好。
最好用TDBGridEh控件,会更好。

解决方案 »

  1.   

    迈克兄弟,哪儿有TDBGridEh控件呀。兄弟没有使过。
      

  2.   

    如此就可以了
    procedure TFrm_sfs.DG_djdDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      if DG_djd.DataSource.DataSet.FieldByName('RECID').AsInteger mod 2 = 0 then
        begin
          DG_djd.Canvas.Brush.Color:=clWindow; 
        end
      else
        begin
          DG_djd.Canvas.Brush.Color:=clSilver;
        end;
      if (gdSelected in state)and dbgrid1.Focused then 
        begin
          dbgrid1.canvas.brush.color:=clblue;
          dbgrid1.Canvas.font.Color:=clwhite;
        end;
    end;
      

  3.   

    上面的dbgrid1写错了, 应该是你的网格名DG_djd
      

  4.   

    对不起,写漏了一行,全部应如此:
    procedure TFrm_sfs.DG_djdDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      if DG_djd.DataSource.DataSet.FieldByName('RECID').AsInteger mod 2 = 0 then
        begin
          DG_djd.Canvas.Brush.Color:=clWindow; 
        end
      else
        begin
          DG_djd.Canvas.Brush.Color:=clSilver;
        end;
      if (gdSelected in state)and DG_djd.Focused then 
        begin
          dbgrid1.canvas.brush.color:=clblue;
          dbgrid1.Canvas.font.Color:=clwhite;
        end;
      DG_djd.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;