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;我一直这样做,挺好的
在关联的数据源(如adoquery)添加一个计算字段No, procedure TDM.ADOQuery2CalcFields(DataSet: TDataSet); begin with ADOQuery1 do begin FieldByName('No').AsString :=ADOQuery1.Fields.DataSet.RecNo; end;这样看看
用计算字段(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;
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;
已做试验!
先给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;
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;我一直这样做,挺好的
procedure TDM.ADOQuery2CalcFields(DataSet: TDataSet);
begin
with ADOQuery1 do
begin
FieldByName('No').AsString :=ADOQuery1.Fields.DataSet.RecNo;
end;这样看看
begin
inherited;
if not (DataSet.State in [dsEdit, dsInsert]) then
DataSet.FieldByName('Sequence').AsInteger :=
TADODataSet(DataSet).Recordset.AbsolutePosition;
end;