我知道使用Command模式,但是多个文本框等如何实现?

解决方案 »

  1.   

    当离开文本框的时候把文本框里的内容(包括文本框的名称等)按一定的格式添加到一个TStringList中,如果UnDo,则从TStringList中向前取出,ReDo则向后取出
      

  2.   

    把操作相关的信息保存在类中,在使用List来存取
    Command模式也很容易做到啊改改就行了...
      

  3.   

    postren(小虫) :如果每个文本框都这样做,似乎不可行。另外,如果应用插件机制提高软件的扩展性,如何统一管理?
      怎么办啊???
      

  4.   

    我没做过,但是我设计的,由另外一个同事完成的.时间长了,源码暂时未找到。记得是用一个ObjectList来保存的,具体也忘了。
      

  5.   

    To:zxkid(Born in heaven, die in hell: everybody has sins !) :
    用ObjectList保存的文本框信息,每个文本框都处理,还是其他办法?谢谢!
      

  6.   

    To:zxkid(Born in heaven, die in hell: everybody has sins !) :
     每个文本框的事件都得写代码,岂不是比较麻烦。
     可否做控件时做好。
      

  7.   

    Undo功能实现方法就是用List保留,具体可以参照各种编辑控件的编辑器源码,比如synedit,fastscript等等。
      

  8.   

    synedit,fastscript?
    能否详细说明。
      

  9.   

    你的Undo,Redo是对多个文本框中的每一个都可以呢 还是所以的都一起Undo,Redo?
    要是第一种方式要记录没有文本框,记录在两维数组中,要是第二中方式就比较简单了
      

  10.   

    Undo功能做在控件里并不是最完善的,如果放在控件里的话,只有当控件激活的状态才能起作用,如果我在TextBox1输入一些内容,光标移到其它控件,再Undo,就不行了。因为你的Undo功能是针对控件的,而不是整个应用程序的。
    所以Undo最好做成全局的,能响应整个应用程序的话最好。
      

  11.   

    To:ghy412(用心良苦) 
         对每一个文本框中的都可以.
    To:zxkid(Born in heaven, die in hell: everybody has sins !) 
        能不能说一下“做成全局”的方法。
        我是设一个List,但是每一个文本框都编写离开事件感觉比较麻烦。
      

  12.   

    每一个文本框都编写离开事件感觉比较麻烦。
    ===========================
    多个文本框可以使用同一个OnExit事件处理程序的。
    所以只要一个离开事件处理程序就可以对应所有的文本框。
      

  13.   

    你在记录历史数据的时候,把控件标识信息也一起放进列表(队列)里,undo的时候根据控件取回
    undo时,判断当前焦点控件,可以在窗体事件里写