Salvar Componente em Arquivo
Caros,
preciso montar um form, em que o usuario pode inserir componentes em RUTIME, Porem, preciso salvar estes componentes (propriedades num arquivo TXT).
tais propriedades como:
top,
width,
heigth,
left,
parent,
name
etc...
por exemplo,
vamos supor que o parent do componente,
como eu posso estar salvando e depois restaurando estas informacoes ??
lembrando que:
o parent, por exemplo, as vezes pode ser um PANEL, UM FORM, UM QUICKREPORT, etc. (nao é fixo o TFORM).
obrigado a todos.
preciso montar um form, em que o usuario pode inserir componentes em RUTIME, Porem, preciso salvar estes componentes (propriedades num arquivo TXT).
tais propriedades como:
top,
width,
heigth,
left,
parent,
name
etc...
por exemplo,
vamos supor que o parent do componente,
como eu posso estar salvando e depois restaurando estas informacoes ??
lembrando que:
o parent, por exemplo, as vezes pode ser um PANEL, UM FORM, UM QUICKREPORT, etc. (nao é fixo o TFORM).
obrigado a todos.
Pedih
Curtidas 0
Respostas
Mdm
09/05/2006
Ola Colega !
dias atras tive esse problema e encontrei esta solução :
[b:577572a1c8]Converte o componente para String;[/b:577572a1c8]
[b:577572a1c8]Converte a string para Componente[/b:577572a1c8]
Espero que este pequeno exemplo possa te ajudar.
[]s e boa Sorte.
dias atras tive esse problema e encontrei esta solução :
[b:577572a1c8]Converte o componente para String;[/b:577572a1c8]
function TForm1.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;
[b:577572a1c8]Converte a string para Componente[/b:577572a1c8]
function TForm1.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;
Espero que este pequeno exemplo possa te ajudar.
[]s e boa Sorte.
GOSTEI 0
Pedih
09/05/2006
Ola Colega !
dias atras tive esse problema e encontrei esta solução :
[b:e2e1d273ac]Converte o componente para String;[/b:e2e1d273ac]
[b:e2e1d273ac]Converte a string para Componente[/b:e2e1d273ac]
Espero que este pequeno exemplo possa te ajudar.
[]s e boa Sorte.
function TForm1.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 TForm1.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;
Quase resolveu meu problema, mas como eu executo este codigo ?
fiz assim, mas nao funcionou.
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
Memo1.Lines.Add(ComponentToString(Button1));
end;
// foi adicionado as propriedades principais num memo.. (ok).
procedure TForm1.Button2Click(Sender: TObject);
begin
RegisterClass(TButton);
StringToComponent(Memo1.Lines.Text);
UnRegisterClass(TButton);
tentei restaurar aqui, mas nao funcionou.
onde eu determino qual é o parent do componente que esta no ´TXT´.
mesmo colocando o parent sendo o FORM (para testes), o mesmo nao foi mostrado no form.
end;
como vc utilizou em seu codigo ??
veja:
preciso salvar inumeros componentes que serao inseridos,
o parent, pode ser um form, um quickreport, um panel, etc.
preciso salvar tudo num TXT.
e depois, restaurar... (de forma fiel, entendeu)?
obrigado pela atencao.
GOSTEI 0
Pedih
09/05/2006
sobe...
GOSTEI 0
Pedih
09/05/2006
Sobe...
GOSTEI 0