其实我原来实现过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事件中调用这个类的方法