Visual Foxprogram

Encuentra una gran variedad de ejemplos prácticos que pueden ser útiles para el desarrollo de tu trabajo.

Visual Foxprogram

Podrás encontrar la herramienta necesaria para solucionar tu problema.

Visual Foxprogram

No olvides suscribirte a la página.

Visual Foxprogram

Podrás en contrar ejemplos de clases, creaciones de Menu estilo CSS,crear reportes PDF.

Visual Foxprogram

Todas las Herramientas en un solo sitio VISUAL FOXPROGRAM.

Mostrando entradas con la etiqueta Grid en Visual Foxpro. Mostrar todas las entradas
Mostrando entradas con la etiqueta Grid en Visual Foxpro. Mostrar todas las entradas

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.



martes, 11 de junio de 2019

Grid en visual foxpro

Grid en visual foxpro

Me enfoqué en realizar este programa para aquellas personas que se están iniciando en el mundo de Visual Foxpro y muy especialmente para una persona que en el forum indicaba de estaba aprendiendo este lenguaje y quería un programa que le enseñe como llenar un Grid.


Este programa es bastante básico  pero puedes agregar,eliminar,modificar,grabar,buscar ,funciones básicas para realizar un programa.También te enseña como crear una tabla libre.

Hubo mucha redundancia en ciertos procedimientos los cuales se debieron hacer en métodos pero no quise ahondar en el tema por considerar que es para aquellas personas que se inician en este mundo.

Pasos aseguir :

Paso 1: En el Evento Load del Formulario creamos la tabla "Prueba".

IF !FILE("PRUEBA.DBF")
    CREATE TABLE prueba (cod_pro c(10),concepto c(25),precio n(8,2))
ENDIF

El programa comprueba si existe la tabla, si no existe el programa crea la tabla.

Paso 2 : En el Evento Init de tu formulario creamos lo siguiente :

SET TALK OFF
SET scor off
SET SAFETY OFF
PUBLIC sw as Number,xreg as Number  
CLEAR
thisform.Caption ="Como llenar un Grid"
thisform.text1.Enabled =.f.
thisform.text2.Enabled =.f.
thisform.text3.Enabled =.f.
thisform.text1.DisabledBackColor =RGB(255,255,255)
thisform.text1.DisabledForeColor =RGB(0,0,0)
thisform.text1.Value=""
thisform.text2.Value=""
thisform.text3.Value =0.00
xreg=0
thisform.grid1.COLUMN3.Alignment = 1 && Alinea la derecha
thisform.grid1.Enabled =.f.
thisform.container2.Visible =.f.
thisform.container2.Enabled =.F.

Paso 3:

En el evento Keypress colocamos lo siguiente :

If nKeyCode=27
sw=0
Thisform.text1.Enabled =.F.
Thisform.text2.Enabled =.F.
Thisform.text3.Enabled =.F.
Thisform.text1.DisabledBackColor =Rgb(255,255,255)
Thisform.text1.DisabledForeColor =Rgb(0,0,0)
Thisform.text1.Value=""
Thisform.text2.Value=""
Thisform.text3.Value =0.00
thisform.container2.Enabled =.F.
thisform.container2.Visible =.f.
thisform.container1.command1.SetFocus 
Endif

Paso 4:

En el command1 en el evento click colocamos el siguiente procedimiento :

thisform.text1.Enabled =.t.
thisform.text2.Enabled =.t.
thisform.text3.Enabled =.t.
thisform.text1.Value=""
thisform.text2.Value=""
thisform.text3.Value =0.00
sw=1
thisform.text1.SetFocus 

En el Command2 en el evento click se agrega lo siguiente :

If xreg>0
mensaje = ' Confirmar La Eliminacion '
i=Messagebox(mensaje,4,' Alerta ')
If i=7
Return
Else
Delete
Messagebox("Registro Borrado con Exito...!")
Thisform.grid1.RecordSource="prueba"
Thisform.text1.Enabled =.F.
Thisform.text2.Enabled =.F.
Thisform.text3.Enabled =.F.
Thisform.text1.DisabledBackColor =Rgb(255,255,255)
Thisform.text1.DisabledForeColor =Rgb(0,0,0)
Thisform.text1.Value=""
Thisform.text2.Value=""
Thisform.text3.Value =0.00
sw=0
xreg=0
Thisform.container1.command1.SetFocus
Endif
ELSE
    MESSAGEBOX("No Datos para Eliminar")
Endif

En el Command3 se agrega lo siguiente :

If !Empty(Thisform.text1.Value) And !Empty(Thisform.text2.Value) And !Empty(Thisform.text3.Value)
Thisform.text1.Enabled =.T.
Thisform.text2.Enabled =.T.
Thisform.text3.Enabled =.T.
sw=2
Thisform.text1.SetFocus
Endif

En el command4 en el evento click

cod=Thisform.text1.Value
des=Thisform.text2.Value
pre=Thisform.text3.Value
If !Empty(cod) And !Empty(des) And !Empty(pre)
If sw=1
Insert Into prueba (cod_pro,concepto,precio) Values (cod,des,pre)
ENDIF
If sw=2
UPDATE prueba set cod_pro=cod,concepto=des,precio=pre WHERE RECNO()=xreg
ENDIF
Select prueba
Go Top
Thisform.grid1.RecordSource="prueba"
Thisform.text1.Enabled =.F.
Thisform.text2.Enabled =.F.
Thisform.text3.Enabled =.F.
Thisform.text1.DisabledBackColor =Rgb(255,255,255)
Thisform.text1.DisabledForeColor =Rgb(0,0,0)
Thisform.text1.Value=""
Thisform.text2.Value=""
Thisform.text3.Value =0.00
sw=0
xreg=0
Thisform.container1.command1.SetFocus
ELSE
    mensa="Error:Recuerde rellenar todos los campos..."
    MESSAGEBOX(mensa,0+64,"Alerta")
    thisform.text1.SetFocus 
Endif

En el command5 se agrega el siguiente paso:

thisform.container2.Visible =.t.
THISFORM.container2.Enabled =.t.
thisform.container2.list1.Requery 
thisform.container2.list1.SelectedID(1)=.t.
thisform.container2.list1.SetFocus