急寻自定义控件的保存和恢复技术(有挑战性)(100分)

Q

qd_chl

Unregistered / Unconfirmed
GUEST, unregistred user!
1自定义控件的描述:本控件可分为两部分加以描述,一部分是信息展示,用Grid进行展示,
另一部分是信息的缓存,采用集合-元素的类体系实现。即整个类体系结构:
GridControl(控件类)-GridLogic(逻辑类)-GridInfos(集合类)-GridInfo(元素类)-GridCell
(单元信息);
GridControl处理展示的安排,每个单元格存储一个GridCell对象的引用,包括文字或数据,
在其上可进行双击,交换,删除。GridLogic处理从GridInfo中取出缓存的信息,然后安排到Grid上,这些信息是一个个的对象
GridCell,他们是由外系统构建,可根据标示符从外系统取得。
2现在的问题是采用何种保存恢复技术能够保证恢复时整个控件和保存时的状态完全一致,
包括单元格的宽高,各单元格对象的恢复,双击交换等操作的继续进行。
 
如果做好,给我一份zjcyc@sohu.com
 
呵呵!你才刚入门,建议首先研究一下别人的sheet之类的控件再说
 
看过了,但是没看出门道来,我现在的需求有点类似于undo,redo的功能,
不知哪位提供点此功能的实现方法?
 
undo/redo是利用流的技术保留每一步的操作信息。
 
如果类体系特别的庞大,状态信息很多,是否从开始运行此程序每一步都要流化状态
岂不太费事了吗?是否有一种将整个程序的内存状态保存与恢复的技术,可以简化这
种功能的实现。
 
还有哪个地方提供专门介绍流的技术文档?
 
> 每个单元格存储一个GridCell对象的引用,包括文字或数据,
> 在其上可进行双击,交换,删除。GridLogic处理从GridInfo中取出缓存的信息,
> 然后安排到Grid上,这些信息是一个个的对象

这样可行吗?
 
我的目的不是一言两语就可以说明白的,总之一个目的,我如何在我的控件里写代码,
例如DefineProperties等流的方式,使得用户在操作过程中创建的一些GridCell等对象
能够恢复如初?请赐教!
 
我系统的Undo、Redo就是流控制的,自己可以试试,一点也不费事。
而且我看了几个商业控件的Undo也是这个办法!
 
谢谢郭兄,我做的是构件库,由用户利用这些构件完成应用程序,现在要做的是否
是在每个构件中都提供这样一种流机制,如果这些构件耦合较大并且无法解耦,
一个简单的例子就是在程序运行过程中,在一个构件的类体系中比方上述的GridCell
中维护着另一个构件创建的对象,这种情况该如何处理?
 
将构建的信息存储到文件中
参考方法:
TStream.WriteComponent,
TStream.ReadComponent,
ObjectBinartToText,
ObjectTextToBinary.
TStringStream.Create(AString)
TFileStream.Create(AFileName, FileMode);
 
顶部