PowerBuilder autocompletar DropDownListBox

Juliusguate, que bueno existan personas como tu entusiastas de la programación, aver si me puedes dar una mano con esto: Resulta que quiero que un DropDownListBox se pueda simular algo así como la propiedad AutoSkip porque resulta que este control no la tiene, Una ves que este habilitada la propiedad AllowEdit, cuando este editando me encantaría que basándose en los ítems que tiene cargados auto complete el texto.
1

1 respuesta

Respuesta
1
He trabajado con la version 7.0, no sé si las versiones 8.0, 9.0, 10.0, 10.5 ya lo tienen sin embargo se puede simular algo parecido utilizando el evento modified,
Que cuando se ingrese cada letra busque en los items, y con el primero que cumpla esa condición se posicione ahí, que guarde el puntero a la posición de la letra y seleccione a partir de ahí el resto del texto para poder seguir editando
Julius
-Guatemala-
El algoritmo es el indicado pero creo que mejor se acomoda el evento pbm_enchange, porque la idea es que autocomplete en el proceso de edición y no después de cambiar de casilla. Si de casualidad ya implementaste este algoritmo en alguno de tus programas te agradecería mucho si me dejaras ver un fragmento de código. Porque la verdad no tengo idea de cómo buscar letra por letra en los ítems cargados.
Si, el evento modified sería al terminar la edición del campo
La idea del código seria la siguiente:
1. Capturar una letra,
2. Poner en N la posición de la letra (este es un contador que llevamos)
3. Sacar el texto de la posición 1 a N (con mid) y ponerlo en 'objetivo'
4. Despues con la funcion finditem del dropdownlistbox buscamos 'objetivo' en el dropdownlistbox
5. Movemos el indice del dropdownlist a la posición dada por el finditem
6. Seleccionamos el texto desde la posición N+1 hasta el final del texto mostrado por el listbox, esto con el objetivo que si el usuario sigue escribiendo la próxima letra sustituya el resto del texto.
Lamentablemente no tengo código para eso. Suerte
Julius
-Guatemala-
Estuve investigando eventos, y tampoco es el pbm_enchange, ya que no funciona letra por letra. El id del evento que me funcionó letra por letra es
pbm_cbneditchange
Entonces ya solo sería de implementar el código.
Suerte
Julius
-Guatemala-
Tus intenciones son las muy nobles muchas gracias, entonces habrá que ponerme en la tarea de implementar el código, si tengo algún problema espero contar con tu ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas