Clipper/FiveWin - oTree tres niveles.

   
Vista:

oTree tres niveles.

Publicado por marcelo (2 intervenciones) el 07/05/2009 00:35:41
Hola, vi el TREVIEW.PRG, y quisiera utilizar esa función pero con un nivel mas.

El programa es asi:

oItem1 = oTree:Add( "Elemento-1" )

oItem1:Add( "Sub-Elemento-1-1" )
oItem1:Add( "Sub-Elemento-1-2" )
oItem1:Add( "Sub-Elemento-1-3" )

oItem2 = oTree:Add( "Elemento-2" )

oItem2:Add( "Sub-Elemento-2-1" )
oItem2:Add( "Sub-Elemento-2-2" )
oItem2:Add( "Sub-Elemento-2-3" )

Yo quisiera que cada uno de los Sub-Elementos sea un nuevo item.
que quede asi:

Elemento-1
Sub-Elemento-1.1.
Sub-Sub-Elemento-1.1.1. (poder agregar un nivel mas de esta manera)
Sub-Sub-Elemento-1.1.2.
Sub-Sub-Elemento-1.1.3.

y por otro lado, al clickear en el último elemento, cual es la variable que me devuelve la selleccion???

Gracias.
Marcelo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:oTree tres niveles.

Publicado por marcelo (161 intervenciones) el 07/05/2009 01:08:30
ya está, encontré el ATREE.PRG ahi está muy facil como hacerlo.
pero como capturo la variable del elemento seleccionado?????
Gracias otra vez.
MArcelo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:oTree tres niveles.

Publicado por Gabirel Pascual (914 intervenciones) el 07/05/2009 01:25:16
Muy Facil:

Un arbol solamente es un contenedor de "ramas" (Treeitems)

Si ya tienes un objeto TREE creado, la instruccion:

oItem1 = oTree:Add( "Elemento-1" )

Te devuelve un objeto "RAMA" (oItem1) ese objeto a su ves ES OTRO ARBOL

Por esa razón cuando haces:

oItem1:Add( "Sub-Elemento-1-1" )
oItem1:Add( "Sub-Elemento-1-2" )
oItem1:Add( "Sub-Elemento-1-3" )

Agregas 3 elementos a la primer rama.

Si quieres que las ramas anteiroe tengan mas ramas hacia abajo, haces lo sgiuietne:

oSubRama := oItem1:Add( "Sub-Elemento-1-1" )

Es decir, guardas la rama en una variable, y como esa rama a su vez es otro arbol, entonces haces:

oSubRama:Add("sub-sub rama")

Si a su vez quieres mas ramas debajo, pues haces igual:

oOtraRama := oSubRama:Add("sub-sub-sub rama")

y Así hasta que lleges al nivel deseado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:oTree tres niveles.

Publicado por marcelo (33 intervenciones) el 08/05/2009 02:05:52
Master, este es el prg que hice, me sale perfecto el Tree con los tres niveles tomando Rubro, Grupo y Articulo.

Lo que necesito, si es que se puede, es capturar el articulo seleccionado.
Doble click abre el rubro, doble click de nuevo abre el grupo y veo los articulos.

Como capturo el articulo que selecciono????
Pongo un boton "Aceptar" pero cual es la variable que me devuelve el item seleccionado???????
Gracias de antemano.


use Artic index Art1 New
use Grupo index Gru1 New
use Rubro index Rub1 New

TREE oTree

do while !eof()

&&PRIMERA RAMA POR RUBROS

TREEITEM Rubro->Nombre
sele Grupo
go top
seek str(Rubro->Rubro,3)
if found()
TREE
sele Grupo
do while Rubro->Rubro=Grupo->Rubro

&&SEGUNDA RAMA POR GRUPOS

TREEITEM Grupo->Nombre
sele Artic
seek str(Grupo->Rubro,3)+str(Grupo->Grupo,4)
if found()
TREE
sele Artic

&&TERCERA RAMA POR ARTICULOS

do while Rubro->Rubro=Artic->Rubro .and. Grupo->Grupo=Artic->Grupo
TREEITEM Artic->Nombre
skip
enddo
ENDTREE
endif

sele Grupo
skip
enddo
ENDTREE
endif

sele Rubro
skip

enddo

ENDTREE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

nRowPos

Publicado por marcelo (2 intervenciones) el 08/05/2009 16:45:53
hola!
con oLbx:nRowPos capturo el numero del item, pero este numero varia segun las ramas que haya abierto.

hay algun comando del tipo oLbx:nombre de la rama?

Saludos.
Marcelo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:nRowPos

Publicado por Gabriel Pascual (914 intervenciones) el 08/05/2009 18:51:19
No exactamente.

Creo recordar que tienes una data llamada bDblClick, que a su vez de un bloque de código y que recibe como parametro el ITEM sobre el cual hiciste doble click.

oTree : bDblClick := {| oTreeItem| Tufuncion(oTreeItem)}

y en TuFuncion() puedes analizar los datos que quieras de ese treeitem.

Pero ojo, la data es del TREE general, no de la rama.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar