首先给adoquery1增加一个 type 为 int, field type 为calculated 的字段,
给dbgrid添加一个onDrawDataCell事件
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
if field=adoquery1.FieldByName('新增字段名') then
dbgrid1.Canvas.TextOut(rect.Left,rect.Top,inttostr(adoquery1.RecNo));
end;

解决方案 »

  1.   

    我按照如下代码:可序号是 -1,2,3,...第一个怎么会是 -1 ?procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;  Field: TField; State: TGridDrawState);
    begin
    if field=adoquery1.FieldByName('xuhao') then
    dbgrid1.Canvas.TextOut(rect.Left,rect.Top,inttostradoquery1.RecNo));
    end;procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);
    begin
    ADOQuery1.Fieldbyname('xuhao').value:=inttostr(adoquery1.RecNo);
    end;谢谢!!!
      

  2.   

    procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);
    begin
    ADOQuery1.Fieldbyname('xuhao').value:=ABS(adoquery1.RecNo);
    end;
      

  3.   

    procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);
    begin
    ADOQuery1.Fieldbyname('xuhao').value:=inttostr(adoquery1.RecNo);
    end;
    这个过程不用!把这个过程注释掉!