ADOQuery1.Append的时候,自动加一个序号1
2
3
然后,删除2的时候,3自动会变成2,
1
2这样的效果怎么实现呢?

解决方案 »

  1.   

    而且  我设置了不自动保存 LockType   :=   ltBatchOptimistic; 最后才通过按钮提交的
      

  2.   

    1、FixedCol 原来基础上加1,使该列不能被拖拽,影响显示效果
    2、在屏幕上显示
      方法有2
      1)使用数据方式,在数据集中创建一个序号字段,如果有中间数据行删除,会麻烦些
      2)仅画出来,在OnDrawColumnCell事件进行调用Grid.Canvas.TestOut  注:如果使用DBGridEh,这件事件会简单些。
      

  3.   


    在 ado 下可以通過 adoQuery.recNo  來處理。 增加一個計算字段。
      

  4.   

    以前做过,adodataset做的,专门加了个字段,具体的有点忘了,网上搜一下应该有例子的
      

  5.   

    设计字段时,增加一个计算字段.即可,.recNo  就可以作为序号.
      

  6.   

    可是我还没提交到数据库啊,只是在DBGRID里面删除了,虚拟字段不行吧
      

  7.   

    我是这么做的,自己加了一列No,select '' as No ... from tableName
    然后在DBGrid的onDrawColumnCell里面加入
      if (Sender as TDBGrid).DataSource.DataSet.RecNo > 0 then
      begin
        if Uppercase(Column.FieldName) = 'NO' then
          (Sender as TDBGrid).Canvas.TextOut(Rect.Left + 2, Rect.Top, IntToStr(((Sender as TDBGrid).DataSource.DataSet.RecNo)));
      end;
    感觉这样效果好点.
      

  8.   

    void __fastcall TFrmSaleOrder::DBGrid1DrawColumnCell(TObject *Sender,
          const TRect &Rect, int DataCol, TColumnEh *Column,
          TGridDrawStateEh State)
    {
        if(Column->Index==0)
        {
          TDBGridEh *dbgrd=(TDBGridEh*)Sender;
          dbgrd->Canvas->Brush->Color=clBtnFace;
          dbgrd->Canvas->FillRect(Rect);
          TRect rct(Rect);
          Frame3D(dbgrd->Canvas,rct,clWhite,(TColor)RGB(0x80,0x80,0x80),1);
          dbgrd->Canvas->Font->Color = clBlue;
          dbgrd->Canvas->TextOut(Rect.Left+2,Rect.Top+2,IntToStr(dbgrd->DataSource->DataSet->RecNo));
        }
    }这样也可以解决