FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Misterio con un listview al utilizar su propio search
Buenos días. Tengo un misterio que no consigo resolver.
Tengo un listview en el que cargo el contenido de un TFDMemTable mediante un bucle while not eof. Al finalizar el bucle muestro tanto el recordcount como el items.count y me dan el mismo número. Hasta ahí todo normal. Tengo un botón para refrescar el listview haciendo cada vez un close y un open de la tabla. Da igual las veces que le de al botón refrescar, que cuando escribo por primera vez en el recuadro del search del propio listview me encuentra todos los registros que cumplen la condición. El problema se presenta tras escribir en el search. A partir de ese momento, si vuelvo a dar al botón de refrescar, el listview ya no me muestra todos los registros que debiera. Si embargo, el recordcount y el items.count siguen marcando lo mismo que al principio. O sea, es como si parte de los registros no estuvieran visibles. |
#2
|
||||
|
||||
Hola nincillo, no termine de entender el problema. Creo que tu escenario es este:
1. Traes todos los datos, ej count = 100 2. Escribes en el search 3. Ejecutas el refrescar, ahora count = 10 4. Limpias el search y das a refrescar, count = 10 y deberia ser 100 Podrias poner el codigo? |
#3
|
|||
|
|||
Cita:
Basícamente el problema parece ser que en cuanto se escribe en el filtro, algo se queda "memorizado" en el interior, que aunque se borre manualmente el filtro, se borren los items, al volver a cargar la lista, parece que el filtro previo anda por ahí "dentro" haciendo de las suyas. Parace que funcione correctamente el cada vez que se vaya rellenar la listview, previamente insertar los registros hay que hacer lo siguiente: Código:
(* Fundamental para que haga el refresco del listview completo y no se queden registros ocultos *) dm.qryAlmacen.Active := false; (* Con esto buscamos el componente donde escribimos el filtro para vaciarlo *) for I := 0 to ListView2.Controls.Count-1 do if ListView2.Controls[i].ClassType = TSearchBox then begin TSearchBox(ListView2.Controls[i]).Text := ''; Break; end; (* Con esto inicializo el filtro y es con lo que relamente soluciono el problema *) ListView2.Items.Filter := nil; (* Vuelvo a cargar los registros en el listview *) dm.qryAlmacen.Active := true; |
#4
|
||||
|
||||
Crei que hablabamos del ListView de la Vcl. El de firemonkey he visto por ahi algunas variables con nombres estilo "filtered items", por lo que si es posible que sea algo de lo que comentas
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
search cloud in delphi | JXJ | Varios | 2 | 07-06-2010 10:37:35 |
Google Code Search | NeoNew | Noticias | 1 | 03-04-2009 20:01:08 |
Abrir archivo propio desde Windows....en programa propio | darkphantom | Varios | 12 | 22-02-2007 04:46:49 |
Auto Search fields en report buider | ishtar | Impresión | 0 | 18-10-2006 18:40:50 |
Live Search, motor de búsqueda de Microsoft. | marcoszorrilla | Noticias | 3 | 14-09-2006 16:25:38 |
|