如何在程序中实现undo(撤消)功能(三层程序)?(200分)

  • 主题发起人 主题发起人 fpsky
  • 开始时间 开始时间
F

fpsky

Unregistered / Unconfirmed
GUEST, unregistred user!
客户要求在程序中实现像WORD的undo功能,包括在文本框,DBGRID中实现,我可以
前没做过啊,我快晕了,帮帮我。
 
TClientDataSet.UndoLastChange
好像是这个方法,有点记不清了。不过不可能做的和Word那样。
 
在DBGRID中好实现,你将QUERY的REQUESTLIVE设置成TRUE。那么数据不会马上进行写库动作,这时不要写库就可以恢复,等下个操作执行前写库一次!就可保存新的操作!
文本框的你可在它下面建个不显示的文本框,记录上次的值。要恢复的时候取回付值一次就可!
当然,这个办法不能实现多级恢复的要求,那就要你想办法了!
 
DBGRID你选择数据缓存可以的.
edit你自己编辑前先保存下来.不过只能保存前一次的值.
 
你可以在客户端建成个数据表,记录所有的操作按取消时再根据数据表中的记录进行UNDO不就行了?
 
如果客户要求可以Undo N个步骤,你就惨了!
如果只是想数据提交后Undo一步方法就很多,最好自己控制,
比如提交后,记录下这条信息的关键字,影响的表单等,Undo时删除等。
 
借用CrazyCat的思路:
文本框后面放个listbox来存放每步骤的操作。
 
请问大侠们,有没有比较方便一点的方法,或者第三方控件也可以。谢谢
 
TClientDataSet.UndoLastChange就可以做到N步撤消啊!
 
我先试一下
 
还有好办法没有?
 
李维的书上好像有呢
 
TClientDataSet有几个方法都可以的哦!

UndoLastChange
savepoint
等!
 
自己动手吧
 
你可以试试用:
Query.RevertRecord;
在单机下面的是可以成功的你试试吧
 
多人接受答案了。
 
后退
顶部