我不知道你到底想保存什么控减的属性值??
procedure TForm1.Button2Click(Sender: TObject);
var
AStream:TFileStream;
I:integer;
begin
AStream:=TFileStream.Create('Save.Dat',fmCreate);
for I:=0 to PageControl1.ControlCount-1 do ///你这里是以PageControl的ControlCount为循环,
if ((Controls[i] is TPageControl) or (Controls[i] is TToolBar)) then
AStream.WriteComponent(Controls[i]); //这里的Controls[i],是Form上的所有的Controls,显然并不应该这样的,如果你PageControl建立的标签数和Form上的控件数不等,那首先程序就出错。
AStream.Free;
end;
改为: for I=0 to Form.ControlCount-1 do
begin
if (Controls[i] is TPageControl) then
AStream.WriteComponent(Controls[i]);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
AStream:TFileStream;
I:integer;
begin
AStream:=TFileStream.Create('Save.Dat',fmCreate);
for I:=0 to PageControl1.ControlCount-1 do ///你这里是以PageControl的ControlCount为循环,
if ((Controls[i] is TPageControl) or (Controls[i] is TToolBar)) then
AStream.WriteComponent(Controls[i]); //这里的Controls[i],是Form上的所有的Controls,显然并不应该这样的,如果你PageControl建立的标签数和Form上的控件数不等,那首先程序就出错。
AStream.Free;
end;
改为: for I=0 to Form.ControlCount-1 do
begin
if (Controls[i] is TPageControl) then
AStream.WriteComponent(Controls[i]);
end;
AStream:TFileStream;
astream能不能记录控件的属性值
即AStream.WriteComponent(Controls[i]);是否做了你想要得事。
不过你完全可以这样:
procedure TForm1.ComponentToFile(Component: TComponent);
var
BinStream:TMemoryStream;
AStream: TFileStream;
begin
BinStream := TMemoryStream.Create;
try
AStream:=TFileStream.Create('Save.Dat',fmCreate);
try
BinStream.WriteComponent(Component);
BinStream.Seek(0, soFromBeginning);
ObjectBinaryToText(BinStream, AStream);
AStream.Seek(0, soFromBeginning);
finally
AStream.Free;
end;
finally
BinStream.Free
end;
end;