Power Builder - Busqueda en TeeView

 
Vista:

Busqueda en TeeView

Publicado por Marcos Sanchez Durand (3 intervenciones) el 21/06/2006 13:56:05
Necesito realizar una búsquela, en un TreeView . ejemplo quiero hacer un búsqueda de Clientes en una lista muy extensa es decir si el usuario inserta el argumento (código o Razon Social) necesito que me busque y me la recupere posicionandose en el código buscado,, en caso de que no este que me envíe un mensaje de que no se encontró el registro.....
Bueno, imagino que al tener el comando de búsqueda este se puede utilizar para buscar a nivel de Padres o de hijos.

Espero me puedan ayudar por favor........Muchas gracias.......
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:Busqueda en TeeView

Publicado por mike (1 intervención) el 07/10/2007 01:56:03
seria muy facil darte el nombre de una funcion la cual incluyendo el nombre del nodo o su descripcion, simplemente sea localizado, sin embargo, esta funcion no existe dentro del objeto treeview.
la realidad es que hay que construirla,
para ello deberas utilizar funciones como

tv_1.FindItem(RootTreeItem!, 0)

esta funcion coloca el puntero en una posicion determinada.
esta posicion esta determinada por el primer argumento.

las posibilidades son muchas como para inscribirlas en esta respuesta, sin embargo se encuentran disponibles en la ayuda en linea F1.

como podras observar, el primer argumento es RootTreeItem!, esto indica al objeto colocarse en el primer nodo del treeview.

perdon se me habia olvidado, la busqueda de nodos es secuencial. y la tienes que hacer con tus propios medios.

bien

la funcion finditem() devuelve un valor del tipo numerico, si este es -1 es que ocurrio un error, de lo contrario, devuelve el numero de handle, del nodo.

para poder interrogar al nodo, utilizaras una funcion llamada tv_1.GetItem(<handle>, <nodo>)

igualmente devuelve un valor numerico, -1 si hay error y 1 si todo fue bien.

los argumentos son 2, el primero es el numero de handle del nodo que necesitas, y el segundo es el resultado de la peticion, o sea que en el argumento nodo coloca una instancia del nodo en cuestion.

ya con esta instancia puedes preguntar por el nombre del nodo, descripcion, etc.

sino cumple con tus condiciones, entones avanzas un nodo, y lo mismo.

un nodo no es mas que un objeto TREEVIEWITEM. el cual contiene las caracteristicas correspondientes al nodo.

el nodo contiene una propiedad que informa si este contiene otros nodos asociados a el la propiedad es CHILDREN. entonces si esta propiedad es TRUE, significa que tiene asociados a el otros nodos.
de lo contrario es unico.

con todo esto ya puedes ahora armar una funcion que busque un nodo.

1- posicionar el treeview en el primer nodo.
2- efectuar un ciclo, cargando nodo a nodo, de forma secuencial
3 - extraer el nodo en una instancia del treeviewitem.
4 - preguntar si el nodo en cuestion es el que buscas.
5 - sino es, preguntar si tiene hijos.
6 - efectuar el mismo proceso de localizacion de nodo.
7 - saltar al siguiente.
8 - si encuentras el nodo abortar la secuencia de busqueda.
9 - responder segun la busqueda.

para poder hacer busquedas dentro de nodos que tengan hijos.
deberás utilizar la tecnica de lectura por recursividad, con este aspecto deberás tener mucho cuidado, pues power builder no tiene un manejo de recursividad muy bueno, regularmente desborda la pila de memoria. (STACK)

finalizando.

no tengo idea de que esto pueda ser acertado, pero es posible que alguna de las funciones de las pfcs, tengan resuelto este problema, sin embargo personalmente no te recomiendo utilices las pfcs.

espero esto pueda ser de utilidad para resolver tu problema
saludos
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