吃 吃天大圣 Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-14 #1 许多文字编辑软件都提供了‘撤消’与‘重做’的功能,请问各位怎么实现 它?
淡 淡淡的笑 Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-14 #2 你可以在程序中定义一个数组,然后把修改时的数据(一般情况保存键盘 或MOUSE的操作比较好)存入数组中,然后撤消和重做时调用这些数组(即 类似于调用宏)就行了。另外,RICHEDIT本身就提供这样的功能。
你可以在程序中定义一个数组,然后把修改时的数据(一般情况保存键盘 或MOUSE的操作比较好)存入数组中,然后撤消和重做时调用这些数组(即 类似于调用宏)就行了。另外,RICHEDIT本身就提供这样的功能。
S SuperMMX Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-14 #4 有呀, EM_UNDO, 可以发送这个消息,memo 没有 redo, RichEdit 可能多一些,但还不全, RichEdit20A (richedit 2.0 版要全 delphi 中有消息声明, 但不支持), to 淡淡的笑: 系统帮你做了一些,自己实现要麻烦的多。
有呀, EM_UNDO, 可以发送这个消息,memo 没有 redo, RichEdit 可能多一些,但还不全, RichEdit20A (richedit 2.0 版要全 delphi 中有消息声明, 但不支持), to 淡淡的笑: 系统帮你做了一些,自己实现要麻烦的多。
L lczhuohuo Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-14 #6 ActionList,似乎不是这个作用吧? 实际上每个编辑动作都可以用一定的原语加上对象来表示, 例如Delete 'k'这样,就可以把这些编辑动作用一定的数据结构 储存起来,那样就好办了
B BaKuBaKu Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-16 #7 吃天大圣兄: 这个问题好像不太菜啊。 如果只是一步 UNDO ,而且只用标准的文字编辑控件,可以 SendMessage 一个 EM_UNDO 消息,更多的 UNDO/REDO 功能,就只能自己写喽。 有的操作需要占据巨大的内存保存 UNDO 信息,比如全盘删除,有的操作本身就 是不可逆的,还要考虑速度与资源,涉及的方面太多了... ... 呵呵,这个问题可不菜。 From: BaKuBaKu
吃天大圣兄: 这个问题好像不太菜啊。 如果只是一步 UNDO ,而且只用标准的文字编辑控件,可以 SendMessage 一个 EM_UNDO 消息,更多的 UNDO/REDO 功能,就只能自己写喽。 有的操作需要占据巨大的内存保存 UNDO 信息,比如全盘删除,有的操作本身就 是不可逆的,还要考虑速度与资源,涉及的方面太多了... ... 呵呵,这个问题可不菜。 From: BaKuBaKu