Fórum Como pegar valor do TreeView #613830

19/01/2021

0

Opa, estou com uma aplicação de Delphi IntraWeb, onde utilizo um TreeView para listar os Usuarios, como não possui TreeView com ligação ao DB, a listagem é na mão, mas não consigo pegar o Numero do Codigo do Usuario, sempre pega o ultimo registro, pois pela listagem é feito um While
Não tenho a menor ideia de como faço para pegar o codigo, qualquer ideia é bem vinda
Delphi Intraweb
SQL
Ramboli

Ramboli

Responder

Post mais votado

20/01/2021

se é você quem monta a TreeView, você pode fazer a ligação com o banco de dados. No lugar de AddChild(), use AddChildObject(), que fará a associação do nó criado com um ponteiro (que pode ser qualquer coisa - mesmo, desde um valor primitivo até um objeto da VCL).

vamos supor que o campo chave para a busca é o código do usuário (um valor inteiro).

na montagem da TreeView:
1
2
IDRegistro := DatasetUsuario.FieldByName('CODIGO').AsInteger;
TreeView.Items.AddChildObject( [nohPai], DatasetUsuario.FieldByName('Nome').AsString, Pointer(IDRegistro));
da forma acima você acrescentou um item associado a um 'objeto' (na verdade associado a um ponteiro).

para posicionar no registro ao clicar no item:
1
2
3
4
5
6
7
8
noh := TreeView.Selected;
if (noh.Data <> nil) then // indica que há informação de um registro a ser posicionado
   try
      IDRegistro := Integer(noh.Data); // aqui obtém o código do usuário associado ao nó selecionado
      // com o código do usuário 'em mãos', use qualquer forma de posicionamento (query, locate, find)
   finally / except
      [qualquer implementação necessária]
   end;

Emerson Nascimento

Emerson Nascimento
Responder

Gostei + 1

Mais Posts

20/01/2021

Ramboli

se é você quem monta a TreeView, você pode fazer a ligação com o banco de dados. No lugar de AddChild(), use AddChildObject(), que fará a associação do nó criado com um ponteiro (que pode ser qualquer coisa - mesmo, desde um valor primitivo até um objeto da VCL).

vamos supor que o campo chave para a busca é o código do usuário (um valor inteiro).

na montagem da TreeView:
1
2
IDRegistro := DatasetUsuario.FieldByName('CODIGO').AsInteger;
TreeView.Items.AddChildObject( [nohPai], DatasetUsuario.FieldByName('Nome').AsString, Pointer(IDRegistro));
da forma acima você acrescentou um item associado a um 'objeto' (na verdade associado a um ponteiro).

para posicionar no registro ao clicar no item:
1
2
3
4
5
6
7
8
noh := TreeView.Selected;
if (noh.Data <> nil) then // indica que há informação de um registro a ser posicionado
   try
      IDRegistro := Integer(noh.Data); // aqui obtém o código do usuário associado ao nó selecionado
      // com o código do usuário 'em mãos', use qualquer forma de posicionamento (query, locate, find)
   finally / except
      [qualquer implementação necessária]
   end;

Ler Mais...



Opa, deu certo aqui com algumas pequenas mudanças
Se não for pedir muito, como eu alinho os itens?
quando possuo apenas 1 usuario ele vem alinhado a esquerda, mas quando possuo mais de 1 ele descofigura e fica alinhado ao meio todo bugado
Responder

Gostei + 0

20/01/2021

Emerson Nascimento

não entendi o que quer alinhar.
pode demonstrar o que está acontecendo e como quer que fique?

Responder

Gostei + 1

21/01/2021

Ramboli

não entendi o que quer alinhar.
pode demonstrar o que está acontecendo e como quer que fique?


Bem, ao abrir uma treeview com muitos usuarios, ela abre mais ou menos assim
1
2
3
4
5
Usuarios
                                                     usu1
                    usuu2
                                            usu 3
usu 4


Gostaria q ele listasse alinhado mais ou menos assim

1
2
3
4
5
Usuarios
       usu1
       usu2
       usu 3
       usu4


Como posso fazer isto?
Deste ja eu agradeço pela ajuda
Responder

Gostei + 0

21/01/2021

Emerson Nascimento


você pode publicar o trecho do código que você está utilizando para adicionar os itens?

Responder

Gostei + 1

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar