1 de junio de 2015

Recorrer recursivamente un control TreeView

Amigos, humildemente, propongo una rutinita recursiva para recorrer un control TreeView, no es gran cosa, pero por ahí a alguien le puede venir bien.

Serán bienvenidas las mejoras del caso.
*-------------------------------------------------------*
*- CASO 1 - Le paso como NODO el primer Hijo del Nodo en el que estoy posicionado.
*- En este caso la rutina NO procesa el Nodo sobre el que estoy (LO EXCLUYE).
o=thisform.otree
o.selecteditem
primerhijo=o.selecteditem.child)
ver_rama(primerhijo)
*-------------------------------------------------------*
*- CASO 2 - Le paso como NODO áquel en el que estoy posicionado.
*- En este caso la rutina SI procesa el Nodo sobre el que estoy (LO
INCLUYE).
o=thisform.otree
o.selecteditem
ver_rama2(o.selecteditem)
*-------------------------------------------------------*
PROCEDURE ver_rama(onodo)
*--- Pasandole el Primer Hijo del Nodo que me Interesa
LOCAL hnodo,next_nodo,t,nhijos

IF ISNULL(onodo)
   RETURN
ENDIF
MESSAGEBOX(onodo.text)
nhijos=onodo.children
IF nhijos>0
 hnodo=onodo.child
 ver_rama(hnodo)
endif
next_nodo=onodo.next
IF ISNULL(next_nodo)
   RETURN
ELSE
   ver_rama(next_nodo)
ENDIF
RETURN
*-------------------------------------------------------*
PROCEDURE ver_rama2(onodo)
*--- Pasandole el NODO, lo muestra a él y todo lo que cuelga de él
LOCAL hnodo,next_nodo,t,nhijos

IF ISNULL(onodo)
   RETURN
ENDIF
MESSAGEBOX(onodo.text)
nhijos=onodo.children
IF nhijos>0
 hnodo=onodo.child
 ver_rama(hnodo)
endif
RETURN
*-------------------------------------------------------*
Nelson Rodriguez
Salto - Uruguay

1 comentario :