enfocar a un textbox en evento valid..

327 views
Skip to first unread message

Saúl Piña

unread,
Jan 20, 2014, 2:57:24 PM1/20/14
to publice...@googlegroups.com
Si para enfocar con return en un optiongroup es:

RETURN thisform.commandgroup1.Buttons(1) && o el número de botón que fuere.


¿Cómo sería para un textbox?

he intentado con Return thisform.text1  y nada...

gracias.

Miguel Canchas

unread,
Jan 20, 2014, 2:58:56 PM1/20/14
to publice...@googlegroups.com

Return thisform.text1.value

 

 

MK

Fidel Charny

unread,
Jan 20, 2014, 3:07:13 PM1/20/14
to publice...@googlegroups.com
El comando correcto es 
RETURN Thisform.Text1, como lo escribes.
Fijate que:
Text1 tiene que ser Enabled=.T. Lo puedes poner antes de enviar el comando Return.
La instrucción RETURN Thisform.Text1 en el evento Valid.

Alejandro Isla

unread,
Jan 20, 2014, 7:25:42 PM1/20/14
to publice...@googlegroups.com, mcan...@ximesa.com
Return thisform.text1.value es erróneo.

El lunes, 20 de enero de 2014 16:58:56 UTC-3, Miguel Canchas escribió:

Return thisform.text1.value

 

 

MK

Fernando D. Bozzo

unread,
Jan 21, 2014, 4:17:05 AM1/21/14
to publice...@googlegroups.com
Una particularidad que encontré en el funcionamiento del Valid (que no suelo usar), es que en algunos controles solo se ejecuta al hacer Click() y no al pasar con el tabulador o Enter.

Por ejemplo, el OptionGroup lo ejecuta al hacer click en algún botón, y el commandButton también.

Saludos.-



Carlos Miguel FARIAS

unread,
Jan 21, 2014, 5:54:23 AM1/21/14
to Grupo Fox
Tengo entendido que el valid solo se ejecuta si cambia el valor del control.
En un boton no hay estado, solo hay un evento que captura que el el clic (o la tecla aceleradora, si tuviese asignada).
Lo mismo para los radio buttons, checks y demás.
Saludos: Miguel, La Pampa (RA)

Fer

unread,
Jan 21, 2014, 5:58:03 AM1/21/14
to publice...@googlegroups.com

No siempre. Si hacés una prueba con textbox y un editbox vas a ver que sin cambiar nada se ejecuta al intentar salir del control, pero para algunos de los demás controles no.

Miguel Canchas

unread,
Jan 21, 2014, 8:29:05 AM1/21/14
to Alejandro Isla, publice...@googlegroups.com

Dependa que quieras retornar……

 

 

MK

Fer

unread,
Jan 21, 2014, 8:33:27 AM1/21/14
to publice...@googlegroups.com

Alejandro tiene razón, retornar el value en el valid es erróneo, ya que el único motivo de retornar algo aquí es para cambiar el foco de lugar.

Fidel Charny

unread,
Jan 21, 2014, 8:37:35 AM1/21/14
to publice...@googlegroups.com
En los Checkbox también el Valid se ejecuta si cambia el valor. Me parece bastante lógico si es que se piensa que los optiongroup deberían tener un valor por defecto. Ahora, cuál sería el motivo para utilizar un evento Valid en estos controles?. Para mi modo de ver, si una opción no puede ejecutarse por algún motivo, se debe poner Enabled=.f.. Si, por el estado de ingreso de datos, todavía no puede abordarse el optiongroup, no debería estar habilitado.

Alejandro dijo que "Return thisform.text1.value es erróneo." lo cual es correcto, pero porque .value no tiene nada que hacer ahí.

Lo que no vi (mal por mí) fue lo del optiongroup en el post inicial. (bocha!!!)

Fer

unread,
Jan 21, 2014, 8:42:46 AM1/21/14
to publice...@googlegroups.com

Justamente por los motivos que comentás es que no uso el valid, pero muchos de los que aprendieron FoxPro para DOS se quedaron ahí y no siguieron avanzando con el lenguaje.
Otros no encontraron el tiempo para leer la ayuda, ni la sección "What's new" que resumía lo nuevo.

Alejandro Isla

unread,
Jan 21, 2014, 9:10:59 AM1/21/14
to publice...@googlegroups.com
El planteo del post original es (eliminando todo los comentarios accesorios): para enfocar con return en un textbox 

Lo primero, es inferir que estamos dentro de un evento valid, ya que en otros casos, para cambiar el foco seria thisform.objeto.setfocus / return , cosa que en el valid no es permitido y tenemos que recurrir al return objeto

Poner Return thisform.text1.value lo que hace es retornar el valor contenido en text1, si text1 contiene algo distinto al boolean .T., se interpreta como un return .f. en un evento valid, lo que te retorna el foco al mismo objeto, haciendo imposible salir el mismo (loop infinito), si text1 contiene un valor .t., se interpreta como un return .t. que en un evento valid, significa que se validó el dato y da el foco al siguiente objeto en la lista.

Thisform.text1 es un objeto.
thisform.text1.value es un valor

Saludos.

El martes, 21 de enero de 2014 10:37:35 UTC-3, Fidel Charny escribió:
...

Alejandro dijo que "Return thisform.text1.value es erróneo." lo cual es correcto, pero porque .value no tiene nada que hacer ahí.

...


Alejandro Isla

unread,
Jan 21, 2014, 9:17:42 AM1/21/14
to publice...@googlegroups.com
Concuerdo parcialmente con vos Fernando, pero creo que en el caso particular de los textbox el uso del valid es totalmente adecuado y correcto.

Saludos.

Alejandro Isla

unread,
Jan 21, 2014, 9:22:09 AM1/21/14
to publice...@googlegroups.com
Aclaración respecto al return thisform.text1.value.
Si text1 contiene un valor numerico, se interpretaria como un return numero, saltando el foco hacia adelante o atras tantos objetos como indique numero.

Help valid si desean ahondar más en este punto.

Fidel Charny

unread,
Jan 21, 2014, 9:32:51 AM1/21/14
to publice...@googlegroups.com
Para cambiar el foco de acuerdo a la evaluación de un evento valid, tenés dos métodos:
1) return 0, return -1 ,return -2 , return 1 etc.
You can also use the optional ObjectName parameter in the RETURN command of the Valid event to direct where focus is assigned. The object specified must be a valid Visual FoxPro object. If the specified object is disabled or cannot receive focus, then focus is assigned to the next object in the tab order. If an invalid object is specified, Visual FoxPro keeps the focus at the current object.
2) return Thisform.text1  Return thisform.Edit2, etc.


El martes, 21 de enero de 2014 11:10:59 UTC-3, Alejandro Isla escribió:
Reply all
Reply to author
Forward
0 new messages