我不知道你到底想保存什么控减的属性值??
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;

解决方案 »

  1.   

    我不知道是不是你的
    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;
      

  2.   

    是没有问题,但是如果你需要保存一个ToolBar上的ToolButton的话就不行了