grid - desplazar

354 views
Skip to first unread message

Diego Suarez

unread,
Aug 29, 2021, 2:11:25 PM8/29/21
to Comunidad de Visual Foxpro en Español
hola comunidad

pregunta sencilla

como hacer para que un grid a medida que se vayamos agregando datos.
se vaya desplazando hacia arriba, es decir que me vaya haciendo el muestreo pero de manera progresiva

seria algo asi

articulo 1
articulo 2
articulo 3

ingreso un dato 

articulo 2
articulo 3
articulo 4

a que viene esto. pues cuando cargamos mas de los registros que se pueden postrar
por eje con go top se muestran solo los primeros y con go bottom se va al fina y se muestra solo el ultimo.

Oscar Bonet

unread,
Aug 29, 2021, 6:53:11 PM8/29/21
to publice...@googlegroups.com
select Cursor 
go top


Atentamente,
Oscar
   

--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/236154aa-caa4-4035-a4bd-c41f8296f7f3n%40googlegroups.com.

PBX: (+57) 1 4187884    
Móvil: (+57) 3156497484, 3182932952 y 3182954688

INFORMACION IMPORTANTE PARA CLIENTES Y PROVEEDORES - NO SOMOS GRANDES CONTRIBUYENTE:
La Dirección de Impuestos y Aduanas Nacionales – DIAN, informa que con base en el estudio técnico realizado conforme lo dispuesto en el artículo 4º de la Resolución No. 000105 del 23 de noviembre de 2020 “Por la cual se establecen los requisitos, causales y procedimiento para otorgar o retirar la calificación como Gran Contribuyente”, LA COMPAÑIA INTERNACIONAL DE ALIMENTOS AGROPECUARIOS CIALTA S.A.S. NIT 830046757 al no cumplir con los requisitos establecidos no será calificada como Gran Contribuyente para la vigencia 2021-2022.


Ver documento RUT actualizado en el siguiente link:  https://drive.google.com/file/d/1t5_hwLNTyGsRYu8BlS487nssR1uZJWuv/view?usp=sharing

FACTURACION ELECTRONICA:
De conformidad con el decreto 2242 de Noviembre de 2015, nuestra Compañía está implementando la Facturación Electrónica y según comunicado  100202211-410 del 29 de Junio de 2018 emitido por la DIAN, se nos fijó a partir del 1 de diciembre de 2018 para la emisión de la factura electrónica.
En consecuencia, hemos destinado la cuenta de correo electrónico: 
e-fac...@cialta.com      para recepción y emisión de facturas electrónicas.


HABEAS DATA - PROTECCION DE DATOS PERSONALES

Habeas Data: La Compañía Internacional de Alimentos Agropecuarios CIALTA S.A.S. cumple con los requerimientos de la Superintendencia de Industria y Comercio de Colombia sobre el manejo de información de datos personales, lo cual implica tener políticas claras de tratamiento de Base de Datos que usted puede consultar: Politicas Habeas Data 

Si desea tener más información sobre el particular, puede escribirnos al correo habea...@cialta.com 


Diego Suarez

unread,
Aug 29, 2021, 8:20:27 PM8/29/21
to Comunidad de Visual Foxpro en Español
si eso funciona, pero cuando se empieza a llenar el grid, todos los registros se desplazan hacia abajo quedando el enfoque sobre el primero ingresado
GRID.png
Y con go bottom se va al final mostrando solo uno. y tengo que utilizar el scrollbar para ver los anteriores, nesesito se vaya mostrando de manera progresiva , 
por ej AL INGRESAR 2 REGISTROS MAS SE VEA 

TERCERO 
CUARTO 
QUINTO
SEXTO
SEPTIMO

Freddy José García Peña SuperFG

unread,
Aug 29, 2021, 10:29:29 PM8/29/21
to publice...@googlegroups.com
Saludos.

Creo que deberías hacer es GOTO BOTTOM para lograr el efecto que deseas.

Freddy García


Diego Suarez

unread,
Aug 30, 2021, 7:37:18 AM8/30/21
to Comunidad de Visual Foxpro en Español
Se desplazan todos los registros hacia arriba mostrando solo el utimo como se ve en la imagen
no entiendo que esta mal 

with Thisform.container_grid.grid_gastos   
SELECT Cur_almacen_temp 
lnTotalGegistros = RECCOUNT()

.RecordSourcetype = 1
.RecordSource =('Cur_almacen_temp ')
.column1.ControlSource =('Cur_almacen_temp .cant_mer')
.column2.ControlSource =('Cur_almacen_temp .impo_mer')
.column3.ControlSource =('Cur_almacen_temp .deta_mer')
.column4.ControlSource =('Cur_almacen_temp .neto_mer')
.column5.ControlSource =('Cur_almacen_temp .iva_alicuota')
.Refresh
ENDWITH
SELECT Cur_almacen_temp 
GO bottom
GRID BOTTOM.png

Zarlu

unread,
Aug 30, 2021, 10:08:13 AM8/30/21
to Comunidad de Visual Foxpro en Español
Buenos días culturalcatamarca7!

Según yo nada está mal. La ayuda de VFP:
GO | GOTO Command
BOTTOM
Positions the record pointer on the last record in the table. If the table has an ascending index in use, the last record is the record with the highest key value. If the index is in descending order, the last record is the record with the lowest key value.
Y veo el puntero en el último registro.

Ahora bien para lo que deseas se me ocurren varias cosas (sin probar)

- Jugar con las teclas
Go Bottom
KEYBOARD '{PGUP}'
KEYBOARD '{PGDN}'
KEYBOARD '{UPARROW}'
KEYBOARD '{DNPARROW}'

