TREEVIEW: Recorrer Recursivamente

24/07/2003 - 16:45 por Nelson Rodriguez | Informe spam
Amigos, humildemente, propongo una rutinita recursiva para recorrer un Arbol
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
*-*

Saludos
Nelson Rodriguez
nri@adinet.com.uy
Salto - Uruguay

Preguntas similare

Leer las respuestas

#1 Esparta Palma
24/07/2003 - 17:36 | Informe spam
Por que no lo mandas como Noticia a PortalFox? (cintillo izquierdo de la
página principal, en la sección Colabora )

www.portalfox.com -> Enviar Noticia

Apoya a Visual FoxPro usándolo legalmente
ž,ø€º°`°º€ø,žž,ø€º°`°º€ø,žž,ø€º°`°º€ø,žž,ø€º°`°º
Espartaco Palma Martínez
SysOp PortalFox ( http://www.PortalFox.com )
email:
Acapulco, Guerrero. México



Nelson Rodriguez wrote:

Amigos, humildemente, propongo una rutinita recursiva para recorrer un Arbol
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
*-*

Saludos
Respuesta Responder a este mensaje
#2 Nelson Rodriguez
24/07/2003 - 17:47 | Informe spam
OK, ya mismo
Saludos

"Esparta Palma" escribió en el
mensaje news:
Por que no lo mandas como Noticia a PortalFox? (cintillo izquierdo de la
página principal, en la sección Colabora )

www.portalfox.com -> Enviar Noticia

Apoya a Visual FoxPro usándolo legalmente
¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º
Espartaco Palma Martínez
SysOp PortalFox ( http://www.PortalFox.com )
email:
Acapulco, Guerrero. México



Nelson Rodriguez wrote:

> Amigos, humildemente, propongo una rutinita recursiva para recorrer un


Arbol
> 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
> *-*
>
> Saludos


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida