خودم به یه جاهایی رسیدم اینجا میزارم شاید به درد کسی بخوره
این کد مشخصات یک لیبل رو درون یک ممو نمایش میده و دوباره از طریق همین مشخصات لیبل رو میسازه
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons;
type
TForm1 = class(TForm)
lbl1: TLabel;
btn1: TBitBtn;
btn2: TBitBtn;
btn3: TBitBtn;
dlgFont1: TFontDialog;
mmo1: TMemo;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure btn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
lbl1 = class(Tlabel)
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function ComponentToStringProc(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 StringToComponentProc(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;
procedure TForm1.btn1Click(Sender: TObject);
begin
Mmo1.Text:= ComponentToStringProc(lbl1);
end;
procedure TForm1.btn2Click(Sender: TObject);
var
lbl2:Tlabel;
begin
lbl1.Free;
lbl1:=(StringToComponentProc(Mmo1.Text) as TLabel);
lbl1.Parent:= Form1;
lbl1.Visible:= TRUE;
end;
procedure TForm1.btn3Click(Sender: TObject);
begin
if dlgFont1.Execute then lbl1.Font:=dlgFont1.Font;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
lbl1.Free;
end;
initialization
RegisterClass(Tlabel);
end.