我是初学者,希望大家帮忙看一下。
在一个对象中,我动态创建一个ListBox,并且在Listbox中保存了一个Object
随便什么(如:TEdit等),实际上我是要保存数据集列表。
用WriteComponent保存到一个Stream中,
在用readComponent重新创建时,出错,control “listbox的名称”not parent window,
如果我不在listbox中加Object,则不会报错,且组件及它的属性的保存和读取都没有问题。
我是组件编程的初学者,各位大虾帮忙解决一下。
分数不够的话,可以再加。谢谢了。
在一个对象中,我动态创建一个ListBox,并且在Listbox中保存了一个Object
随便什么(如:TEdit等),实际上我是要保存数据集列表。
用WriteComponent保存到一个Stream中,
在用readComponent重新创建时,出错,control “listbox的名称”not parent window,
如果我不在listbox中加Object,则不会报错,且组件及它的属性的保存和读取都没有问题。
我是组件编程的初学者,各位大虾帮忙解决一下。
分数不够的话,可以再加。谢谢了。
解决方案 »
- 关于DELPHI BDE TQUERY问题
- 为什么我的TADOQuery组件在执行完Select后,再执行insert或update就出现内存写错误?
- SkinEngine 3.3.1 在提示信息中显示的字数不全问题,望高手指教!
- ActiveControl如何用啊?
- 我在客户端为何无法调用服务端的方法?
- 关于oracle的问题
- 关于菜单的两个问题
- 我在程序中使用了xlgrid,可今天才发现它有40行40列的限制,想找gavina公司买,可好像已经倒闭了,我不知道该怎么办,请各位大虾给出出主
- 请教!关于数据转换问题!
- 悬赏求助 Delphi 用 ThttpResqreq 组件调用webservice 问题
- ADO数据刷新,就是刷不出来。郁闷。。。。
- 如何在线程1中关闭线程2?
我有一个bolbfield,里面存储了界面信息。
作了一个对象,对象可以增加删除一些控件,如dbedit,Dbgrid,
现在我还需要保存一个数据集列表,
我先做了一个DataObj的类,继承了Object,里面放了ClientDataSet,DataSource,以及一些他们的读取属性。
然后我把DataObj对象用listbox.additem(String;TObject)方法加入到Listbox中,这样就形成一个数据集列表。
现在出现了1楼的问题。
procedure CreateWnd(...);
begin
inherited CreateWnd(...);
.....
end;
原来我用
for i:= 0 to self.controlcount -1 do
stream.writeComponent(self.control[i])
去保存self的组件信息,读取用
for i:= 0 to self.controlcount -1 do
begin
control := TControl(stream.readComponent(nil))
self.insertControl(control)
end
现在改了
保存:stream.writeComponent(self)
读取:self := TSelf(stream.readComponent(self)) ;现在listbox及他的Items都可以读出来,但他的Object没有了 ,不知道为什么,大家帮忙看看
我后来改了ListBox中Object的对象,就是我2楼提到的DataObj,我把他从Tcomponent继承,
但还是没有用,可能要好好看看TPersistent了,
昨天我还一位listbox的object存的是object的poient,所以无法保存,查了好多资料,没有找到相关的信息。
难道listbox中的object的参数类型是TObject,writeComponent就不保存了吗?即使我传入的是TComponent或者是TControl,我甚至放一个TEdit都不可以。
在dfm文件中保存着组件信息,我举例说明一下我的问题:
一个DataSource
一个ClientDataSet
DataSource.DataSet := ClientDataSet
此时在dfm文件中,就会是,
object DataSource: TDataSource
DataSet = ClientDataSet
end
当然这里的"DataSet = ClientDataSet"中后面的ClinentDataSet存的肯定是ClientDataSet.Name
我想问的是,在创建窗体时,
DataSource是不是在它的Owner中用for i:=0 to owner.componentcount do
去查找这个ClientDataSet,如果没有就创建(当然创建的时候要读取CLientdataset的属性)
这样的话,是不是在创建窗体时要循环好多遍ComponentCount,
可以留个msn吗?