Ver Mensaje Individual
  #3  
Antiguo 31-10-2017
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Reputación: 8
nincillo Va por buen camino
Cita:
Empezado por AgustinOrtu Ver Mensaje
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;
Responder Con Cita