Você está na página 1de 3

30/11/2019 Quick Tips : Carregando um objeto na treeView com RTTI

www.devmedia.com.br
[versão para impressão]
Link original: https://www.devmedia.com.br/quick-tips-carregando-um-objeto-na-treeview-com-rtti/15512

Quick Tips : Carregando um objeto na treeView com RTTI


Nesta quick tip veremos como carregar um objeto na treeView
dinamicamente com RTTI

Quick Tips : Carregando um objeto na treeView com RTTI

Nesta quick tip veremos como carregar um objeto na treeView dinamicamente com RTTI

Antes de começar vale lembrar que RTTI é um recurso da linguagem que permite recuperarmos informações
sobre tipos(classes, propriedades, métodos) em tempo de execução e interagir com elas, recuperando seu
nome, tipo, valor no caso de propriedades, executando no caso de métodos etc...

Insira um botão e uma TreeView no formulário.

Código do botão LoadClientes

procedure TForm1.Button1Click(Sender: TObject);


var ListaClientes:TList<TCliente>;
c:TCliente;
begin
ListaClientes := TList<TCliente>.Create();

c := TCliente.Create();
c.codigo := 1;
c.nome := 'Ricardo Coelho';

https://www.devmedia.com.br/view/print.php?idcomp=15512 1/3
30/11/2019 Quick Tips : Carregando um objeto na treeView com RTTI

c.bairro := 'Realengo';
ListaClientes.Add(c);

c := TCliente.Create();
c.codigo := 2;
c.nome := 'Fernanda Matias';
c.bairro := 'Taquara';
ListaClientes.Add(c);

c := TCliente.Create();
c.codigo := 3;
c.nome := 'Juliana Rosse';
c.bairro := 'Barra';
ListaClientes.Add(c);

c := TCliente.Create();
c.codigo := 4;
c.nome := 'maria Candido';
c.bairro := 'Irajá';
ListaClientes.Add(c);

LoadInTreeView(listaClientes);
end;

Código do método LoadIntTreeView.

procedure TForm1.LoadInTreeView(Lista: TList<TCliente>);


var c:TCliente;
node: TTreeNode;
context:TRttiContext;
tipo:TRttiType;
props:TArray<TRttiProperty>;
prop:TRttiProperty;
begin
//recupera um contexto RTTI, necessário para recuperação do tipo
context := TRttiContext.Create();
//recupera o tipo TCliente
tipo := context.GetType(TCliente.ClassInfo);
//recupera lista de propriedades de TCliente
props := tipo.GetProperties();

//percorre lista de clientes


for c in lista do

https://www.devmedia.com.br/view/print.php?idcomp=15512 2/3
30/11/2019 Quick Tips : Carregando um objeto na treeView com RTTI

begin
//percorre as propriedades de TCliente
for prop in props do
begin
//Se for a primeira propriedade adiciona um nó Pai
//Senão insere um nó filho
if(prop = props[0])then
begin
node := TreeView1.Items.Add(nil,'Cliente: ' +
prop.GetValue(c).ToString);
end
else
begin
TreeView1.Items.AddChildObject(node,prop.name + ': ' +
prop.GetValue(c).ToString,c);
end;
end;
end;
end;

Resultado da execução da rotina

É isso aí pessoal, espero que tenham gostado.


Fiquem a vontade para criticar, tirar dúvidas e sugerir novos temas.
Abraço.
Ricardo Coelho

https://www.devmedia.com.br/view/print.php?idcomp=15512 3/3

Você também pode gostar