注意,需要注册类;
2.读入多个属性的时候,只会构造第一个控件;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
mmo1: TMemo;
btn1: TButton;
edt1: TEdit;
btn2: TButton;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
procedure ShowComponentProperties(AComponent: TComponent);
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function CompTostr(AComponent: TComponent): string;
var
memstream: TMemoryStream;
strStream: TStringStream;
str: string;
begin
memstream := TMemoryStream.Create();
try
strstream := TStringStream.Create(str);
try
memstream.WriteComponent(AComponent);
memstream.Seek(0, soFromBeginning);
classes.ObjectBinaryToText(memstream, strStream);
strStream.Seek(0, soFromBeginning);
Result := strStream.DataString;
finally
FreeAndNil(strStream);
end;
finally
FreeAndNil(memstream);
end;
end;
function StrToComp(Astr: string; Acomponent: TComponent): TComponent;
var
strStream: TStringStream;
memStream: TMemoryStream;
begin
strStream := TStringStream.Create(Astr);
try
memStream := TMemoryStream.Create;
try
classes.ObjectTextToBinary(strStream,memStream);
memStream.Seek(0,soFromBeginning);
Result := memStream.ReadComponent(Acomponent);
finally
FreeAndNil(memStream);
end;
finally
FreeAndNil(strStream);
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
var
str: string;
begin
mmo1.Clear;
ShowComponentProperties(edt1);
end;
procedure TForm1.ShowComponentProperties(AComponent: TComponent);
var
str: string;
begin
str := compToStr(AComponent);
mmo1.Lines.Add(str);
end;
procedure TForm1.btn2Click(Sender: TObject);
var
editclone: Tedit;
begin
editclone := TEdit(StrToComp(mmo1.Lines.Text,nil));
editclone.Parent := self;
editclone.Name := editclone.Name + 'Clone';
editclone.Top := editclone.Top + 40;
editclone.Visible := true;
ShowComponentProperties(editclone);
end;
initialization
Classes.registerClass(TEdit);
end.
本文介绍了一个使用Delphi实现的组件属性读取和克隆的方法。通过将组件转换为字符串再还原的方式实现了组件的复制,并展示了如何获取和显示组件的属性。这种方法可用于快速复制组件设置。

2439

被折叠的 条评论
为什么被折叠?



