昨天刚有个人问了,
在dataset端加个计算字段,在oncalcRecord事件中加代码
yourdataset.fieldvalues['calcfield']:=yourdataset.recno;

解决方案 »

  1.   

    看错了,不好意思
    yourdataset.fieldvalues['calcfield']:=(yourdataset.recno) mode 10;
      

  2.   

    ongettext事件中可能可以,如果设置一个计算字段应该也可以实现的!
      

  3.   

    哎呀,我以前在StringGrid里实现过,要不要?
      

  4.   

    请教以上老大:怎样实现对DBGrid的打印以及预览?谢谢
      

  5.   

    yourdataset.fieldvalues['calcfield']:=abs(yourdataset.recno) mode 10;
      

  6.   

    要實現dbgrid的打印預覽有一第三方控件可以實現
      

  7.   

    首先给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;
      

  8.   

    楼主使用的应该是SQL型的DBMS,所以使用所谓的recno是行不通的,您可以查看一下,无论哪一条记录,它的recno都是-1
      

  9.   

    如果不需要翻页的话,我见过jiangtao的一种方法,感觉还不错哦。
     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;