WriteComponent 保存自定义组件?(50分)

  • 主题发起人 主题发起人 ET外星人
  • 开始时间 开始时间
E

ET外星人

Unregistered / Unconfirmed
GUEST, unregistred user!
var
str: Tstream;
begin
str:=Tfilestream.Create(filename,fmcreate);
str.WriteComponent(listbox1);
str.Free;
end

我现在是想 如果str.WriteComponent(listbox1);不是listbox1
而是自己继承自TComponent的组件叫MYComponent吧
然后
TMYComponent=class(TComponent)
list:Tstringlist;
end;
constructor TMYComponent.Create(aOwner: TComponent);
begin
list:=Tstringlist.create;
end;

var
MYComponent:TMYComponent;
str: Tstream;
begin
MYComponent:=TMYComponent;
MYComponent.list.add('hello! asda ');
str:=Tfilestream.Create(filename,fmcreate);
str.WriteComponent(MYComponent);
str.Free;
end

保存的时候 把MYComponent 包括list 里面的所有属性都保存起来?
要怎样才可以实现? 因为LISTBOX1也是继承TComponent的 但是我不明白
为什么STREAM可以保存LISTBOX1的所有属性?
 
只能将list里面的字符内容保存起来
type
TMYComponent=class(TComponent)
private
FList:TStringList;
public
constructor Create(AOwner:TComponent);
destructor Destroy;override;
published
property List:TStringList read FList write FList;
end;
constructor TMYComponent.Create(aOwner: TComponent);
begin
FList:=TStringList.create;
end;

destructor TMYComponent.Destroy;
begin
FList.Free;
inherited;
end;
 
1.published部分的可以保存
type
ttest1 = class(tcompoennt)
published ///////////**
list: tstringlist;
end;

2.为什么可以保存这个问题你要看看writecomponent里面是怎样写的啦
 
因为都是继承自TPERSISTENT。
 
用TReader和TWriter的WriteComponent和ReadComponent可以读取和保存vcl的所有属性。具体你可以看看原码就明白的
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部