VB6 - Usando o Controle TreeView


O controle TreeView é utilizado para exibir dados de natureza hierárquica tais como organogramas organizacionais , dados hierárquicos , arquivos e diretórios , etc...

Abaixo temos um exemplo mostrando o controle TreeView exibindo os dados do banco de dados Biblio.mdb

Figura 1.0  TreeView

TreeView - Configurando os objetos Nodes.

Uma 'árvore'(tree) é constituída por ramificações , que por sua vez são constituídas por muitos 'nós' (node), onde cada nó consiste de uma imagem (configurada através da propriedade Image) e um rótulo ( configurado via propriedade Text ). As imagens usadas nos nós(node) são fornecidas pela associação de um controle ImageList com o Controle TreeView.

Um nó(node) pode ser expandido ou retraído, dependendo se possuir ou não nós filhos(child nodes) descendentes. No nível superior ficam as raízes (root nodes) , e cada nó raiz pode ter qualquer quantidade de nós filhos.

Abaixo vemos um exemplo de uma árvore com com dois nós raizes(Root1 e Root2), onde "Root 1" possui três nós filhos(Child1,Child2 e Child3) e o nó "Child 3" possue também um nó (Child 4). O sinal (+) na raiz "Root 2" indica que ela possui nós filhos e pode ser expandida. O sinal de (-) em Root1 indica que podemos retrair as ramificações exibidas em Root1.

Figure 2.0   Raiz e Nós Filhos

Cada nó da árvore é um objeto Node programável que pertence á coleção Node e como em outras coleções cada membro da coleção possui uma única propriedade índice e uma única propriedade chave que nos permite acessar as propriedades do nó. Por exemplo , o código abaixo usa a propriedade Index do node ("7") para configurar as propriedades Image e Text:

tvwMeuTree.Nodes(7).Image = "closed" 
tvwMeuTree.Nodes(7).Text = "teste"

Node - Relationamentos e referências a nós relativos

Cada nó pode ser um nó filho ou um nó pai , dependendo de seu relacionamento com outros nós. O objeto Node possui diversas propriedades que retornam vários tipos de informação sobre nós pai e nós filhos. O exemplo a seguir usa a propriedade Children para retonar o número de "filhos" que um nó possui:

MsgBox tvwMeuTree.Nodes(10).Children

Algumas propriedades podem retornar apenas uma referência a outros objetos Node. Assim a propriedade Parent retorna uma referência ao nó pai de qualquer nó particular e com essa informação você pode manipular o nó pai através de seus métodos ou pela configuração de suas propriedades. A seguir temos um exemplo que retorna as propriedades Text e Index do nó pai.

MsgBox tvwMeuTree.Nodes(10).Parent.Text
MsgBox tvwMeuTree.Nodes(10).Parent.Index

Incluindo Objetos Node a coleção Nodes

Para incluir um nó(Node) a uma árvore(Tree) usamos o método Add (Nodes collection). Este método contém dois argumentos: relative and relationship, os quais podem determinar onde o nó será incluído. O primeiro argumento - relative - dá nome a um nó; o segundo argumento - relationship - especifica o relacionamento entre o novo nó e o nó referenciado em relative.

A sintaxe para o método Add é a seguinte:

object.Add(relative, relationship, key, text, image, selectedimage)

argumentos Descrição
relative Opcional. O número do Index ou Key de um objeto Node pré-existente.
relationship Opcional. Determina o posicionamento do nó .
key Opcional. Uma string única que pode ser usada para retornar o Nó com o método Item.
text Obrigatório. A string que aparece no Nó.
image Opcional. O índice da imagem no controle ImageList associado
selectedimage Opcional. O índice de uma imagem associada ao controle ImageList que será visualizada quando o Nó é selecionado.

Explicando melhor : Quando você cria um nó pode fazer isto a partir de um nó já existente , e, para criar um nó dentro do outro você deve usar o argumento relative se referindo a nó que já existe.

O código a seguir inclui um nó chamado "11 node" como um nó filho de outro nó chamado "7 node", a constante tvwChild determina que o novo nó é um filho de um nó chamado no argumento anterior .

tvwMeuTree.Nodes.Add "7 node", tvwChild, "11 node"

O argumento relationship vai identificar qual a relação entre o nó que estamos criando e o nó que já existe . Valores possíveis de relacionamentos:

Constante Valor Descrição
tvwLast 1 O nó é posicionado depois de todos os outros nós e no mesmo nível do nó definido em relative.
tvwNext 2 O nó é posicionado depois do nó nomeado em relative.
tvwPrevious 3 O nó é posicionado antes do nó nomeado em relative.
tvwChild 4 O nó torna-se um nó filho do nó definido em relative.

Assim , supondo que exista três nós e que queiramos colocar um quarto nó entre o segundo e o terceiro nó, como faríamos ? .Veja o código abaixo:

'Assumindo que o valor da propriedade Key para o nó é "2 Node"
tvwMyTree.Nodes.Add "2 node", tvwNext

Podemos declarar uma variável objeto do tipo Node e então configurar suas propriedades usando o método Add. A instrução Set define a variável objeto como um novo Nó. Podemos então usar a variável objeto para configurar as propriedades do Nó. Veja exemplo a seguir:

Dim nodX As Node
Set nodX = tvwMyTree.Nodes.Add("10 node", tvwChild)
nodX.Key = "11 node"
nodX.Text = "IEEE"
nodX.Image = "closed"

Bem ... , por enquanto vamos ficando por aqui , veja a continuação deste artigo em : Usando o Controle TreeView - Prática II.

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti