保存窗体上各组件位置和打开保存的窗体上各组件
有一个窗体,上面有pagecontrol组件,在TabSheet上根据字段的多少动态创建Edit组件和创建新页。存取窗体时用的是流文件来存取。现在能把各页上的Edit组建存到文件里,但是取的时候,只能在一个页面上生成各组件,本来在其他页面上的组件也在这个页面上了,怎么读取文件生成多页面的Edit啊?
以下是原程序:
//保存窗体上控件
var
S:TFileStream;
I,iTab:Integer;
Tab:array [1..10] of TTabSheet;
begin
if SaveDialog1.Execute then
begin
{创建和打开流文件}
S:=TFileStream.Create(SaveDialog1.FileName,fmOpenWrite or fmCreate);
try
for iTab:=1 to CntTab do
begin
with Tab[iTab] do
begin
for I:=0 to ControlCount-1 do
S.WriteComponent(Controls[I]);
end;
end;
finally
S.Free;
end;
end;
end;
//打开文件,生成原来保存的窗体控件,没有成功的,请大家看看
procedure TFormDesignFm.OpenBtnClick(Sender: TObject);
var
S:TFileStream;
New:TComponent;
iTab:integer;
begin
if OpenDialog1.Execute then
begin
{删除存在的文件}
NewBtnClick(self);
{打开流文件}
S:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
for iTab:=1 to CntTabRec do
begin
with Tab[iTab] do
begin
try
{从流文件中读出所有的组件对象,并添加到窗体上}
while S.Position<S.Size do
begin
{读出一个组件,并添加到窗体上}
New:=S.ReadComponent(nil);
InsertControl(New as TControl);
end;
finally
S.Free;{关闭流文件}
end;
end;
end;
end;