Cita:
Empezado por AgustinOrtu
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?
|
Al final creo que ya he encontrado el origen del problema y la solución.
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;