Como pegar valor do TreeView

SQL

Delphi

Web

19/01/2021

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

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

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:
   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:
   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;
GOSTEI 1

Mais Respostas

Ramboli

Ramboli

19/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:
   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:
   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;


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
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

19/01/2021

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

GOSTEI 1
Ramboli

Ramboli

19/01/2021

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
Usuarios
                                                     usu1
                    usuu2
                                            usu 3
usu 4


Gostaria q ele listasse alinhado mais ou menos assim

Usuarios
       usu1
       usu2
       usu 3
       usu4


Como posso fazer isto?
Deste ja eu agradeço pela ajuda
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

19/01/2021


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

GOSTEI 1
POSTAR