Sunteți pe pagina 1din 3

Curiosidades del Control Lista

Posted By admin On Febrero 19, 2008 @ 1:57 pm In FoxPro Controles | No Comments

(No Ratings Yet)

Hace tiempo realice una aplicacion personal que llame RoboLinks. Basicamente esta pequeña aquí lo
que hace es descargar todos los archivos de aquí de una pagina web (foro) para no tener que estarlas
bajando de 1×1. Generalmente en algunos foros se ponen cierta cantidad de aquí, para no tener que estar
viendolas de 1 en 1 hice este programa que funciona bastante bien con Imagevenue. Pero bueno, eso es
otra historia. El caso es que haciendo dicho programa me encontre con algunas cosas que queria hacer
con una caja de lista:

a) Que me pusiera que archivos se iba a procesar


2. Que archivos se estaban procesando. Ya sea con un color diferente o mediante algun icono que
lo indicara.
3. Y si tenia muchos archivos a procesar que sobrepasaran la vista de la caja de texto, se fuera
“desplazando” hacia arriba como los creditos de una pelicula (y como otros controles que he
visto).

De tal forma que si tengo digamos 50 archivos a procesar… cuando llegara al numero 10 que esta
visible en la caja de lista, el numero 11 aparece y el numero 1 de la parte superior desaparece.

La imagen superior corresponde a otra aquí (de trabajo con unos archivos de excel) que tome
precisamente del primer programa RoboLinks.
Aquí vemos que la caja de lista permite:

a) “reacomodar” los archivos a gusto del usuar para saber cual va primero y cual despues.
b) Mostrar mediante un icono que archivo ya se proceso y cual se esta procesando.
c) Aunque no esta visible, cambiar el color de los archivos ya procesados.
d) Si los archivos son muchos y sobrepasan la caja de lista y aparece la barra de scroll, que estos se
vayan
moviendo hacia arriba de manera automatica conforme se vayan procesando.

¿COMO SE HACE?

Bien, en primer lugar, dibujamos una caja de lista y asignamos las siguientes propiedades a ella (todo en
Layout):

DisabledItemForeColor = 0,0,0 (Negro, pero puede ser cualquier color)


ItemForeColor = 255,0,0 (Rojo, pero puede ser cualquier color)
ItemTips = .T.
MoverBars = .T.
ToolTipText = ‘El de tu eleccion…’

Tambien le puedes dar un nombre a tu control de lista, que en este caso se llamara LIST1. Ahora, el
resto no se hace en el control sino en algun otro que haga el proceso; generalmente un boton de
comando para procesar. Asi, en el metodo CLICK de dicho boton este sera el codigo:

… aqui va codigo anterior


nFiles = thisform.list1.ListCount

* El siguiente codigo sirve para calcular el tamano de la caja de


lista
* saber que tipo letra se usa dentro del control y sobre esto hacemos
un
* calculo para saber CUANTAS LINEAS (o elementos) podra contener la
caja
lcAlto = thisform.list1.Height
lcCurrentFont = WFONT(1)
lcSizeFont = WFONT(2)
lcPixels = FONTMETRIC( 1, lcCurrentFont,lcSizeFont,’N’ )
numLineas = (lcAlto / lcPixels)-3

* Asigmanos a variables diferentes iconos para el proceso. Uno para indicar que se
* proceso correctamente, otro icono para cuando no se proceso correcto y el tercero
* para el que se esta procesando actualmente. Se recomienda usar bmp porque son mas
* pequenos
icon1 = “_save.bmp”
icon2 = “_cancel.bmp”
icon3 = “rtscroll.bmp”

FOR i = 1 TO nFiles
* Agregar un icono para mostrar el proceso
thisform.list1.Picture(i) = icon3
* Agregar codigo para que vaya desplazando la caja de lista hacia arriba segun los
links procesados

IF i=> numLineas
nIndex2 = i-numLineas
thisform.list1.TopIndex = nIndex2
ENDIF

A continuacion sigue el codigo que necesitamos para este proceso. Y para finalizar
antes de terminar el ciclo que iniciamos… ponemos:

* Mostrar que se proceso el archivo y continuar con el siguiente


*thisform.list1.ListItem(i) = ‘\’+ lcFile
thisform.list1.Picture(i) = icon1
* Contar cuantas llevamos
thisform.txtCount.Value = i
NEXT

Y listo, cada que se va procesando una linea de la caja vamos cambiando el icono
cuando se proceso de manera correcta, dentro del ciclo si no se cumple la
condicion, debemos cambiar el icono para indicar que dicha linea de la caja no esta
correcto.

El efecto final es en realidad bastante bueno, ya que vemos como con


muchas lineas, la caja se va desplazando sola hacia arriba conforme
se va procesando cada elemento.

Article printed from IDSFoxPro Blog: http://foxpro.idsystemsmx.com/wordpress

URL to article: http://foxpro.idsystemsmx.com/wordpress/?p=11

URLs in this post:


[1] Image: http://foxpro.idsystemsmx.com/wordpress/?p=11&print=1

S-ar putea să vă placă și