如何实现Undo 功能 ( Design Pattern 讨论 )(200分)

当前所编辑的对象没有封装编辑状态吗?那这个对象是干嘛的?
我想说点关于序列化的想法,可能在java中序列化是用的比较多
一点,我不知道sun公司是如何实现序列化的。但我有个想法是
序列化的对象状态是否可以用xml来实现。我曾经试图写个通用的
方法可以把一个java对象用xml表示出来,但没有成功。有很多需要解决
的问题。
回到undo上来,如果我在内存中构造一个树,不一定非得是二叉树,
可以是多叉的,当然从性能考虑,二叉树可能要好一点。
(即只支持最多两个分支的undo和redo,或者可以考虑一个平衡效果,
用三叉树或者四叉树)然后用
这个二叉树就可以保存编辑对象(或者是checa说的封装了编辑状态的对象),
当然这个对象状态可以用我前面提到的xml来表达(或者其它表达形式)。
同时,如果能够保存这个二叉树,那么,甚至可以实现整个编辑过程的undo。
 
cheka,请看看
http://www.delphibbs.com/delphibbs/dispq.asp?lid=644104
 
用API函数,无非是给应用程序发送一条EM_UNDO消息,以撤销最近一次的编辑操作。
如果成功为TRUE,失败为FALSE。
其中包含两个参数:wParam,lParam。发送时参数值为0.
如:
var x1:HWND;
Procedure Tform1.formcreate(sender:tobject);
begin
x1:=edit1.handle;
end;

Procedure Tform1.button1click(sender:tobject);
begin
sendmessage(x1,EM_UNDO,0,0);
end;
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
756
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部