FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Realizar búsquedas en un ListBox mediante un Edit
Hola a todos...
La aplicación que estoy haciendo tiene un ListBox, que lo cargo de datos desde un fichero texto y tiene a su vez un Edit al que quiero que realize una búsqueda en el antedicho ListBox. Lo que quiero hacer es que el usuario teclee parte de la palabra o texto a buscar en el Edit y cuando de clic al botón "Buscar" entonces que haga que el ListBox me lo señale y vaya a la línea donde lo encontró, parecido a lo que hace el viejo Notepad. Tengo acá unos ejemplos de un Edit que a medida que vas escribiendo el va filtrando en el ListBox lo que aparece, pero es solamente cuando inicia con las letras que vas introduciendo, diferente por completo de lo que quiero, pues el texto que quiero buscar se puede encontrar en una línea del ListBox, pero en cualquier posición. Desde ya muchas gracias a todos...
__________________
Lester Espinosa Martínez [ Guía de estilo | La otra guía de estilo | Buscador | Trucos | My personal blog ] |
#2
|
||||
|
||||
Hola, creo q esto te puede servir, lo he hecho asi rapido, no lo he probado mucho, pero en mis mini-Tests hace lo q tu quieres:
Lo unico, q he hecho q filtre despues de soltar una tecla en el TEdit, en lugar de un boton, pero vamos, q eso tiene facil solucion! Saludos. Última edición por xEsk fecha: 07-06-2007 a las 16:57:13. |
#3
|
||||
|
||||
Respuesta a xEsk
Socio, muchísimas gracias por responderme y por la rapidez con que me has respondido, pero tu código no parece muy legible..., me lo podrías explicar un poco...???
Desde ya muchas gracias...
__________________
Lester Espinosa Martínez [ Guía de estilo | La otra guía de estilo | Buscador | Trucos | My personal blog ] |
#4
|
||||
|
||||
Por supuesto!
La primera línea de código es la declaración del procedimiento: BuscaPalabra Los tres parámetros que se le pasan son: - Primero: la palabra a buscar dentro de un ListBox - Segundo: el ListBox donde buscaremos esta palabra - Tercero: para definir si sera sensible a mayúsculas y minúsculas, este es un parámetro booleano opcional, con lo de opcional me refiero a q si cuando llamas estre proceso (BuscaPalabra) no "defines" el tercer parámetro este será "False" por defecto. Ahora expliquemos q hace el procedimiento en si: La variable N de tipo entero, servirá para recorrer todos los Items del ListBox. Luego hay una procedimiento "declarado" en las variables (function doCaseSensitive(LaPalabra: String): String;), que su única función es: Si la variable CaseSensitive esta activada, pues transforma LaPalabra pasada por parámetros en minúsculas, en caso contrario deja el texto en su formato original. Después de esto, viene el código q busca la palabra dentro del ListBox. - El primer paso es convertir la Palabra (pasada por parámetros) a minúsculas (si fuera necesario). - El segundo paso es ya el de recorrer el ListBox en busca de la palabra. Para eso usamos el for desde 0 hasta el total de Items del ListBox - 1. En cada paso del for, comprobamos si el Item actual del ListBox contiene la Palabra, para esto usamos la función Pos (System). Que hace el Pos? El pos lo q hace es buscar un String dentro de otro String y nos devuelve la posición del primer carácter, en caso de no encontrar la palabra nos devuelve 0. Así pues, después de comprobar q el resultado devuelto es superior a 0, nos queda el ultimo paso, q es seleccionar el Item q contiene la palabra, para esto: ListBox.ItemIndex:=n; y luego Exit; para "abortar" el proceso y no seguir buscando. El útlimo procedimiento el "TForm1.Edit1KeyUp" lo que hace es llamar el procedimiento BuscaPalabra, si te fijas no le paso el tecer parametro, porqué no quiero que sea CaseSenstive (sensible a mayúsculas y minúsculas), si quisieras que lo fuera, solo añadele el parametro True, asi: BuscaPalabra(Edit1.Text, ListBox1, True); Última edición por xEsk fecha: 07-06-2007 a las 17:47:16. |
#5
|
||||
|
||||
Te paso mi código para ver que tengo mal...
Este es mi código a ver qué es lo que hago mal que no me funciona...
__________________
Lester Espinosa Martínez [ Guía de estilo | La otra guía de estilo | Buscador | Trucos | My personal blog ] |
#6
|
||||
|
||||
He probado el código, y funciona bien. Con lo q me entra una duda, y a lo mejor "funciona" pero no hace lo q tu quieres??
Otras cosas. Por lo que deduzco, "te da igual" el CaseSensitive, así pues te puedes ahorrar la función que transforma el texto a "minúsculas", y usar directamente la función (LowerCase del propio delphi) q transforma a minúsculas. La función quedaría así:
Otra cosa, yo te recominedo, q si este procedure solo lo vas a usar en este Form, lo crearas como parte del TForm, así te ahorras de hacer referencia al "Form1" dentro del procedure Busqueda. El código seria algo así:
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Realizar una conexion FTP mediante Delphi | KeyMan | Varios | 21 | 24-09-2007 15:45:46 |
TpFIBDataSet para realizar busquedas | Hagen | Conexión con bases de datos | 0 | 09-10-2006 18:08:19 |
Búsquedas en Google mediante voz | vtdeleon | Noticias | 5 | 23-04-2006 07:57:41 |
Busquedas con Edit | romansiux | Conexión con bases de datos | 2 | 07-05-2005 18:33:11 |
Ayuda al usuario para realizar búsquedas | rochi | Conexión con bases de datos | 19 | 28-04-2005 09:57:31 |
|