miércoles, 19 de junio de 2019

Grid avanzado en Visual Foxpro

Grid Avanzado

Una ´técnica que llama mucha la atención es poder mostrarle al usuario las distintas formas que hay mostrar mostrar la información en pantalla con tan solamente pulsar un tilde.

En este caso podemos observar como cuando pulsamos el Check cuando las cantidades son iguales a 1 el sistema es capaz de mostrarnos la información en un color distinto al valor de los demás datos el cual aparecen registrados, tal como aparecen en la figura de abajo.

Con el simple hecho de haber presionado una tecla le dimos otra apariencia a la información mostrada sin tener que alterar nada en el programa.


Este ejemplo nos demuestra como podemos intercalar distintas formas de mostrar una información sin que cambiemos nada.


Observen como con tan solo tocar 2 teclas hemos podido cambiar la apariencia de la pantalla y nos permite visualizar la información que deseamos con mayor rapidez.

Examinemos el siguiente código en el evento Load de tu formulario.

Paso 1.

SET SAFETY OFF
SET TALK OFF ff
SET scor off
clear
CREATE TABLE prueba FREE (codigo c(4),concepto c(25),cant n(4),precio n(8,2))
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0001","Cemento Gris",10,5000)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0002","Cemento Blanco",6,5500)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0003","Arena",2,3000)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0004","Martillo",1,2000)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0005","Alicate 3 ",1,1000)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0006","Pintura Blanca",1,5000)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0007","Pintura Fondo Gris",1,4000)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0008","Brocha Grande",2,5000)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0009","Pala",1,5000)
INSERT INTO prueba(codigo,concepto,cant,precio) VALUES ("0010","Cal",3,1400)

Paso 2.

Coloca en el formulario en el Evento Init lo siguiente:

thisform.grid1.Column3.Alignment = 2 
thisform.grid1.Column4.Alignment = 1 
thisform.grid1.RecordSource =""
thisform.grid1.RecordSourceType = 1 
SELECT prueba
GO top

thisform.grid1.RecordSource =prueba.codigo

Paso 3.

El check1 en el evento click .

IF this.Value = 1
    thisform.check2.Value=0
    thisform.check3.Value=0
thisform.grid1.SetAll('DynamicBackColor', "IIF(cant = 1, RGB(92,192,192), RGB(255,255,255))", "COLUMN")
ELSE
thisform.grid1.SetAll('DynamicBackColor', "", "COLUMN")
ENDIF

thisform.grid1.Refresh

Como pueden observar en este procedimiento comparamos la variable cant y verificamos si es igual a 1 para que nos muestra la información en un color distinto y que cumplan esta condición. 

Claro está que tú puedes modificar el programa y realizar otras comparaciones el cual vayan con tu información que manejes.

Paso 4.

El check2 en el evento click .

IF this.Value = 1
    thisform.check1.Value=0
    thisform.check3.Value=0
thisform.grid1.SetAll('DynamicBackColor', "IIF(cant > 1 and cant <5, RGB(192,192,192), RGB(255,255,255))", "COLUMN")
ELSE
thisform.grid1.SetAll('DynamicBackColor', "", "COLUMN")
ENDIF

thisform.grid1.Refresh

Al igual que el anterior la variable cant compara si es mayor que que 1 pero menor que 5
y nos muestra los resultados que cumplan con esa condición pero de una forma distinta.

Paso 5.

El check3 en el evento click .

Tan solamente activamos el reloj y ejecutamos el siguiente código:

With Thisform.grid1
If Empty(.Columns(1).DynamicBackColor)
Thisform.check1.Value=0
Thisform.check2.Value=0
.SetAll('DynamicBackColor', "IIF(cant > 5, RGB(255,255,128), RGB(255,255,255))", "COLUMN")
Else
.SetAll('DynamicBackColor', "", "COLUMN")
Endif
.Refresh()

Endwith

Comparamos que la variable Cant resulte mayor a 5 y este proceso hará que todos aquellos registros que cumplan esta condición empezarán a titilar.

Si quieres ampliar tu información te invito a que visites VFPAvanzado en donde encontrarás mas detalles referente al tema.



0 comentarios:

Publicar un comentario