Listview Efecto parpadeo

229 views
Skip to first unread message

Arnaldo Toledano (GMail)

unread,
Jan 30, 2011, 2:37:59 PM1/30/11
to publice...@googlegroups.com
Estimados.
 
Estoy "tratando" de hacer una clase con Listview con busqueda incremental.
Funciona todo OK, hasta que el cursor que contiene los datos a buscar es muy grande.
Cuando el CURSOR tiene por ejemplo mas de 8000 items, al momento de mostrarlos me
produce un efecto "parpadeo", que ademas de ser muy molesto, me devuelve el control al cabo de
varios segundos, cosa que tambien es molesta.
 
Al alguien le ha pasado y le ha encontrado una solucion ?
Agradeceré informacion.
 
Para ser un poco mas explicito.
Si la busqueda, la realizo a partir de un campo VACIO, debo mostrar TODOS los elementos de
 cursor.
En mi caso particular son 8643 Registros.
Cuando realizo la muestra de estos registros  a travez de
Select Cursor
SCAN
         oitem= thisform.lv.ListItems.Add(nIndex,,"",1,1)
         oItem.Subitems(1)=ArtNombre
        oItem.Subitems(2)=ArtCodigo
         oItem.SubItems(3)=STR(ArtCanAct,10,2)
         oItem.SubItems(4)=STR(ArtPrePub,10,2)
         oItem.SubItems(5)=STR(ArtPreLis,10,2)
         oItem.SubItems(6)=STR(ArtPreOfe,10,2)
         oItem.SubItems(7)=STR(ArtPreDis,10,2)
         oItem.SmallIcon = 10                               ** Muestro un ICONO, para hacerlo mas atractivo.
          nIndex = nIndex + 1
ENDSCAN 
 
En este SCAN, es donde tarda mucho tiempo en mostrar, ademas de producir un PARPADEO bastante molesto.
 
Otra aclaracion.
NO ES CONVENIENTE mostrar por ejemplo 300 Items, y "cortar" el SCAN, puesto que con ello, al hacer Avance de Pagina, al llegar al ITEM 301, no mostraria mas, cuando en realidad tendria que mostrar mucho mas items.
Gracias de antemano.
 
 
Arnaldo Toledano
Córdoba
Argentina


__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 5831 (20110130) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com

Luis Maria Guayan

unread,
Jan 30, 2011, 3:16:13 PM1/30/11
to publice...@googlegroups.com
Armando, personalmente me parece excesivo mostrar 8000 registros en un control List (o controles parecidos como un ComboBox)

Podrias utilizar un control Grid con una sola columna (simulando un Lista) y filtrar previamente con un TextBox.


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

ZeRoberto

unread,
Jan 30, 2011, 4:31:37 PM1/30/11
to publice...@googlegroups.com
8000?
 
 
 =O

Walter R. Ojeda Valiente

unread,
Jan 30, 2011, 5:50:14 PM1/30/11
to publice...@googlegroups.com
Arnaldo, los LISTBOX y los COMBOBOX están diseñados para mostrar pocos ítems, lo generalmente aceptado es que sean 12 o menos. Si necesitas más que esos entonces deberías usar un control GRID.

Aún así, mostrar 8.000 registros en un grid es excesivo, lo correcto es mostrar una cantidad mucho menor, digamos 50, y luego si el usuario necesita más, se le muestran los siguientes 50 y así sucesivamente.

Saludos.

Walter.




Date: Sun, 30 Jan 2011 16:31:37 -0500
Subject: Re: [vfp] Listview Efecto parpadeo
From: zero...@gmail.com
To: publice...@googlegroups.com

Arnaldo Toledano (GMail)

unread,
Jan 30, 2011, 6:48:15 PM1/30/11
to publice...@googlegroups.com
Luis Maria
 
