Saber cual es la fila que esta posicionada una grid y el valor de una columna en una grid

2,296 views
Skip to first unread message

HHERRERA

unread,
Oct 27, 2014, 11:04:16 AM10/27/14
to publice...@googlegroups.com
Primeramente buen inicio de labores para todos y a la vez molestandolos con un par de dudas tan basicas pero que a mi me estan quebrando la cabeza!

Tengo un form que tiene dos grid y una depende del valor de la primera, por lo que necesito saber cual es la propiedad que me indique la fila en donde esta posicionado la grid que tiene el foco y la que no.
y mi segunda pregunta es: como "extraigo" el valor de una columna de la grid,  por ejemplo necesito saber el valor de la columna 3, fila 4.




Fidel Charny

unread,
Oct 27, 2014, 11:23:30 AM10/27/14
to publice...@googlegroups.com
No entiendo bien la consulta ya que no explicas qué es lo que necesitas hacer.
Del control grid que tiene el foco puedes saber la fila y columna con ActiveRow, activecolumn, RelativeRow, RelativeColumn, depende de para qué necesites estos valores. De el control grid que no tiene el foco, no tendrás estos valores.
Los valores que quieras extraer, los tienes que extraer del cursor asociado al control grid, no del control grid. O sea, tienes un campo asociado a la columna 3 y la fila 4 corresponde a un registro del cursor asociado (que sería el cuarto si no está indexado).
Puedes determinar el valor correspondiente a una columna para un registro determinado con:
lcndValor=Evaluate(thisform.grid2.Columns(3).ControlSource)
El registro depende de dónde esté el puntero del cursor asociado (en qué registro). 

HernanCano

unread,
Oct 27, 2014, 11:27:07 AM10/27/14
to publice...@googlegroups.com
Hola, herrera.

La respuesta de Fidel es correcta, pero de todas formas tu planteamiento luce incoherente.

HHERRERA

unread,
Oct 27, 2014, 11:42:44 AM10/27/14
to publice...@googlegroups.com
Perdon por la confusion no crei que fuese tan necesaria, pero con tantas opciones ya veo porque preguntais dirían los españoles.

Estoy haciendo un programa de conta y tengo una tabla con las empresas y otra tabla para los periodos fiscales anuales. 
Tengo un formulario de lista  que en la primera grid me muestra la Empresa y segun se mueva por medio de una consulta va mostrando los periodos en la segunda grid  que sean de la empresa XXX esta tabla llamada Periodo. 
Luego de seleccionar la empresa y el periodo presiona el boton de OK para continuar.

El punto es que necesito que la persona seleccione la empresa y el periodo, porque si no hace eso el periodo que selecciona es el que corresponde a la primer registro de la tabla periodo.
Basicamente ese el problema, no se si me entendieron o necesitan mas informacion.

Jairo Miranda

unread,
Oct 27, 2014, 1:15:37 PM10/27/14
to publice...@googlegroups.com

EN el evento Keypress del Text1 de la columna X

 

 

 

#DEFINE KEY_ENTER       13

#DEFINE KEY_TAB         9

LOCAL lnRow

 

*-- Check if the key pressed was ENTER or TAB and if so, go to the next row

IF (nShiftAltCtrl = 0) and INLIST(nKeyCode, KEY_TAB, KEY_ENTER)

      WITH this.Parent.Parent

            *-- Store the current row and change the position of the cursor

            lnRow = .RelativeRow

            lnRecNo = RECNO()

            .ActivateCell(lnRow + 1, 1)

            *-- Check if the row has been changed and if not set the focus to the add button

            IF lnRecNo = RECNO()

                  thisform.Command1.SetFocus()

            ENDIF

      ENDWITH

 

ENDIF

 

JM

HHERRERA

unread,
Oct 27, 2014, 2:55:02 PM10/27/14
to publice...@googlegroups.com, sandrae...@gmail.com
Gracias asi lo hare en la noche!!!
========================

Antonio Meza

unread,
Oct 27, 2014, 3:32:02 PM10/27/14
to publice...@googlegroups.com, sandrae...@gmail.com
Hola HHerrera!!

Coincido con Fidel, olvídate de la posiciones del Grid y enfocate a la posición del registro en tus tablas, a final de cuentas donde este el Grid seleccionado estará posicionado el registro de tu tabla, sin importar que columna o que linea es del grid, ya que te debe interesar el registro actual de tus tablas y no la posición del grid, dicho de otra forma el grid mueve el puntero del registro de tu tabla, entonces obtén la información del registro actual.

Agrega un botón donde muestres algo así
wait windows mitabla1.micampo
wait windows mitabla2.micampo

Luego cámbiate de fila y columna de tus 2 grid y luego das click al botón que agregaste y veras que se cambia de registro y ya tienes forma de saber que valor enviar para lo que necesitas.

saludos
Antonio Meza

Fidel Charny

unread,
Oct 27, 2014, 4:48:00 PM10/27/14
to publice...@googlegroups.com
Ahí es hora de preguntarse si usar un grid para seleccionar un período fiscal anual es lo más apropiado para el caso. Lo primero sería no mostrar aquellos períodos que estén bloqueados por cualquier motivo. Lo segundo: proceso de validación. Se puede seleccionar este período?, Mire que es viejo. Desea continuar?. 
Si los períodos fiscales son anuales (año calendario), tal vez mejor sería un control Spinner, donde puedes programar el rango y poner un valor por default (preseleccionado). 
O tal vez el tema sea más complicado y te ahorras algunos comentarios. 

HHERRERA

unread,
Oct 28, 2014, 6:26:22 PM10/28/14
to publice...@googlegroups.com
Gracias me han dado mucha informacion que creo que uniendo todo me han hecho replantear mi rutina y hacerla mas sencilla para mi y para el usuario.
Gracias nuevamente.

Jairo Miranda

unread,
Oct 29, 2014, 10:41:16 AM10/29/14
to publice...@googlegroups.com

Una vez que la tengas lista pásala para que otros se beneficien..

 

JM

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de HHERRERA


Enviado el: martes, 28 de octubre de 2014 5:26
Para: publice...@googlegroups.com

Reply all
Reply to author
Forward
0 new messages