-Contar los registros y posicionarte en el anterior que deseas:
Go Bottom
lnRow=Recount()-3
.grid1.ActivateCell(lnRow,lnCol)

-Ordenar descendente para que los últimos registros te queden a la vista:
5
4
3

Suerte
zarlu
Chetumal, Quintana Roo, México

Diego Suarez

unread,
Aug 30, 2021, 12:46:13 PM8/30/21
to Comunidad de Visual Foxpro en Español
Solucionado con  scrollbars   - consegui un codigo que funciona muy bien espero otro lo aproveche 

SELECT Cur_almacen_temp 
GO top
with Thisform.grid_gastos 
.RecordSourcetype = 1
.RecordSource =('Cur_almacen_temp ')
.column1.ControlSource =('Cur_almacen_temp .cant_mer')
.column2.ControlSource =('Cur_almacen_temp .impo_mer')
.column3.ControlSource =('Cur_almacen_temp .deta_mer')
.column4.ControlSource =('Cur_almacen_temp .neto_mer')
.column5.ControlSource =('Cur_almacen_temp .iva_alicuota')
 
nRows=INT(FLOOR( (.Height - .HeaderHeight - IIF(INLIST(.scrollbars,1,3),17,0))/.rowHeight)/2) &&  aqui esta el truco para que se desplace el scrollbars
 
GO BOTTOM

.Refresh
   
endwith

Hitiel Hernández

unread,
Aug 30, 2021, 3:18:50 PM8/30/21
to publice...@googlegroups.com
DIEGO:
en qué evento y objeto iría ese código? 

--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.


--
Saludos Cordiales!

Zarlu

unread,
Aug 30, 2021, 4:33:27 PM8/30/21
to Comunidad de Visual Foxpro en Español
Qué tal colega culturalcatamarca7 !

Que bueno que ya conseguiste lo que deseabas.

Te comento que en el código los que están haciendo el trabajo son Go Bottom y el Refresh.
nRows sólo obtiene un valor. (Puedes cambiar nRows=10000 y el resultado será el mismo)
Para mover los ScrollBars sería así:
*0 Scroll up
*1 Scroll down
*2 Scroll page up
*3 Scroll page down
*4 Scroll left
*5 Scroll right
*6 Scroll page left
*7 Scroll page right
Thisform.grid1.DoScroll(0)

Qué es semejante a la simulación de teclas, o sea estás desplazando el cursor.
Pero bueno con el Go Bottom y el Refresh fue suficiente.

zarlu
Chetumal, Quintana Roo, México

Diego Suarez

unread,
Aug 30, 2021, 9:05:09 PM8/30/21
to Comunidad de Visual Foxpro en Español
Como bien indica zarlu usando DoScroll automatiza la barra. y se pueden ver los registros que se van agregando. con la ayuda claro del Go Bottom

SELECT Cur_almacen_temp 
GO top
with Thisform.grid_gastos 
.RecordSourcetype = 1
.RecordSource =('Cur_almacen_temp ')
.column1.ControlSource =('Cur_almacen_temp .cant_mer')
.column2.ControlSource =('Cur_almacen_temp .impo_mer')
.column3.ControlSource =('Cur_almacen_temp .deta_mer')
.column4.ControlSource =('Cur_almacen_temp .neto_mer')
.column5.ControlSource =('Cur_almacen_temp .iva_alicuota')  
 
.DoScroll(0)
                GO BOTTOM
 .Refresh
   
endwith

Diego Suarez

unread,
Aug 30, 2021, 9:08:05 PM8/30/21
to Comunidad de Visual Foxpro en Español
se ejecuta con el metodo creado  mcontrol_refrescar() que lo invoco  para refrescar el grid, (en realidad refresca varios controles) cada ves que agrego un registro a mi cursor

HernanCano

unread,
Aug 30, 2021, 11:20:40 PM8/30/21
to Comunidad de Visual Foxpro en Español
Alguien pudiera explicarme.. ¿por qué estos comandos son la solución al problema presentado? (¿y cuál es el problema?)

Diego Suarez

unread,
Aug 31, 2021, 10:00:32 AM8/31/21
to Comunidad de Visual Foxpro en Español
El problema:
An insertar registros en cursor conectado a un grid. Una vez completada las filas del grid, este se desplaza hacia arriba dejando solo un registro a la vista, teniendo que utilizar el ScrollBar vertical una y otra vez, para mostrar los registros ingresados anteriormente.
La solucion como bien planteó el colega ZArlu es automatizar la barra vertical mediante el uso  DoScroll(0) 

Saludos

HernanCano

unread,
Aug 31, 2021, 1:54:53 PM8/31/21
to Comunidad de Visual Foxpro en Español
Sí, amigo, gracias.

La solución con .DoScroll(###) la noto acertada.
Pero la que ví con 
nRows=INT(FLOOR( (.Height - .HeaderHeight - IIF(INLIST(.Scrollbars,1,3),17,0))/.rowHeight)/2) &&  aqui esta el truco para que se desplace el scrollbars

es lo que no me cuadraba.

Verificaré los de .DoScroll() pues tengo un escenario similar.

Gracias. por compartir.

HernanCano

unread,
Sep 1, 2021, 11:41:26 AM9/1/21
to Comunidad de Visual Foxpro en Español
Amigo cultural:
Ya encontré tu fuente de donde sacaste el código que mostraste ("originalmente"), pero lo pusiste incompleto (mirar imagen):

Pero si así te funcionó..., gracias por compartir.

borrable.png


El lunes, 30 de agosto de 2021 a la(s) 11:46:13 UTC-5, culturalc... escribió:
Reply all
Reply to author
Forward
0 new messages