!!Teniendo problemas para enfocar una celda de un grid!!

24/07/2006 - 20:58 por Francisco Javier Martínez Nz | Informe spam
Hola, buenas tardes, disculpen tengo un problema precisamente con un grid,
no se si me puedan ayudar, mi problema es que no puedo establecer un
setfocus a una celda específica de un grid desde cualquier otro objeto en la
pantalla.

Al perder el foco de un contenedor donde tengo el grid hago lo siguiente:

if avales.porcentaje <> 100
This.cntBeneficiarios.gridbeneficiarios.column4.text1.SetFocus
endif

Pero por mas que le hago de un objeto u otro, lo unico que pasa es mandarme
el foco al siguiente objeto en la secuencia, que para tal efecto es un
cuadro de texto.

Espero me haya podido explicar claramente, de antemano gracias por su
atención.

Atte. Francisco Javier Martínez Nz

Preguntas similare

Leer las respuestas

#1 Dario David Puccio
25/07/2006 - 03:05 | Informe spam
Francisco no me queda claro esto

Al perder el foco de un contenedor donde tengo el grid hago lo siguiente:



el foco lo pierdes como?

este codigo donde se encuentra?, es un valid ?, de cual objeto?

if avales.porcentaje <> 100
This.cntBeneficiarios.gridbeneficiarios.column4.text1.SetFocus
endif



No faltaria thisform.cntBenefi ya que haces mencion al mismo contenedor
y si el foco ya no esta donde se cumple esta instruccion?

Y el estado del grid enable en .t. ?

Dario
Respuesta Responder a este mensaje
#2 Salvador Casas
25/07/2006 - 20:23 | Informe spam
Gracias Darío, por atender mi caso, mira yo tengo una pantalla con varios
objetos, me interesa específicamente el comportamiento de la secuencia entre
3 de ellos, el objeto No. en esa secuencia es un grid de 5 columnas y 2
renglones.

Este grid contiene los datos de los beneficiarios de un cliente, que máximo
pueden ser dos y mínimo uno.

el grid esta dentro de un contenedor, un simple container que agrupa este
grid y dos botones, uno para agregar beneficiarios y otro para eliminarlos.

Los datos dentro del grid para cada registro ( o sea las columnas son):
NOMBRE, DOMICILIO,PARENTESCO, PORCENTAJE, EDAD
Texto Texto Combo Numérico
Númerico

Uno de los problemas es que si no me capturan nada en parentesco puedo
validar en su afterowchange su va vacío, pero cuando le doy Return .F. no me
lo regresa al campo PARENTESCO, ni siquiera con un simple
This.parent.column3.text1.setfocus que correspondería a la posición de la
tercer columna.

Dejando este detalle de largo, mi principal problema es que cuando son dos
beneficiarios la suma de sus porcentajes, obviamente no debe pasar de 100.

Mi procedimiento es que al salirme con CTL+TAB del grid y pasar al siguiente
campo que es un campo de texto (es lo que llamó perder el foco), en el
GotFocus de este siguiente campo que por cierto te recuerdo, ya esta fuera
del contenedor o sea es hermano de éste, la instrucción que sigo es la
siguiente :

LOCAL lnsumaporc as Number

select vbeneficiario
SUM porcentaje TO lnsumaporc
*SELECT socli

IF lnsumaporc <> 100

MESSAGEBOX("Error en los porcentajes de los beneficiarios" + CHR(13) +
chr(13);
+ " ! Revisar los porcentaje !",0,"Porcentaje Erroneos")

This.parent.container1.gridbeneficiarios.column4.text1.SetFocus

ENDIF

Como puedes ver, lo único que pretendo después de la advertencia es regresar
el foco a la celda o por lo menos al interior del grid, claro que si no
fuera mucho pedir el ideal es que el foco regresara a la celda del último
porcentaje capturado.

Pero ya lo intenté de muchas maneras y siempre después de obtener el mensaje
de advertencia el foco se pasa al objeto de texto, o sea continúa su camino
como si nada hubiera pasado.

En resumen, creo que algo estoy haciendo mal, porque quiero pasar el foco de
manera tradicional como con cualquier campo pero hacia el interior de un
grid y de alguna manera algo me esta fallando.

Espero haber sido lo suficientemente explícito, nuevamente gracias de
antemano, estaré al pendiente de tus observaciones.
Respuesta Responder a este mensaje
#3 Francisco Javier Martínez Nz
25/07/2006 - 20:35 | Informe spam
Mensaje de prueba

"Salvador Casas" wrote in message
news:%
Gracias Darío, por atender mi caso, mira yo tengo una pantalla con varios
objetos, me interesa específicamente el comportamiento de la secuencia
entre
3 de ellos, el objeto No. en esa secuencia es un grid de 5 columnas y 2
renglones.

Este grid contiene los datos de los beneficiarios de un cliente, que
máximo
pueden ser dos y mínimo uno.

el grid esta dentro de un contenedor, un simple container que agrupa este
grid y dos botones, uno para agregar beneficiarios y otro para
eliminarlos.

Los datos dentro del grid para cada registro ( o sea las columnas son):
NOMBRE, DOMICILIO,PARENTESCO, PORCENTAJE, EDAD
Texto Texto Combo Numérico
Númerico

