X xkjyag Unregistered / Unconfirmed GUEST, unregistred user! 2009-09-24 #1 最近使用TreeView控件,不知道如何实现类似Edit控件的undo,redo功能,希望有朋友提供例程或者思路,非常感谢!!!
I iceapi Unregistered / Unconfirmed GUEST, unregistred user! 2009-09-24 #2 如果你只是想对TreeView 节点标签内容的undo,redo 操作,只需要在每次编辑完成时保存如下结构数据到列表,依次取出数据就行PTTreeNodeRec = ^TTreeNodeRec;TTreeNodeRec = packed record Node: TTreeNode; Caption: array[0..255] of char;end;如果是对TreeView的整体操作包括节点的增删操作,那最省事的方法就是整个保存了。
如果你只是想对TreeView 节点标签内容的undo,redo 操作,只需要在每次编辑完成时保存如下结构数据到列表,依次取出数据就行PTTreeNodeRec = ^TTreeNodeRec;TTreeNodeRec = packed record Node: TTreeNode; Caption: array[0..255] of char;end;如果是对TreeView的整体操作包括节点的增删操作,那最省事的方法就是整个保存了。
X xkjyag Unregistered / Unconfirmed GUEST, unregistred user! 2009-09-25 #3 iceapi,你好,我需要的是对TreeView的整体操作,包括节点的增删改等操作,你说的整个保存是什么意思,如何操作,望指导,谢谢!
Z zkktom Unregistered / Unconfirmed GUEST, unregistred user! 2009-09-25 #4 这个是有点麻烦哦,iceapi的方法可行的。你需要创建一个堆栈进行存储,然后根据你的操作进行处理,对堆栈的数据进行处理也是可以的。
H hhjjhhjj Unregistered / Unconfirmed GUEST, unregistred user! 2009-09-25 #6 记录对tree的每一步操作,不就可以了。可能做起来比较繁琐。
A autumn Unregistered / Unconfirmed GUEST, unregistred user! 2009-09-25 #7 create a table as histroystru as below,createtime,id,pid,caption,edit_type,state.
X xkjyag Unregistered / Unconfirmed GUEST, unregistred user! 2009-09-25 #8 autumn这么一说,似乎有点儿头绪了,意思应该是,建立一个结构,保存每次编辑节点的id,caption,edittype,state,imageindex等等的内容,需要的时候取出来undo,redo。有个问题,如果树结构很庞大,这样的一个结构,是不是会很耗内存?
autumn这么一说,似乎有点儿头绪了,意思应该是,建立一个结构,保存每次编辑节点的id,caption,edittype,state,imageindex等等的内容,需要的时候取出来undo,redo。有个问题,如果树结构很庞大,这样的一个结构,是不是会很耗内存?
A autumn Unregistered / Unconfirmed GUEST, unregistred user! 2009-09-25 #9 存在tv里不是更大?你怕的话用一个表,如果设立里功能只允许redo/undo 10次,那你filter 20 records就可以了。
Y yjxwjx Unregistered / Unconfirmed GUEST, unregistred user! 2009-09-25 #10 可以将结果保存在一个文件中,或者保存在数据库中的表中,保留每次的更改记录。然后分别处理之。
X xkjyag Unregistered / Unconfirmed GUEST, unregistred user! 2009-09-25 #11 我个人认为如果undo,redo在10-20次内保存在内存里效率高点,缺点就是耗内存。假如undo,redo是无限级的,讨论一下用表、文件还是数据库好?