首先 DELPHI5 的DBGRID 有BUG的,1、如果你不要保存,只要把DBGRID设成READONLY就行了!
2、不太清楚我以前也用DELPHI开发软件,不过我都是用STRINGGRID来代替DBGRID
因为DBGRID有BUG.偶尔到DELPHI版来走走,以上我以前的经历。

解决方案 »

  1.   

    不知楼上说DBGrid有Bug是体现在哪方面,还是DBGrid的功能不符合你的要求?如果是这样,你自己完全可以自己修改DBGrid。而用StringGrid来代替DBGrid是一件耗时的工作,可能存在你并一定意思到的隐藏问题。1、如果修改一行后再跳到第二行,就会自动保存,如何取消自动保存?
    在DBGrid中,切换行之后,是会把修改后的数据数据写到数据集中。如果你不想把数据集中的数据保存到数据库中。可以调用CancelUpdates。其中是BDE数据集的话,先设置CachedUpdate为True。2.我希望跳到另一个CELL中后,光标会再在CELL中数值的后面,而不是
    选中了CELL中的所有值。
    我觉得这么处理是合理的,因为一旦要重新编辑数据,我想更多的可能性是去除原来的值。这时InplaceEdit中的数据是全选了,就可以直接输入新值。而不用先全选所有数据,然后删除编辑。当然如果你真的需要光标会再在CELL中数值的后面,可以修改DBGrid中的部分代码,大概在UpdateEdit这个函数里面。
      

  2.   

    CancelUpdates是取消未决数据,我是希望暂时不要保存,等操作者输入的一组完成后通过POST保存到数据库。我用的是TADOTable。
      

  3.   

    APPEND多个记录,如果值后一起保存
      

  4.   

    APPEND多个记录,编辑值后一起保存
      

  5.   

    我觉得是不行的。数据完全在数据集中控制,Post之后也只会保存到数据集中,从数据集到数据库,有需要一个过程的,这时你再控制也来得及,没必要限制Append多个记录后,一起保存吧。
      

  6.   

    类似于BDE中数据集的CachedUpdate为True后可以一起POST,ADOTABLE不能做到吗?
    是不是因为ADOTABLE是直接面对数据库的,而BDE数据集有个中转过程(BDE)POST 是将修改的数据写到数据库(DELPHI HELP)
      

  7.   

    Post绝对不是把修改的数据直接保存到数据库中,而是保存到DataSet。只是有些Dataset可能会直接写到数据库中而已,比如CachedUpdatae为False的Table。
    对于ADO组件,可以设置LockType为ltBatchOptimistic,来决定DataSet中的数据按批处理提交到数据库中,具体看方法CancelUpdate和UpdateBatch的帮助