Uno de los problemas es que si no me capturan nada en parentesco puedo
validar en su afterowchange su va vacío, pero cuando le doy Return .F. no
me
lo regresa al campo PARENTESCO, ni siquiera con un simple
This.parent.column3.text1.setfocus que correspondería a la posición de la
tercer columna.

Dejando este detalle de largo, mi principal problema es que cuando son dos
beneficiarios la suma de sus porcentajes, obviamente no debe pasar de 100.

Mi procedimiento es que al salirme con CTL+TAB del grid y pasar al
siguiente
campo que es un campo de texto (es lo que llamó perder el foco), en el
GotFocus de este siguiente campo que por cierto te recuerdo, ya esta fuera
del contenedor o sea es hermano de éste, la instrucción que sigo es la
siguiente :

LOCAL lnsumaporc as Number

select vbeneficiario
SUM porcentaje TO lnsumaporc
*SELECT socli

IF lnsumaporc <> 100

MESSAGEBOX("Error en los porcentajes de los beneficiarios" + CHR(13) +
chr(13);
+ " ! Revisar los porcentaje !",0,"Porcentaje Erroneos")

This.parent.container1.gridbeneficiarios.column4.text1.SetFocus

ENDIF

Como puedes ver, lo único que pretendo después de la advertencia es
regresar
el foco a la celda o por lo menos al interior del grid, claro que si no
fuera mucho pedir el ideal es que el foco regresara a la celda del último
porcentaje capturado.

Pero ya lo intenté de muchas maneras y siempre después de obtener el
mensaje
de advertencia el foco se pasa al objeto de texto, o sea continúa su
camino
como si nada hubiera pasado.

En resumen, creo que algo estoy haciendo mal, porque quiero pasar el foco
de
manera tradicional como con cualquier campo pero hacia el interior de un
grid y de alguna manera algo me esta fallando.

Espero haber sido lo suficientemente explícito, nuevamente gracias de
antemano, estaré al pendiente de tus observaciones.


Respuesta Responder a este mensaje
#4 Francisco Javier Martínez Nz
25/07/2006 - 23:23 | Informe spam
Una disculpa, ayer no me fije bien y no bajó mi respuesta tus dudas sobre el
procedimiento que estaba siguiendo, hasta hoy en la mañana al no ver mi post
me di cuenta de mi error, de todas maneras lo subí y después pude resolver
el problema, de cualquier manera gracias por tu atención, sólo era cuestión
de llegar en la ruta hasta este nivel : This.parent.column3.setfocus.

De cualquier manera ahi te seguiré preguntando.

Francisco Javier Martínez Núñez
Durango, Dgo., México.

"Francisco Javier Martínez Nz" wrote in
message news:%
Mensaje de prueba

"Salvador Casas" wrote in message
news:%
Gracias Darío, por atender mi caso, mira yo tengo una pantalla con varios
objetos, me interesa específicamente el comportamiento de la secuencia
entre
3 de ellos, el objeto No. en esa secuencia es un grid de 5 columnas y 2
renglones.

Este grid contiene los datos de los beneficiarios de un cliente, que
máximo
pueden ser dos y mínimo uno.

el grid esta dentro de un contenedor, un simple container que agrupa este
grid y dos botones, uno para agregar beneficiarios y otro para
eliminarlos.

Los datos dentro del grid para cada registro ( o sea las columnas son):
NOMBRE, DOMICILIO,PARENTESCO, PORCENTAJE, EDAD
Texto Texto Combo Numérico
Númerico

Uno de los problemas es que si no me capturan nada en parentesco puedo
validar en su afterowchange su va vacío, pero cuando le doy Return .F. no
me
lo regresa al campo PARENTESCO, ni siquiera con un simple
This.parent.column3.text1.setfocus que correspondería a la posición de la
tercer columna.

Dejando este detalle de largo, mi principal problema es que cuando son
dos
beneficiarios la suma de sus porcentajes, obviamente no debe pasar de
100.

Mi procedimiento es que al salirme con CTL+TAB del grid y pasar al
siguiente
campo que es un campo de texto (es lo que llamó perder el foco), en el
GotFocus de este siguiente campo que por cierto te recuerdo, ya esta
fuera
del contenedor o sea es hermano de éste, la instrucción que sigo es la
siguiente :

LOCAL lnsumaporc as Number

select vbeneficiario
SUM porcentaje TO lnsumaporc
*SELECT socli

IF lnsumaporc <> 100

MESSAGEBOX("Error en los porcentajes de los beneficiarios" + CHR(13) +
chr(13);
+ " ! Revisar los porcentaje !",0,"Porcentaje Erroneos")

This.parent.container1.gridbeneficiarios.column4.text1.SetFocus

ENDIF

Como puedes ver, lo único que pretendo después de la advertencia es
regresar
el foco a la celda o por lo menos al interior del grid, claro que si no
fuera mucho pedir el ideal es que el foco regresara a la celda del último
porcentaje capturado.

Pero ya lo intenté de muchas maneras y siempre después de obtener el
mensaje
de advertencia el foco se pasa al objeto de texto, o sea continúa su
camino
como si nada hubiera pasado.

En resumen, creo que algo estoy haciendo mal, porque quiero pasar el foco
de
manera tradicional como con cualquier campo pero hacia el interior de un
grid y de alguna manera algo me esta fallando.

Espero haber sido lo suficientemente explícito, nuevamente gracias de
antemano, estaré al pendiente de tus observaciones.






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida