Realizado el Merge.
Ayer me enteré de que, a petición de Gianluigi, Benoît ha implementado la búsqueda según se escribe en el combobox de la rama Master. Por un momento pensé ¡Oh,no, todo el trabajo para nada! A continuación me descargué el código de Benoît y lo comparé con el mío línea a línea y observo que básicamente los dos hemos dado la misma solución, pero hay varias diferencias:
Con el combobox:
-Tienes que pulsar el botón para desplegar la lista y buscar según tecleas
-No se refleja en el textbox los caracteres tecleados mientras buscas en la lista
-No se ordenan correctamente las cadenas propias del lenguaje, en concreto los caracteres acentuados
-No se busca correctamente los caracteres acentuados
Con el comboseek:
-La lista se despliega al teclear la primera letra
-Se reflejan en el textbox los caracteres tecleados mientras buscas en la lista
-Las ordenaciones siguen las reglas del lenguaje (es decir los caracteres acentuados son tratados igual que los no acentuados a la hora de ordenar)
-Las búsquedas también funcionan correctamente con los caracteres propios del lenguaje
y como novedades:
-ComboSeek tiene una nueva propiedad MaxItems, que establece el número de items visibles en la lista (es decir el tamaño del desplegable), antes era una constante fija de 10 items.
-También le he eliminado la propiedad Password, que creo que no tiene sentido en un combobox.
-Finalmente he retocado ligeramente el aspecto, de manera que la flecha hacia abajo a la derecha del control tenga un fondo del color de los botones. (Funciona muy bien en mi escritorio, pero no lo he probado aún en otros escritorios o librerías gráficas)
La diferencia interna básica es que ComboSeek tiene una copia de la lista cuyos elementos han sido despojados de mayúsculas y acentos, usándose esta lista para las búsquedas mientras que ComboBox no tiene este array interno y busca directamente en la lista convirtiendo primero cada elemento en minúsculas. Como el recorrido de toda la lista desde el principio convirtiendo cada elemento a minúsculas se hace cada vez que se pulsa una tecla, al final es más lento que Comboseek aunque ComboSeek ocupe más memoria al manejar las dos listas.
Para acercar las dos versiones he cambiado los nombres de las dos variables relacionadas con la búsqueda, $str, $hCtrl y la función de búsqueda SearchList(), para que se llamen igual que las que ha creado Benoít, $sFind, $hCombo y FindItem(), que son mucho más explicativas que las que yo elegí. Soy muy malo buscando nombres, ya lo sabéis.
En resumen, me quedo con ComboSeek, que es más ajustado a lo que quiero, más completo y, ¡qué cojones!, es mío
Con el Merge de los cambios que ha hecho Tincho, le he subido la versión a 0.1.5. Lo tenéis en el gitlab y en la Granja de Gambas
Saludos