本人想在dbgrid中产生隔行替换背景色的效果.可是无奈,不知为何我的Query1.RecNo的指老是为-1小弟的源代码如下,请各位大虾给小弟指点迷津巴:procedure TFrmQryPOrderA.DbgMainDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
begin
  inherited;  if gdSelected in State then Exit;
  if (FDmdQueryBase as TDmdQryPOrderA).QryMaster.RecNo mod 2 = 0 then
  begin
    DbgMain.Canvas.Brush.Color := clBlue;
  end
  else
  begin
    DbgMain.Canvas.Brush.Color := clred;
    DbgMain.Canvas.font.Color := $00FF0002;
  end;
  DbgMain.DefaultDrawColumnCell(rect, datacol, column, state);
end;

解决方案 »

  1.   

    (FDmdQueryBase as TDmdQryPOrderA).QryMaster.RecNo 这是什么?
    DBGrid1.DataSource.DataSet.RecNo 不就行了
      

  2.   

    (FDmdQueryBase as TDmdQryPOrderA).QryMaster不是你dbgrid的数据集。
      

  3.   

    kaguo老兄:
    (FDmdQueryBase as TDmdQryPOrderA).QryMaster 就相当于一个query
    你说的DBGrid1.DataSource.DataSet.RecNo我也试过了,结果它的值也还是等于-1,不知道为什么.
      

  4.   

    你可以看看AdoQuery的游标类型是什么,也就是CursorType
      

  5.   

    给位大虾,不好意思,小弟终于找到原因了,原来我用的dbgrid控件是同事们改过的控件,换用系统自带的dbgrid就好了,呵呵.
     
    给为大虾不好意思啊!