Compartir a través de


Agregar y quitar elementos en un control Treeview

Archivo: ...\Samples\Solution\OLE\Bldtree.scx

Un control Treeview muestra una colección de objetos Node, cada uno de los cuales consta de una etiqueta y de un mapa de bits opcional. Después de crear un control Treeview, puede agregar, quitar, organizar y manipular objetos Node de otra manera estableciendo propiedades y llamando a métodos.

Este ejemplo ilustra la manera de agregar nodos a un control Treeview, eliminar nodos, seleccionar nodos mediante programa, y escribir y leer una jerarquía de árbol en una tabla.

Agregar nodos

En un control Treeview cada nodo necesita una clave única que está formada por una cadena de caracteres, generada por el método NewKey en este formulario de ejemplo.

*NewKey method
cKey = THIS.cNextKey
THIS.cNextKey = ALLTRIM(STR(VAL(THIS.cNextKey) + 1) + "_")
RETURN cKey

El método Add del control Treeview se utiliza para agregar nodos nuevos. El código asociado al evento Click de cmdNewNode agrega un nodo en el nivel de la raíz utilizando el método Add.

o = THISFORM.oleTree
o.Nodes.Add(,1,THISFORM.NewKey(),"Click to edit text",0)

El código asociado al evento Click de cmdNewChild agrega un nodo secundario del nodo seleccionado actualmente.

o = THISFORM.oleTree
IF !ISNULL(o.SelectedItem) THEN
   o.Nodes.Add(o.SelectedItem.Key, 4, THISFORM.NewKey(), "Click to edit text",0)
ENDIF

Eliminar nodos

Puede eliminar todos los nodos llamando al método Clear.

THISFORM.oleTree.Nodes.Clear

O puede utilizar el método Remove para eliminar los nodos seleccionados. También se eliminan todos los nodos secundarios del nodo eliminado.

THISFORM.oleTree.Nodes.Remove(THISFORM.oleTree.SelectedItem.Key)

Escribir y leer jerarquías en tablas

Para guardar la jerarquía de árbol en una tabla de forma que la pueda volver a cargar y editar, realice un bucle a través de todos los nodos del control Treeview y escriba el valor de Key (la clave del nodo), el valor de Key del nodo principal y el valor de Text (el texto del nodo) en los campos apropiados de una tabla.

FOR i = 1 TO loNodes.Count
   IF ISNULL(loNodes.Item(i).Parent)
      lcParent = "0_" && Root
   ELSE
      lcParent = loNodes.Item(i).Parent.Key
   ENDIF
   INSERT INTO (lcDBFName) VALUES ;
      (loNodes.Item(i).Key, ;
       lcParent, ;
       loNodes.Item(i).Text)
ENDFOR

Para reconstruir la jerarquía de árbol, examine los registros de la tabla utilizando la clave principal, la clave y los valores de texto que almacenó anteriormente.

* Fill the TreeView control with values in the table.
o = THISFORM.oleTree.Nodes
   SCAN
      IF ALLTRIM(parent) = '0_'
         o.add(,1,ALLTRIM(key),ALLTRIM(text),0)
      ELSE
         o.add(ALLTRIM(parent),4,ALLTRIM(key), ALLTRIM(text),0)
      ENDIF
      THISFORM.cNextKey = ALLTRIM(STR(VAL(key) + 1) + "_")
   ENDSCAN

Vea también

Arrastrar y colocar controles Treeview y Listbox | Ejemplos de soluciones