将一组件Memo1 保存到流中。
定义一全局变量 Data: string;
保存组件Memo1到流CODE:
--********************************
Data := ComponentToString(Memo1);
--********************************
恢复组件原来的状态CODE
--*******************************
StringToComponent(Data)
Runtime Delphi 报告 Class TMemo not found.
--*******************************
Runtime Delphi 报告 Class TMemo not found???function ComponentToString(Component: TComponent): string;var
  BinStream:TMemoryStream;
  StrStream: TStringStream;
  s: string;
begin
  BinStream := TMemoryStream.Create;
  try
    StrStream := TStringStream.Create(s);
    try
      BinStream.WriteComponent(Component);
      BinStream.Seek(0, soFromBeginning);
      ObjectBinaryToText(BinStream, StrStream);
      StrStream.Seek(0, soFromBeginning);
      Result:= StrStream.DataString;
    finally
      StrStream.Free;    end;
  finally
    BinStream.Free
  end;
end;function StringToComponent(Value: string): TComponent;
var
  StrStream:TStringStream;
  BinStream: TMemoryStream;
begin
  StrStream := TStringStream.Create(Value);
  try
    BinStream := TMemoryStream.Create;
    try
      ObjectTextToBinary(StrStream, BinStream);
      BinStream.Seek(0, soFromBeginning);
      Result := BinStream.ReadComponent(nil);    finally
      BinStream.Free;
    end;
  finally
    StrStream.Free;
  end;
end;

解决方案 »

  1.   

    我搞不懂你为什么要把它变成String? 这一变问题不就来了吗
      

  2.   

    procedure TForm1.Button3Click(Sender: TObject);
    begin
      RegisterClass(TButton);
      with tbutton(StringToComponent(s)) do
      begin
        Left := 100;
        Parent := self;
      end;
    end;
      

  3.   

    楼上的代码解释一下可不可以
    RegisterClass(TButton);          //为什么来
      with tbutton(StringToComponent(s)) do   //你的意思是将button3的各属性赋成 被保存
      begin                                   //的组件的属性吗??
        Left := 100;                         
        Parent := self;                          //这两句有何用也不懂!!!
      end;