各位论坛上的大虾:
    小弟是用DBGRIDEH这个控件与数据集相连,既做输入,也做浏览,现在想实现一个这样的功能,当在第一行输入或者编辑数据的时候,马上在下面的一行会跳出一个空行,然后当跳转到第二行输入的时候,马上又在下面会跳出多一个空行,就是说,当在最后一行输入的时候,最下面,总有一个空行会自动跳出来,可以随时供用户进行输入操作,请问有没有办法能够实现呢?如果这个控件实现不了,能否用其它类似的控件来实现呢?前提是不要用STRINGGRID,因为小弟水平有限,所以尽量想用控件来做,减少代码的编写工作,请各位大虾赐教,谢谢!!!

解决方案 »

  1.   

    如果是用ADO做。
    那么你在OnCellChange里(不记得有没有这个事件了,应该有类似的)写上
    ADOQuery.Insert;
    那你每么输入的时候,下面就会多一个空行。然后行头是带一个*号!
      

  2.   

    你需求是:
       在dbgrideh中,不論修改或新增,都必須保證最底下有一條空記錄。用clientdataset應可滿足你的要求。
    1、dbgrideh與clientdataset連接;
    2、在dbgrideh中控制clientdataset的行為;注意畫面上focus的控制;
      

  3.   

    粗略做了一下,可以達到效果。其他具體控制問題,要看你的一些實際需求了控件:table or query --dataprovider--clientdataset--datasource--dbgridprocedure TForm1.AppendAnEmptyRecord(vCds: TClientDataSet);
    var
      vbk: TBook;
    begin
      //判斷最後一行,因為根據你的需求推斷,只有在編輯最后一行時,才需要再加一條空白記錄
      if vCds.RecNo=ds1.RecordCount then
      begin
        vbk:= vCds.GetBook;
      end
      else
        Exit;
      vCds.Last;
      //判斷是否空記錄,需要根據你的表結構了,以下只是例子
      if vCds.Fields[0].AsString='' then
      begin
        vCds.Append;
        vCds.Post;
      end;
      vCds.GotoBook(vbk);
    end;需要在以下事件加代碼
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      //需要事先加一條空白記錄
      //記得在提交時刪除空白記錄
       ds1.Append;
       ds1.Post;
       AppendAnEmptyRecord(ds1);
    end;procedure TForm1.dbgrd1ColEnter(Sender: TObject);
    begin
       AppendAnEmptyRecord(ds1)
    end;