FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Autocompletar en TEdit
Buenas, estoy buscando la forma de hacer el autocompletado de un TEdit.
Lo cuento en detalle. Ya he logrado usar la librería de Windows "Shlwapi.dll" pero a medias. Cuando estoy en la caja de texto y presiono algunas teclas me hace el autocompletado, pero de cosas que ya hay guardadas en algún lugar del S.O. Esto está bien y es una parte de lo que quiero hacer. Vale recordar que se va llenando con textos que se le cargan, digamos, desde el IE. Lo que quiero ahora es que también "memorice" lo que yo le pongo en mi caja de texto para que en una próxima intervención también sea parte de la lista. Un poco de código:
Mi caja de texto "txtAuto" funciona como lo he mencionado, mientras escribo me va haciendo sugerencias de lo que tiene guardado en algún lugar. Si pongo ms ya me sugiere msconfig, este comportamiento es conocido. Ahora pongo "santiago", esta palabra no está registrada aún por lo cual no me hace sugerencia. Lo que quiero es registrarla para que la próxima vez ya me la ponga como parte de las sugerencias. O sea, pongo "sa" y ya tenga "santiago" en la lista que aparece. Espero haber sido claro. Gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#2
|
||||
|
||||
Hola Santiago.
A primera vista la complicación que creo se te va a presentar con el uso de SHAutoComplete es que, para que memorice tus ingresos, vas a tener que almacenarlos en el archivo de historial de IE. Esto último, que seguramente sea posible (aunque desconozco como), pienso que tiene al menos dos desventajas. La primera es que quién escriba en el navegador recibiría el autocompletado de tu "diccionario personalizado" sin que sea necesariamente una URL. La segunda es que algún usuario podría borrar el historial o seleccionar la opción "Eliminar el historial de navegación al salir"... Tal vez exista una solución alternativa mas simple... ¿ Cuál es la finalidad del código ? Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
||||
|
||||
Cita:
Si hay una solución mas simple, mejor. La finalidad del código es llenar unas cajitas de texto en una ventana de facturación que no se pueden dejar libres. Nombre del cliente, teléfono, dirección. La manera mas "fácil", a priori, era esto. Sería bueno encontrar una buena solución para poder escribir en ese archivo. Santiago.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#4
|
||||
|
||||
Hola Santiago.
No sé si cumplirá tus espectativas, pero una alternativa simple es usar un TComboBox, por ejemplo:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#5
|
||||
|
||||
santiago14,
Cita:
Cita:
Nelson. |
#6
|
||||
|
||||
Cita:
Gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#7
|
||||
|
||||
Gracias, voy a revisarlo y les cuento.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#8
|
||||
|
||||
Hola.
Mirando el código anterior, que hice al vuelo y sin mucha prueba , veo que se le puede hacer una mejora significativa: De este modo se evita el guardado de ítems duplicados y por consiguiente el crecimiento innecesario del archivo de texto. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#9
|
||||
|
||||
Cita:
Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#10
|
||||
|
||||
santiago14,
Cita:
El código anterior simula de forma básica la función SHAutoComplete en un componente TComboBox modificado, como se muestra en la siguiente imagen: El ejemplo esta disponible en el link: http://terawiki.clubdelphi.com/Delph...e_ComboBox.rar Espero sea útil Nelson. |
#11
|
||||
|
||||
Buén código Nelson
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#12
|
||||
|
||||
Realmente ha sido muy útil.
Una pregunta. Si quiero decidir yo mismo el nombre del archivo de texto en el cual voy a guardar la lista ¿Cómo hago? Por ejemplo que quiera tener un archivo de texto para cada combo, y tengo dos combo's. Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#13
|
||||
|
||||
Cita:
Ahora puedo poner el nombre del .txt que yo quiera, y además, cada combo podría tener un archivo de texto particular. Gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#14
|
||||
|
||||
Que va, faltaría dar una vuelta de tuerca mas para cuando no me envíen un nombre para mi archivo de texto...
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#15
|
||||
|
||||
santiago14,
Cita:
El código anterior es la Versión 2 del código sugerido en el Msg #10 que permite: Simular de forma básica la función SHAutoComplete en un componente TComboBox modificado. Mejoras realizadas: 1- Se incluyo la propiedad History que permite asignar un archivo Histórico a un ComboBox. 2- Se incluyo el método LoadHistory que permite cargar el archivo Histórico asociado al ComboBox. 3- Se elimino el efecto de flickering al cargar el ComboBox. 4- Se optimizo el código a nivel general. Notas: 1- Si se omite el método LoadHistory, el ComboBox Modificado funcionara como un ComboBox estándar. 2- Si se omite la propiedad History, el ComboBox Modificado funcionara con el archivo Histórico por Defecto 'History.txt'. 3- Se debe asignar primero la propiedad History y luego llamar el método LoadHistory, para un correcto funcionamiento del Histórico. El ejemplo esta disponible en el link: http://terawiki.clubdelphi.com/Delph...omboBox+V2.rar Espero sea útil Nelson. Última edición por nlsgarcia fecha: 12-09-2013 a las 09:36:45. |
#16
|
||||
|
||||
santiago14,
Continuación del Msg #15: Revisa este código: El código anterior es la Versión 3 del código sugerido en el Msg #15 que permite: Simular de forma básica la función SHAutoComplete en un componente TComboBox modificado. Notas: 1- El método LoadHistory permite definir el archivo histórico asociado al ComboBox Modificado. 2- Si se llama el método LoadHistory sin parámetros, se cargara el archivo Histórico por Defecto 'History.txt'. 3- Si se omite el método LoadHistory, el ComboBox Modificado funcionara como un ComboBox estándar. 4- Se elimino la propiedad History, la cual fue sustituida por el parámetro FileHistory del método LoadHistory. El ejemplo esta disponible en el link: http://terawiki.clubdelphi.com/Delph...omboBox+V3.rar Espero sea útil Nelson. |
#17
|
||||
|
||||
Lo que propuso Nelson está realmente bueno.
Haciendo un poco de futurología... ¿No perderá rendimiento cuando el listado se haga medio grande? Para eso había pensado ponerle un botón de "eliminar historial" y volver a empezar... Si el historial es grande, hay dos momentos que yo veo que pueden ser conflictivos: 1) Cuando se carga el historial, por cada combo, al principio. 2) Cuando se agrega un elemento nuevo al combo. Esto es en realidad sobrescribir el archivo de texto anterior con uno nuevo, que tiene una línea mas. Por otro lado, sería bueno tener un historial por cada combo ¿sería bueno realmente? y que el archivo de texto se cree automáticamente sin que el usuario lo defina. Cuando el usuario defina explícitamente un archivo de historial, el creado por defecto desaparezca. Si no es razonable tener un historial por cada combo, la propuesta aquí expuesta es la mas indicada, ya que si no se define un archivo de texto, el combo actúa de manera natural. Santiago.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#18
|
||||
|
||||
santiago14,
Cita:
Cita:
El código anterior es la Versión 4 del código sugerido en el Msg #16 que permite: Simular de forma básica la función SHAutoComplete en un componente TComboBox modificado. Notas: 1- El método LoadHistory permite definir el Archivo Histórico y su Cantidad Máxima de Items, asociado al ComboBox Modificado. 2- Si se llama el método LoadHistory sin parámetros, se creara por defecto el archivo 'History_' + Self.Name + '.txt' con un límite máximo de 10 items. 3- Los Items ahora son Insertados al principio de la lista en lugar de Adicionados al final de esta, por lo tanto esta será de reiniciación cíclica en función del número máximo de items por archivo definidos explicita o implícitamente en el método LoadHistory. 4- El número máximo de Items por archivo histórico es 255. 5- Si se omite el método LoadHistory, el ComboBox Modificado funcionara como un ComboBox estándar. El ejemplo esta disponible en el link: http://terawiki.clubdelphi.com/Delph...omboBox+V4.rar Espero sea útil Nelson. Última edición por nlsgarcia fecha: 14-09-2013 a las 03:28:54. |
#19
|
|||
|
|||
Y este método seria posible implementarlo pero alimentado desde una base de datos en lugar de un txt?? y además se podría hacer algo como lo hace google que si tu pones un nombre te aparece en la lista todo lo que lleve ese nombre no importando en que parte del texto este ese nombre.
|
#20
|
||||
|
||||
RedVenom,
Cita:
Espero sea útil Nelson. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Autocompletar | Raistlin | Varios | 1 | 29-01-2007 13:05:35 |
Autocompletar un TEdit (solución, no consulta) | Walterdf | Varios | 4 | 05-10-2005 21:23:35 |
Pasar el valor de un TEdit dentro de un StringGrid a otro TEdit que está fuera | atirado | Varios | 4 | 11-09-2004 20:13:48 |
Ayuda. Autocompletar TEdit | Fonso_esp | Varios | 2 | 23-04-2004 16:31:05 |
Edit con autocompletar | Rox77 | Varios | 1 | 21-05-2003 11:36:05 |
|