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