各位高手们以及跟我一样菜的朋友们,在你们所做的系统中(不管大小,不论什么类型的程序)你们的程序里面有没有undo和redo功能?如果有的话,你们都采用什么方式实现的呢?希望大家都不吝赐教,让我也学学,我的这个 东西做得不好阿!!

解决方案 »

  1.   

    呵呵,开玩笑好哦!
    本人报着学习的想法UP一下!不过个人觉得只有类似文档编辑类的东西才用得上UNDO,REDO,
    否则,在其他方面,按下OK后,还想回头,不大好吧。
      

  2.   

    LKJ99(阳江in深圳,路在何方...) 兄不知道是做什么软件的,如果你们公司软件没有这个功能的话,估计不太好吧?就常用的mis系统,用户在处理数据的时候,难免会弄错了,所以必须要有这个功能的!!
      

  3.   

    li_zhifu(东北人) 兄,我没有说你骂人,哈哈,东北人都是活雷锋阿!!!尊敬都来不及呢!
      

  4.   

    一般文档处理、图形处理等程序都会有Redo、Undo功能,对数据库来说似乎并不容易(必要性好像也不是很高),不好操作前先Backup、及确认等
      

  5.   

    如果处理文本数据时可以undo的只不过是一次性
      

  6.   


    平常每一操作把一部分数据放到undo的栈中,在操作undo时把一部分数据放到redo中。---------------------------------------
    用栈数据结构---undo
    redo也用栈
      

  7.   

    cainiao000(翠鸟) 兄的想法是理论上的,你肯定没有这样做过实践把?从理论上讲,这个完全可以,不过实践中,不可行!
      

  8.   

    ghyghost(著名关心CSDN结贴率爱国主义人士代表) ,哈哈!谢谢捧场阿1这么多回答中,还没有找到比较爽的答案!
      

  9.   

    undo做过,不过用在图形上(由一条双向连表组成的图形),操作时双向连表的节点,放到undo栈中(由节点和当前位置组成),undo时就在连表上增删节点。
      

  10.   

    你的那个undo栈怎么定义和控制的?能不能详细点?
      

  11.   

    同意 li_zhifu(东北人) 说法!我做的C/S结构的MIS系统比较多,
    我经常使用非数据感知控件对数据库进行操作,
    例如EDIT代替DBEDIT,STRINGGRID、TREEVIEW、LISTVIEW代替DBGRID。
    用户编辑数据时,不对数据库做任何事情;但编辑完后,
    会给用户2条路走,一是“保存”,二是“取消”
      

  12.   

    接节点主要内容点(x,y)组成栈由(x,y)和连表上的位置(第几个点)等信息组成
    ----------------------------------------------
    undo只要恢复操作前这点的位置
      

  13.   

    LKJ99(阳江in深圳,路在何方...)  
    你都是这样做的吗?我认为不可取
      

  14.   

    同意 li_zhifu(东北人) 说法!我做的C/S结构的MIS系统比较多,
    我经常使用非数据感知控件对数据库进行操作,
    例如EDIT代替DBEDIT,STRINGGRID、TREEVIEW、LISTVIEW代替DBGRID。
    用户编辑数据时,不对数据库做任何事情;但编辑完后,
    会给用户2条路走,一是“保存”,二是“取消”如果按照你的这个做法,那么加入用户需要修改100个数据,他已经正确的修改了99个,这偏偏最后一个错了,他现在取消,然后重新修改这100个数据么?那你的程序也太不人道了!
      

  15.   

    To zhang21cnboy(沧桑男人)
    存储过程不就解决了?
    或是处理成关联表,它给你自动调用事务也一样的。
      

  16.   

    ihihonline(小小->简单些再简单些,平淡些再平淡些) 兄,并不是所有的数据库程序都能使用存储过程的!比如说实时数据库,你怎么用存储过程?
      

  17.   

    别的咱就先不讨论了,就比说word里面的undo和redo功能,如果是你的话,你会怎么去实现呢?
      

  18.   

    To: ihihonline(小小->简单些再简单些,平淡些再平淡些) 
    你能不能说说理由!??续上:
    其实我很明白这种做法的利与弊!!!
    最严重的弊是:与用数据感知控件做事情相比,
    这个方法执行效率不是很高,速度不是很快,能支持的客户端估计
    不能超过100个(未真实测试过,按照普通的C/S结构200多个客户端来估算),
    要想移植到三层结构绝对不行!但是,利的方面,主要有:
    1、控制事务处理非常容易,不象用数据感知控件,Star了Trans半天,
       还不知道要等多长时间(修改数据)才能Commit或RollBack;
       而我这个是等到用户修改数据完毕点保存的时候才做:
          检查数据合法 -> StarTrans -> CommitTrans,
       StarTrans 和 CommitTrans之间的时间只有1、2秒。
    2、你们有没有遇到过使用数据感知控件处理多层的主从表问题,
       我这个方法不仅可以轻易解决很多问题,而且,
       关键是事务控制也十分简便!3、我这个方法可以随心所欲的去控制很多数据处理。
    希望大家多多讨论!!!