dbgrid-->datasource-->clientdataset, 如果在数据库的表中没有行号这个字段的话,要在dbgrid前面一列增加一列显示行号1,2,3.。。。
可以如下操作,个人觉得比较简单:
按照步骤:1.clientdataset字段编辑器双击打开,先把数据库中要显示的字段都添加进来addall fields, 然后增加一个字段id,类型fieldkind为fkInternalCalc (fkcalculate不行会出错),
然后在这个字段的onGetText事件中写上如下:
procedure TfmMain.cdsViewidGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
begin
text:=inttostr(self.cdsView.RecNo);
displaytext:=true;
end;
2.在dbgrid中可以正常使用这个字段了。
作为备忘。
------------------
另外一只方法,就是直接在dbgrid的drawcolumncell事件中,使用textout方法。
先在dbgrid的字段编辑器新加一列,fieldname字段名空着不和任何实际的数据库字段关联。
然后在drawcolumncell事件中:if column.Title.Caption='NO' then //添加一个自动序号
self.DBGrid1.Canvas.TextOut(rect.Left+2,rect.Top,inttostr(self.cdsList.RecNo));
注意这个语句