home/julio/tutorialSoplo/trabajar con treeview

Anuncio
T rabajar con T REEVIEW en G AMBAS
file:///home/julio/tutorial_gambas/trabajar%2...
Bienvenido(a ), Vis it ant e. Fa vor de
ingresa r o registra rse.
¿Perdiste tu ema il de a ctiva ción?
09 Ma yo 2009, 18:00:35
Not icias : Bienvenido a Spa in foros
Comunid ad G ambas
PROG RAMACION G AMBAS
Pr incipiant es
T r abajar con T REEVIEW en
G AMBAS
0 Us u ar i os y 1 Vi s i tan te es tán vi en do es te
tem a.
« an ter i or pr óxi m o
»
Pág inas : [1]
Aut or
s oplo
Adm i n i s tr ator
J r . Mem ber
Des con ectado
Men s aj es : 61
T ema: T r abajar con T REEVIEW en G AMBAS (Leíd o 31 veces )
T r abajar con T REEVIEW en G AMBAS
« e n: 09 Novi em br e 2008 , 10:42:5 1 »
Ha y que entender que un control treeview tiene dos punteros.
Uno es el puntero que nosotros elegimos bien con el tecla do, bien con el ra tón. Este puntero es
a ccesible media nte CURRENT
Có digo :
Tree.current.text
----> devuelve el texto del elemento seleccionado actual
Sin emba rgo en cierta s oca siones debemos obtener elementos de otros item que no está n
selecciona dos. Pa ra ello podemos despla z a rnos media nte los métodos MOVE y luego usa r
ITEM pa ra obtener informa ción de ese nodo.
Có digo :
Tree.current.text ----> devuelve el texto del elemento seleccionado
Tree.moveparent ----> mueve el cursor al nodo padre
tree.item.text ----> devuelve el texto del elemento padre del seleccionado
Creación de los nodos
el a rgumento genérico es
tree.a dd(cla ve,texto,ima gen,pa dre)
La cla ve es la que permite expa ndir o cola psa r zona s
El texto es el mensa je que se mostra rá
La ima gen es el icono que tendrá esa zona (no necesa rio)
El pa dre es el nodo del cua l depende.
Crea ción de una primera zona globa l
Tre.Add("Zona s", "Zona s")
Crea ción de un nodo hijo de 'Zona s'
Tre.a dd(Pa is,"Espa ña ",,"Zona s")
Crea ción de un nodo hijo de Espa ña
Tre.a dd(Comunida d,"Ma drid",,"Espa ña "
Ejemplo
Leer de una ta bla los da tos pa ís, región, provincia , ciuda d y crea r un tree con los da tos
1 de 3
23/05/09 12:02
T rabajar con T REEVIEW en G AMBAS
file:///home/julio/tutorial_gambas/trabajar%2...
Decla ra r va ria bles
Có digo :
Dim Rec as result, Pais as string, Region as string, Provincia as string, Ciudad as string
Llena r el recordset
Có digo :
Rec = BD.Cn.Exec("select * from ubicaciones order by pais,region,provincia,ciudad")
Crea ción de zona inicia l
Có digo :
Lista.Add("Zonas", "Zonas")
Recorrer la ta bla e ir crea ndo nodos diná mica mente
Có digo :
DO WHILE Rec.Available
Pais = Rec!pais
Lista.Add(Pais, Pais,, "Zonas")
DO WHILE Pais = Rec!pais
Region = Rec!region
Lista.Add(Region, Region,, Pais)
DO WHILE Region = Rec!region
Provincia = Rec!provincia
Lista.Add(Provincia, Provincia,, Region)
DO WHILE Provincia = Rec!provincia
Ciudad = Rec!ciudad
Lista.Add(Ciudad, Ciudad,, Provincia)
Rec.MoveNext
IF NOT Rec.Available THEN BREAK
LOOP
IF NOT Rec.Available THEN BREAK
LOOP
IF NOT Rec.Available THEN BREAK
LOOP
LOOP
Ahora progra ma r el evento clck pa ra que a l pincha r en un nodo, se pueda a cceder a los
da tos busca dos (pa ra mostra rlos por ejemplo en un columnview9
Decla ra r va ria bles
Có digo :
DIM Sql AS String, Rec AS Result, Contador AS Integer, Padre AS String, Abuelo AS String, Tatarabuelo AS String
Inicia liza r va ria bles
Sql = "select * from ubica ciones where "
En este ejemplo los pa íses tienen un (P) a nte el litera l. La s regiones un (R). La s provincia s un
(PR). La s ciuda des no tienen na da .
Có digo :
SELECT CASE Left(Lista.Current.text, 3)
CASE "(P)" ' seleccionado pais
sql &= "pais='" & Lista.Current.text & "'"
CASE "(R)" ' seleccionada región
Lista.MoveParent
Padre = Lista.Item.Text
sql &= "pais='" & padre & "' and region='" & Lista.Current.text & "'"
CASE "(PR" ' seleccionado provincia
Lista.MoveParent
Padre = Lista.Item.Text
Lista.MoveParent
Abuelo = Lista.Item.Text
sql &= "pais='" & abuelo & "' and region='" & padre & "' "
sql &= "and provincia='" & Lista.Current.Text & "'"
2 de 3
23/05/09 12:02
T rabajar con T REEVIEW en G AMBAS
file:///home/julio/tutorial_gambas/trabajar%2...
CASE ELSE
IF Lista.Current.Text <> "Zonas" THEN 'si no es la zona inicial
Lista.MoveParent
Padre = Lista.Item.Text
Lista.MoveParent
Abuelo = Lista.Item.Text
Lista.MoveParent
Tatarabuelo = Lista.Item.Text
sql &= "pais='" & tatarabuelo & "' and region='" & abuelo & "' and provincia='" & padre & "' "
sql &= "and ciudad='" & Lista.Current.Text & "'"
ELSE
sql &= "id>0 order by pais,region,provincia,ciudad"
ENDIF
END SELECT
En este punto hemos obtenido una va ria ble SQL que permite a cceder a los da tos que el
usua rio ha selecciona do.
Ahora llena r un columnview que tenga mos a l la do
Có digo :
Contador = 0
Rec = BD.Cn.Exec(Sql)
tabla.Clear
tabla.Rows.count = Rec.Count
DO WHILE Rec.Available
tabla.Row = Contador
tabla[Contador, 0].text = Rec!descripcion
tabla[Contador, 1].text = Rec!direccion
Rec.MoveNext
Contador += 1
LOOP
tabla.Refresh
El resulta do es que a l pincha r en un nodo del tree se muestra n en el columnview los da tos
requeridos.
En l í n ea
Pág inas : [1]
« an ter i or pr óxi m o »
I r a:
ir
=> Prin cipian t es
Siem pre
Ingresar
Ingresa r con nombre de usua rio, contra seña y dura ción de la sesión
Powered by S MF 1 .1 .8 | S MF © 2006 , S imple Ma chines LLC
3 de 3
23/05/09 12:02
Descargar