Power Builder - Insercion en TreeView

 
Vista:

Insercion en TreeView

Publicado por Ivan (101 intervenciones) el 04/08/2003 16:39:47
Un cordial saludo a todos los colegas del area de informatica.

Necesito una pequeñita ayuda. El caso es el siguiente:

Tengo una ventana con un treeview control, un datawindow, un boton de insertar y un boton de guardar. lo que quiero es saber como hago para que al momento de guardar una fila en el dw, este se inserte el en treeview en el nivel correspondiente del treeview.

Gracias por su atencion
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:Insercion en TreeView

Publicado por Milson Cardona (613 intervenciones) el 04/08/2003 21:59:23
Un saludo especial desde COLOMBIA

este es el script para insertar un nuevo item en el arbol....donde handle_nivel_deseado es el consecutivo que se le asigno al momento de crear al nivel donde quieres insertar el nuevo item.

TreeViewitem ltvi_nuevo_item
Long ll_newhandle

ll_newhandle = treeview_1.InsertItemlast(handle_nivel_deseado,ltvi_nuevo_item)

ya debes buscar tu cual es el handle del padre donde quieres insertar el nuevo nivel.

como en tu pregunta no dices cuales son los niveles que tienes, ni das muchos detalles del problema, como por ejemplo a que ten refieres con niveles, cuantos tendrías, si un nivel puede tener varios subniveles etc,etc no te puedo ayudar de una mejor manera
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:Insercion en TreeView

Publicado por Ivan (101 intervenciones) el 05/08/2003 00:13:47
Gracias amigo Milson

En cuanto a los niveles te puedo ser mas explicito . Por ejemplo tengo een mi arbol lo siguiente:

1.America del sur
1.1 Brasil
1.2 Colombia
1.3 Venezuela
1.3.1 Apure
1.3.2 Aragua
1.3.3 Bolivar
1.3.4 Carabobo
1.3.4.1 Mariara
1.3.4.2 San Joaquin
1.3.4.3 Valencia
1.4 Argentina

los niveles pueden variar, entonces por ejemplo cuando voy a insertar un item en mi arbol dentro de 1.3.4.3 Valencia un subnivel mas que seria 1.3.4.3.1 El Trigal el deberia insertarlo debajo de ese item

Espero que haya sido mas explicito para que asi me puedas ayudar de una mejor manera....

Gracias
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

solo es una idea

Publicado por Milson Cardona (613 intervenciones) el 05/08/2003 23:30:58
Un saludo especial desde COLOMBIA

hola Ivan, perdoname por la demora pero he tenido mucho trabajo...

segun la estructura que dices puedes hacer lo siguiente
-sacar el posible codigo numerico del padre en que se deberá insertar el nuevo item
-recorrer todo el arbol buscando este codigo en la propideda LABEL de cada item
-cuando lo encuentre, insertamos el nuevo item con el handle de este padre encontrado....

INTEGER li_i,li_j
String ls_nombre_nuevo_item,ls_codigo_padre,ls_codigo_item
treeviewitem litv_padre,litv_nuevo_item
//ciclo que busca el codigo numerico del padre del nuevo item que vamos a ingresar al arbol
FOR li_i = 1 TO LEN(ls_nombre_nuevo_item)
IF MID(ls_nombre_nuevo_item,li_i,li_i) <> '.' AND NOT ISNUMBER(MID(ls_nombre_nuevo_item,li_i,li_i)) THEN
//le restamos 2 para no cojer el "." y el ultimo número y así encontrar el codigo del padre
ls_codigo_padre = MID(ls_nombre_nuevo_item,1,li_i - 2)
//salimos del ciclo
EXIT
END IF
NEXT

sigue en la proxima pagina
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

la continuacion

Publicado por Milson Cardona (613 intervenciones) el 06/08/2003 01:27:03
viene del anterior

//buscamos el código numerico del padre en el arbol, el ciclo va hasta un número mayor que los item que tenga
//y así asegurarnos que no terminará antes de buscar en el último item.
FOR li_j = 1 TO 200
//recorremos todo el arbol chequeando item a item buscando el padre, cuando lo encontremos insertamos el nuevo item y salimos
treeview_1.getitem(li_j,litv_padre)
//buscamos el código numerico de cada item
FOR li_i = 1 TO LEN(litv_padre.label)
IF MID(litv_padre.label,li_i,li_i) <> '.' AND NOT ISNUMBER(MID(litv_padre.label,li_i,li_i)) THEN
//así encontramos el codigo del item actual que estamos verificando
ls_codigo_item = MID(litv_padre.label,1,li_i)
//salimos del ciclo interno
EXIT
END IF

//preguntamos si el código nuemrico del item es igual al código que habiamos determinado para el padre
//si lo es insertamos el código y salimos del ciclo, sino seguimos buscando en el proximo item
IF ls_codigo_item = ls_codigo_padre THEN
litv_nuevo_item.Label = ls_nombre_nuevo_item

IF treeview_1.InsertItemlast(li_j,litv_nuevo_item) < 1 THEN
Messagebox('TREEVIEW ERROR','Insertlastitem error')
END IF
//salimos despues de ingresar el item
EXIT
END IF
NEXT
NEXT

solo es una idea, yo la probé y me funcionó con un treeview que tengo en una aplicación... pruebalo, hazle los ajustes que requiera y me comentas los resultados
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