viernes, 21 de junio de 2019

Como Crear Grid Dinámico

Grid Dinámico

He podido observar el problema que se nos presenta el tener que utilizar un grid en Visual Foxpro y uno de ellos es cuando cargamos los datos y se nos des-configuran las columnas dándonos grandes dolores de cabeza. 

El otro es que muchos programadores quieren buscar un producto en particular dentro de una table y que se muestre en el grid.

En este artículo les vamos a mostrar como enmendar estos tipo de inconveniente de una manera muy sencilla.

En cuanto a la des-configuración del grid me tocó investigar bastante para conseguir la solución la cual es bastante sencilla. Una vez que introduzcas en el campo la descripción a buscar deberás colocar estas instrucciones y las columnas de tu grid conservarán tu tamaño original.

thisform.grid1.RecordSource = "" 

thisform.grid1.RecordSourceType =1

Estas instrucciones debes colocarlas en el LostFocus del Text que estés utilizando.

El segundo caso se solucionó de la siguiente manera. Cuando el usuario desee buscar un producto X, tan solamente deberá colocar las primeras iniciales del producto y el sistema les mostrará todos aquellos productos que comiencen por las primeras letras las cuales se introdujo en el Text.

También observarán como al desplazar el Mouse por las imagenes en donde aparecen las flechas el puntero del Grid comenzará a desplazarse según la flecha.

Coloque en el Evento Load:

Set Talk Off
Set Scor Off
Set Talk Off
Set Safety Off
SET DATE FRENCH 
Set Deleted On
Clear
If !File("DEMO.DBF")
Create Table "DEMO.DBF" Free(codigo Int(4) Autoinc,fecha d(8),concepto c(25),cant N(4),precio N(8,2))
Index On codigo Tag codigo Of demo
Insert Into demo(fecha,concepto,cant,precio) Values (Date(),"MATEMATICA I",4,10000)
Insert Into demo(fecha,concepto,cant,precio) Values (Date(),"MATEMATICA II",3,13000)
Insert Into demo(fecha,concepto,cant,precio) Values (Date(),"MATEMATICA III",2,14000)
Insert Into demo(fecha,concepto,cant,precio) Values (Date(),"MATEMATICA IV",5,9000)
Insert Into demo(fecha,concepto,cant,precio) Values (Date(),"MATEMATICA VI",1,19000)
Insert Into demo(fecha,concepto,cant,precio) Values (Date(),"FISICA I",1,19000)
Insert Into demo(fecha,concepto,cant,precio) Values (Date(),"FISICA II",3,19000)
Insert Into demo(fecha,concepto,cant,precio) Values (Date(),"QUIMICA VI",1,19000)
Insert Into demo(fecha,concepto,cant,precio) Values (Date(),"INGLES V",1,19000)
Insert Into demo(fecha,concepto,cant,precio) Values (Date(),"HISTORIA VI",1,19000)
SELECT * FROM demo INTO CURSOR "Vista" ORDER BY codigo
Else
    SELECT * FROM demo INTO CURSOR "Vista" ORDER BY codigo
Go Top

Endif

Note que el campo codigo es de tipo entero y se auto-incrementa cada vez que se introduce un registro nuevo.

En el evento init colocamos lo siguiente :


PUBLIC xbusco,xlen

xlen=1

xbusco=""
thisform.grid1.Column4.Alignment = 3 
thisform.grid1.Column5.Alignment = 1 
select Vista
go top
thisform.grid1.recordsource="Vista"

En el Lostfocus del Text colocamos :

thisform.image3.Click 

En el evento Click de la imagen3 agregamos el siguiente código :

xlen=LEN(ALLTRIM(xbusco))
thisform.grid1.RecordSource = ""
thisform.grid1.RecordSourceType =1
SELECT * FROM demo INTO CURSOR "Vista" WHERE SUBSTR(ALLTRIM(concepto),1,xlen)=SUBSTR(ALLTRIM(XBUSCO),1,xlen)
select Vista
go top
thisform.grid1.recordsource="Vista"
xbusco=""


La variable xlen nos permitirá saber la longitud exacta del texto a buscar. Si la longitud vale 3 entonces el programa buscará aquellas palabras que comiencen por las 3 primeras letras y así sucesivamente irá buscando la palabra indicada.

De igual manera te informo que acá podrás conseguir temas relacionados con el tema de como desplazarse en un grid .






0 comentarios:

Publicar un comentario