一般的多步Undo/Redo操作都有什么思路?
我在TTreeView里想实现多步Undo/Redo操作,但不理想。
怎样才能实现?

解决方案 »

  1.   

    建一个tstringList,用自定义的标示符来各开每次操作,不过不能无限多,3,4步还是可以的
      

  2.   

    其实这问题论坛中回答过很多遍了~~~买本设计模式这样的书看看吧,以后自己就能合理解决此类稍微复杂些的程序设计问题定义一个抽象的操作类,定义执行、取消两个虚方法,再根据每种不同的操作具体出不同的从抽象的操作类派生出不同的类,覆盖两个虚方法,不同的操作类定义不同的数据结构储存用于撤消、重做的数据.用个List把具体的对象串起来,一个标记指向当前操作对象,标记前后分别为撤消链表和重做链表.通过对象的执行、取消两个方法来完成撤消、重做,并移动操作标记.执行一个新操作后,构造新操作对象,并删除标记以后的操作对象.
      

  3.   

    用栈来保存操作序号更好的办法是采用GOF的设计模式一书中的Command模式