首先给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;
yourdataset.fieldvalues['calcfield']:=(yourdataset.recno) mode 10;
给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.Columns定义一个新Column,不要加FieldName
2.加一个Event,如下:(Note:把行号的Column放在第一列)procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
RowHeight,Row,Col:INteger;
begin
RowHeight := Rect.Bottom - Rect.Top;
Row := (Rect.Top div RowHeight) - 1;
if datacol=0 then //定义行号列
(Sender as TDBGrid).Canvas.TextOut(Rect.Left, Rect.Top, IntToStr(Row));
end;