Fórum RTTI para mapeamento de propriedades... #23773
09/03/2010
0
Galera é os seguinte, eu tava lendo essa mateira da ClubDelphi 113 falando sobre RTTI, Generics e Attributes e resolvi fazer o passo-a-passo que estava na revista... quando me deparei com uma duvida que não consegui resolver... vamos lá!!!!
o codigo é esse:
procedure TForm1.Button1Click(Sender: TObject);
var
contexto: TRttiContext;
tipo: TRttiType;
metodo: TRttiProperty;
begin
Memo1.Clear;
contexto := TRttiContext.Create;
try
tipo := contexto.GetType(TPessoa.ClassInfo);
for metodo in tipo.GetProperties do
Memo1.Lines.Add('Propriedades: ' + metodo.GetValue(TPessoa.Create).ToString);
finally
contexto.Free;
end;
end; ----------------------------------------------- tenho uma classe TPessoa que tem 3 propriedades - Codigo: integer, Nome: string e Endereco: TEndereco; tenho tbm a classe TEndereco que so tem 1a propriedade - Rua: string; No contrutor da classe TPessoa eu crio a classe TEndereco, passo um valor para a propriedade Rua e depois passo um valor para o codigo e para o nome de TPessoa... ate ai tudo ok!!! Compila tudo direitinho, mas quando meu codigo faz o loop os valores retornados em um memo são: Propriedades: 123 -- Codigo da pessoa
Propriedades: Pessoa -- Nome da pessoa
Propriedades: (TEndereco @ 008D0F00) e aqui ta a bronca.... como faço para varre uma propriedade do tipo Objeto? no caso retornando o valor colocado na propriedade 'Rua' de TEndereco? Se em vez de um Endereco minha aplicação fosse ler um TList? como eu entraria nele? Se alguem va tiver feito algo parecido, manda uma resposta ou um modo de como fazer!! Agradeço a todos e Boa noite!!
var
contexto: TRttiContext;
tipo: TRttiType;
metodo: TRttiProperty;
begin
Memo1.Clear;
contexto := TRttiContext.Create;
try
tipo := contexto.GetType(TPessoa.ClassInfo);
for metodo in tipo.GetProperties do
Memo1.Lines.Add('Propriedades: ' + metodo.GetValue(TPessoa.Create).ToString);
finally
contexto.Free;
end;
end; ----------------------------------------------- tenho uma classe TPessoa que tem 3 propriedades - Codigo: integer, Nome: string e Endereco: TEndereco; tenho tbm a classe TEndereco que so tem 1a propriedade - Rua: string; No contrutor da classe TPessoa eu crio a classe TEndereco, passo um valor para a propriedade Rua e depois passo um valor para o codigo e para o nome de TPessoa... ate ai tudo ok!!! Compila tudo direitinho, mas quando meu codigo faz o loop os valores retornados em um memo são: Propriedades: 123 -- Codigo da pessoa
Propriedades: Pessoa -- Nome da pessoa
Propriedades: (TEndereco @ 008D0F00) e aqui ta a bronca.... como faço para varre uma propriedade do tipo Objeto? no caso retornando o valor colocado na propriedade 'Rua' de TEndereco? Se em vez de um Endereco minha aplicação fosse ler um TList? como eu entraria nele? Se alguem va tiver feito algo parecido, manda uma resposta ou um modo de como fazer!! Agradeço a todos e Boa noite!!
Filipe Carvalho
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)