帮我实现F1book的Undo,我的分数全送了。(200分)

J

joyuce

Unregistered / Unconfirmed
GUEST, unregistred user!
[:)] 如何实现F1book的Undo功能,最好能象Excel多次UNDO.
 
采用动态记忆的方法。
 
to Tense:
什么叫动态记忆的方法,指点一二吧.
 
提前,请高手讨论啊
 
formula one 不提供UNDO的功能
你可以外加一数据库来存储前几步操作,这样一来就好做了吧!
当然也可以用stringlist 来记忆前几步操作
 
其实我原来实现过Undo,ReDo的功能.不过实现的太土,一直不好意思说出来.
总的思路就是用户作一次改动,如果有必要redo,undo的话,就把当前的sheet保存
程一个临时文件.
1.写一个专门负责Undo,Redo的类
其中一个成员就是 antic_ant所说的动态数组
结构为
type
TTempFile = record
tempfilename : string;
sheetName : string;
Description : string
//这个主要是为了相excel那样对每次的undo,redo有
//一些描述性信息
end
2. 两个TTempFile的动态数组,一个是UndoFileArr,RedoFileArr
3. 一些管理UndoFile和RedoFile的方法,例如ClearAll,Redo(增加UndoFileArr,减少
RedoFileArr),Undo,AddUndoFile,AddRedoFile等
4. 一个动态生成的F1Book,负责将临时文件读进来,然后通过TTempFile的结构信息
CopyRangeEx到界面上的F1Book上.
5. 注册表中放一个变量,表示可以多少步Undo,如果超过这个数,压入新的临时变量,
去掉最旧的临时文件
6. 在每一步F1Book的OnMidify事件中调用这个类的方法
 
出于工作需要,2年前,我用F1Book(ActiveX Control)VB6设计过一个生物统计小软件,
实现UNDO,REDO在VB6中可用ActiveForm.F1Book1.TransactStart,基本可满足大部分需要。[8D]
 
to shiyg:
您能把你的程序发给我看看么?
jslmx@163.com 谢谢!
 
to shiyg:
我也需要一份,您能把你的程序发给我吗?mike_tanjie@sin.com
谢谢!
 
多人接受答案了。
 
顶部