La situacion es la siguiente.
Al momento de facturar, ingresas
Codigo                Descripcion
1.- Vamos a analizar unicamente a travez del CODIGO, para descripcion es exactamente igual.
1.1.- EL codigo tiene siete caracteres.
1.2.- El usuario ingresa  "0019"
1.3.- Con el Select campo1, campo2,...,campo6 From StpArticu Where ArtCodigo Like "%"+Trim(Codigo)+"%"
Me trae todos los articulos que en algun lugar tenga el "0019" que de un iniverso de 8300 solo 41 Item cunple con el criterio.
1.4.- Si la busqueda es incremental e ingresamos un "8", me queda
    .... Like "%00198%" y el universo pasa a 4 Item
 
2.- Pero... aca viene el problema
Si el usuario decide eliminar caracteres  (digamos busqueda DECREMENTAL)
Es decir ingresa Backspace despues de ingresar "0019" pasamos a
2.1.-....Like "%001%"  pasamos a 493 Item
2.2. otrra vez Backspace
     .... Like "%00%"  pasamos a 3225 Item.
 
Es decir ME QUEDARIA anular el Backspace y NO PERMITIR la busqueda DECREMENTAL, pero tengo que darle al usuario la posibilidad de "equivocarse" y corregir el error con esta "tecla" y no "obligarlo" a dar escape y empezar de nuevo.
 
 
De alli mi situacion de Busqueda de "muchos" items.
Tendre que "probar" anulando el Backspace y ver como es la "repuesta" de los usuarios.
 
Gracias a todos
 
 
Arnaldo Toledano
 
 
P/D  Mi nombre es ARNALDO  no Armando.
 
Un abrazo.
 
 
----- Original Message -----
Sent: Sunday, January 30, 2011 5:16 PM
Subject: Re: [vfp] Listview Efecto parpadeo

__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 5832 (20110130) __________

Arnaldo Toledano (GMail)

unread,
Jan 30, 2011, 6:50:39 PM1/30/11
to publice...@googlegroups.com
Otra cosa.
Es un LISTVIEW no es NI listbox ni tampoco combox.
 
Si en esos casos, nunca pongo muchos items.
 
Arnaldo
----- Original Message -----
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 5832 (20110130) __________

Javier (Gmail)

unread,
Jan 30, 2011, 7:14:29 PM1/30/11
to publice...@googlegroups.com
Hola Arnaldo
    Si cargás un cursor en el load con todos los items, no evitarías ese parpadeo ya que buscarías los datos en ese cursor que ya está cargado en memoria?
    A esta búsqueda la tengo desarrollada en un form, donde cargo el dato a buscar en un TextBox a medida que se van cargando los caracteres, me va mostrando en un List los datos encontrados.
    Lo probé con el padrón de la AFIP mas de 3millones de registros, y demoraba bastante el refresco, en este caso ingreso el dato a buscar y luego realizo el refresco, demora menos de 5 segundos, los datos estan en una tabla de MySQL
 
Saludos
Javier Solier

Luis Maria Guayan

unread,
Jan 30, 2011, 7:25:17 PM1/30/11
to publice...@googlegroups.com
jajaja no es la primera vez que te digo Armando :-P

Yo te aconsejaría que quites la búsqueda incremental, que obligues al usuario a ingresar texto y tener un botón de búsquedas.

La búsqueda incremental yo la dejaría para tablas que no superen el centenar de registros.

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________


Mauricio Molinero,

unread,
Feb 1, 2011, 8:09:08 AM2/1/11
to Comunidad de Visual Foxpro en Español
Hola Arnaldo,

Una buena opcion es exigir un minimo de 2 o tres caracteres para
buscar, o sea que la busqueda la inicias recien cuando el usuario
tipea el tercer caracter y cuando va a la inversa borrando la dejas en
blanco si son menos de 3.

En este tipo de consulta nunca deberia devolverte tantos registros y
sino como dice Luis Maria directamente deshabilitar la busqueda
incremental y agregar un BUSCAR pero la primer opcion me parece buena,
je..

Saludos!

Mauricio R. Molinero,
Reply all
Reply to author
Forward
0 new messages