刚才发过贴了,可能写的模糊了,现在详细如下:
     DBGridEh1中根据奇偶行来改变颜色,我写的程序如下:
procedure TFrmEditTR_stQuota.DBGridEh1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
begin
  if ((FDmdTranMaster as TDmdTR_stQuota).QrySecond.RecNo mod 2) = 1 then
  begin
    DBGridEh1.Canvas.Brush.Color := $00FF0000;
  end
  else
  begin
    DBGridEh1.Canvas.Brush.Color := $00FFFFC1;
  end;
  DBGridEh1.DefaultDrawColumnCell(rect, datacol, column, state);
end;先在的问题是不管奇偶行都是一个颜色,怎么办啊???求救啊,不染不能下班拉

解决方案 »

  1.   

    aqStore为dgeStore.DataSource.DataSet;dgeStore为TDBGridEh:
    procedure TfrmEhlib.dgeStoreDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumnEh;
      State: TGridDrawState);
    begin
      if Odd(aqStore.RecNo + 1) then
      begin
        dgeStore.Canvas.Brush.Color := clCream;
        dgeStore.Canvas.Font.Color := clNavy;
      end;
      if (Rect.Top = (dgeStore.CellRect(dgeStore.Col, dgeStore.row).Top))
          and not (gdFocused in State) then
        dgeStore.Canvas.Brush.Color := $00FFBB95;  dgeStore.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;
      

  2.   

    if (ADOquery1.RecNo mod 2)=1  then
      begin
        with (Sender as TDbGrideh).Canvas do
        begin
          Brush.Color:=$00FFFFC1;
          FillRect(Rect);
        end;
      end;
      (Sender as TDbGrideh).DefaultDrawColumnCell(Rect,DataCol,Column,State);
      

  3.   

    procedure TFrmEditTR_stQuota.DBGridEh1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumnEh;
      State: TGridDrawState);
    begin
     if (QrySecond.RecNo mod 2)=1 then
      begin
        DBGridEh1.Canvas.Brush.Color := $00FF0000;
      end
      else
      begin
        DBGridEh1.Canvas.Brush.Color := $00FFFFC1;
      end;
      DBGridEh1.DefaultDrawColumnCell(rect, datacol, column, state);
    end;
      

  4.   

    改动一句if ((FDmdTranMaster as TDmdTR_stQuota).QrySecond.RecNo mod 2) = 1 then
    改为
    if (QrySecond.RecNo mod 2)=1 then
      

  5.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    Var
     Row : integer;
    begin
     Row := DBGrid1.DataSource.DataSet.RecNo;
     If (Row mod 2)<>0 Then
      DBGrid1.Canvas.Brush.Color:=clMoneyGreen;
      DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
    end;
      

  6.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    Var
     Row : integer;
    begin
     Row := DBGrid1.DataSource.DataSet.RecNo;
     If (Row mod 2)<>0 Then
      DBGrid1.Canvas.Brush.Color:=$00FF0000;
     Else 
      DBGrid1.Canvas.Brush.Color:=$00FFFFC1;
      DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
    end;
    你看可以了吗?