如题。
ps:我用了faq中的方法,可是没有用,请各位老大帮忙

解决方案 »

  1.   

    你先新增一个字段,然后:
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    with DBGrid1.DataSource.DataSet do
    begin
     if DataCol = 0 then
       DBGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, IntToStr(RecNo));
    end;
      

  2.   

    BDE的RecNo属性无效,用STRINGGRID自己加吧
      

  3.   

    有效的,TDataSet的RecNo是无效的,都为-1,而它的派生类如TTable,TQuery等是有效的!
    已做试验!
      

  4.   

    刚学到一种思路,请看看怎么样
    先给dbgrid添上一列,不连任何数据,其Title.Caption属性设为'序号' ,再
    procedure TForm.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      if (Column.Title.Caption = '序号') then
      begin
        (Sender as TDBGrid).Canvas.TextRect(Rect,Rect.Left,Rect.Top,IntToStr(ibquery.RecNo));
      end;
    end;
      

  5.   

    http://borland.mblogger.cn/aiirii/category/463.aspx
      

  6.   

    有一个简单的办法,在数据表里加入一个字段,设置成自动标识,这样他会自己累加,然后在DBGID里面加入这个字段就可以了
      

  7.   

    procedure Tform1.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
    if Column.Index = 0 then
      with DBGrid1.Canvas do
        begin
          FillRect(Rect);
          TextOut(Rect.Left+2, Rect.Top+2, IntToStr(DBGrid1.DataSource.DataSet.RecNo));
        end;
    end;我一直这样做,挺好的
      

  8.   

    在关联的数据源(如adoquery)添加一个计算字段No,
    procedure TDM.ADOQuery2CalcFields(DataSet: TDataSet);
    begin
    with ADOQuery1 do
    begin
    FieldByName('No').AsString :=ADOQuery1.Fields.DataSet.RecNo;
    end;这样看看
      

  9.   

    同意constantine(飘遥的安吉儿) 
      

  10.   

    如何解决BDE的RecNo总是为-1的问题?
      

  11.   

    将数据导入TClientDataSet,加一个序号字段。欢迎访问 Grid++Report 的网站:www.GridppReport.com。一个可以丢开显示网格(各种Grid)做出整个报表系统的构件,非常适合制作动态报表,票据套打,中国式特殊格式报表。
      

  12.   

    用计算字段(ADO)procedure TFrmDBBase.adodstCalcFields(DataSet: TDataSet);
    begin
      inherited;
      if not (DataSet.State in [dsEdit, dsInsert]) then
        DataSet.FieldByName('Sequence').AsInteger :=
          TADODataSet(DataSet).Recordset.AbsolutePosition;
    end;