FoxPro/Visual FoxPro - Necesito ayuda con el tree view

   
Vista:

Necesito ayuda con el tree view

Publicado por es_binario (757 intervenciones) el 30/01/2010 19:22:18
Quiero poner en un form el control tree view, me baje el codigo fuente de ejemplo de portalfox, pero no logro entender, como pone imagen al arbol principal del tree view, yo lo quiero usar para mostrar las familias de articulos, es decir, quiero que el usuario pueda crear una familia y luego sub familias y hasta una segunda sub familia algo asi

Familia:
Tarjetas Madre
Sub Familia:
Soket 775
Soket AM3
Soket AM2
Sub Familia B
Asus
Intel
MSI
Biostart

En fin, la idea ya la tengo, pero tengo las siguientes dudas

Mis dudas son estas

1.- Cual control OLE debo elegir, me aparecen varios tree view, estoy trabajando con xp

2.- Tengo el que dice microsoft tree view, y para agregar los nodos principales utilio esta sentencia
esta la tengo en el init del control tree view

this.oBJECT.Nodes.Add(,4,"TM","TARJETAS MADRE")
this.oBJECT.Nodes.Add(,4,"PC","PROCESADORES")

ahi mismo agrego sub nodos

WITH this.oBJECT.Nodes
.Add("TM",4,"T1","SOKET 775")
.Add("TM",4,"T2","SOKET AM2")
.Add("TM",4,"T3","SOKET AM3")
ENDWITH

todo bien aqui... No entiendo que Significa el 4

Entiendo por logica que TM es una abreviatura para no usar el nombre que aparece completo, digamos tarjeta madre

Tambien entiendo que T1 es el numero de nodo no importando cuantos sean

Este codigo que les pongo lo tome de un ejemplo y lo modifique, pero yo realmente lo que deseo es que mi form carge las familias de una tabla que se llama familia, y tiene esa misma tabla las respectivas sub familias, ademas quiero poner un peque;o icono para darle mas vista a mi tree view, he visto un video tutorial en youtube, pero no entiendo como funciona, si alguien me puede ayudar con esas dudas se los agradecer infinitamente.

aqui les pongo el link del video tutorial que encontre, pero tal vez por que el programa en vista y yo en xp no me aparezca igual las funciones, ademas de que el lo personaliza en modo dise;o y yo quiero cargar los nodos en modo ejecucion.

Gracias
http://www.youtube.com/watch?v=xGvO4zX9fJE
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: Ya lo Solucione

Publicado por es_binario (757 intervenciones) el 31/01/2010 20:06:15
Ya solucione lo del treeview, para poder ponerle iconos, hay que utilizar otro control ole el image.list este control almacenas lo iconos que deseamos mostrar en nuestro treeview, y a la hora de agregar un nodo al treeview, el ultimo digito de la intruccion representa la imagen que previamente cargamos en nuestro imagelist

por si a aguien le interesa por lo pronto en el init de mi treeview tengo el siguiente codigo para cargar los datos de la tabla familias de articulos y lo hace bien, por el momento este codigo solo es para una familia(las que sean) y sub familias es decir es un arbo de 3 ramas la principa y 2 mas, pero planeo ponerle la cuarta.

*// verifico que existan datos a cargar
SELECT fam1, nom_familia FROM familias;
WHERE familias.activa = .T. AND len(ALLTRIM(fam1)) > 0 AND len(ALLTRIM(nom_familia))>0;
INTO CURSOR famyl_1

SELECT famyl_1
IF RECCOUNT() > 0 && existen familias
*// preparo el objeto
This.Object.LineStyle = 1
*// con la siguiente instruccion asocio el contro tree view con el control
*// ole list view, para que muestre los iconos al final de cada linea
*// del comando add nodo aparece el numero de imagen
This.Object.ImageList = Thisform.ImageList.Object

*// agrego primero a las familias A
SELECT famyl_1
FOR a = 1 TO RECCOUNT()
SELECT famyl_1
GO a
LOCAL id_fam1_ as String
LOCAL nm_fam1_ as String
id_fam1_ = ALLTRIM(famyl_1.fam1)
nm_fam1_ = ALLTRIM(famyl_1.nom_familia)
*// agrego los nodos
*// This.Object.Nodes.Add(,4,"P1","Tarjetas Madre",1)
This.Object.Nodes.Add(,4, id_fam1_ , nm_fam1_ ,1)
ENDFOR

*// agrego primero a las familias B
SELECT fam1, fam2, sub_fam1 FROM familias;
WHERE familias.activa = .T. AND LEN(ALLTRIM(fam2))>0 AND LEN(ALLTRIM(sub_fam1))>0 ;
INTO CURSOR famyl_2

SELECT famyl_2
FOR a = 1 TO RECCOUNT()
SELECT famyl_2
GO a
LOCAL id_fam2_ as String
LOCAL nm_fam2_ as String
id_fam1_ = ALLTRIM(famyl_2.fam1)
id_fam2_ = ALLTRIM(famyl_2.fam2)
nm_fam2_ = ALLTRIM(famyl_2.sub_fam1)
*// agrego los nodos
*// This.Object.Nodes.Add(,4,"P1","Tarjetas Madre",1)
This.Object.Nodes.Add(id_fam1_,4, id_fam2_ , nm_fam2_ ,2)
ENDFOR

ENDIF
RETURN
*// This.Object.Nodes.Add("P1",4,"A1","Soket 775",2)
*// This.Object.Nodes.Add("PP1",4,"PE3","CENTRINO",3)

es muy util el control, aunque todabia no se como se va a distribuir, ya que mis programas los hago con installshield, pero ya llegare a ese paso, nada mas que termine todas las funciones, les facilitare, mi proyecto con el form de familias, por los que desen aprender a usar este maravilloso control

Saludos desde Mexico
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: Ya lo Solucione

Publicado por Cesar (63 intervenciones) el 01/02/2010 16:46:24
Gracias por compartir tu solucion con la lista.

Saludos desde Peru
Cesar
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: Ya lo Solucione

Publicado por yesid (2 intervenciones) el 13/04/2010 23:56:01
no tiene uno donde cree una especie de buscador para ver si un nodo exixte y que si existe quede ramificado (posicionado) el arbol ahi.
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