In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Como mandar el foco a un control, Helppp?
-
- Mensajes: 69
- Registrado: Jue Abr 07, 2005 7:47 pm
Como mandar el foco a un control, Helppp?
Ignacio/Jose
Algo muy evidente debo estar haciendo mal.
Tengo los siguientes controles en un formulario: tEdit1, tEdit2, tEdit3
Intento al abandonar el tEdit3 pasarle el foco al tEdit2 utilizando un
tEdit2:setfocus() desde el OnExit pero no consigo que funcione.
Adjunto un pequeño ejemplo.
Saludos
Toni Sales
Attached files focus.zip (1.9 KB)Â
Algo muy evidente debo estar haciendo mal.
Tengo los siguientes controles en un formulario: tEdit1, tEdit2, tEdit3
Intento al abandonar el tEdit3 pasarle el foco al tEdit2 utilizando un
tEdit2:setfocus() desde el OnExit pero no consigo que funcione.
Adjunto un pequeño ejemplo.
Saludos
Toni Sales
Attached files focus.zip (1.9 KB)Â
Como mandar el foco a un control, Helppp?
Asi funciona.
::tEdit2:SetFocus()
Paco V
"Toni Sales" <toni.sales@gmail.com> escribió en el mensaje
news:48e27076$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Ignacio/Jose
>
> Algo muy evidente debo estar haciendo mal.
> Tengo los siguientes controles en un formulario: tEdit1, tEdit2, tEdit3
> Intento al abandonar el tEdit3 pasarle el foco al tEdit2 utilizando un
> tEdit2:setfocus() desde el OnExit pero no consigo que funcione.
>
> Adjunto un pequeño ejemplo.
>
> Saludos
> Toni Sales
>
>
::tEdit2:SetFocus()
Paco V
"Toni Sales" <toni.sales@gmail.com> escribió en el mensaje
news:48e27076$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Ignacio/Jose
>
> Algo muy evidente debo estar haciendo mal.
> Tengo los siguientes controles en un formulario: tEdit1, tEdit2, tEdit3
> Intento al abandonar el tEdit3 pasarle el foco al tEdit2 utilizando un
> tEdit2:setfocus() desde el OnExit pero no consigo que funcione.
>
> Adjunto un pequeño ejemplo.
>
> Saludos
> Toni Sales
>
>
Como mandar el foco a un control, Helppp?
Paco
Pues en el ejemplo no funciona. ¿Lo has probado?
Saludos
"Paco V." <ssi@ono.com> escribió en el mensaje
news:[email=48e27712@ozsrv2.ozlan.local...]48e27712@ozsrv2.ozlan.local...[/email]
> Asi funciona.
>
>
> ::tEdit2:SetFocus()
>
> Paco V
>
> "Toni Sales" <toni.sales@gmail.com> escribió en el mensaje
> news:48e27076$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Ignacio/Jose
>>
>> Algo muy evidente debo estar haciendo mal.
>> Tengo los siguientes controles en un formulario: tEdit1, tEdit2, tEdit3
>> Intento al abandonar el tEdit3 pasarle el foco al tEdit2 utilizando un
>> tEdit2:setfocus() desde el OnExit pero no consigo que funcione.
>>
>> Adjunto un pequeño ejemplo.
>>
>> Saludos
>> Toni Sales
>>
>>
>
>
Pues en el ejemplo no funciona. ¿Lo has probado?
Saludos
"Paco V." <ssi@ono.com> escribió en el mensaje
news:[email=48e27712@ozsrv2.ozlan.local...]48e27712@ozsrv2.ozlan.local...[/email]
> Asi funciona.
>
>
> ::tEdit2:SetFocus()
>
> Paco V
>
> "Toni Sales" <toni.sales@gmail.com> escribió en el mensaje
> news:48e27076$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Ignacio/Jose
>>
>> Algo muy evidente debo estar haciendo mal.
>> Tengo los siguientes controles en un formulario: tEdit1, tEdit2, tEdit3
>> Intento al abandonar el tEdit3 pasarle el foco al tEdit2 utilizando un
>> tEdit2:setfocus() desde el OnExit pero no consigo que funcione.
>>
>> Adjunto un pequeño ejemplo.
>>
>> Saludos
>> Toni Sales
>>
>>
>
>
-
- Mensajes: 620
- Registrado: Jue Mar 23, 2006 2:39 am
Como mandar el foco a un control, Helppp?
Toni:
Creo.... ojo CREO que estas haciendo mal el paso del foco, o bueno lo
estás haciendo en el evento incorrecto, el OnExit siempre regresa al
objeto del cual fue llamado, luego entonces no puedes cambiar el foco
dentro de este evento, porque efectivamete lo cambia al que tu le dices,
pero el retunr del onExit lo devuelve al objeto el cual llamo el evento.
Saludos
Rene Flores
http://www.ciber-tec.com
--------------------------
Nos vemos en España !!!!
Del 21 de Noviembre al 1 de Diciembre 2008
Mas informes:
http://www.geroa-software.com/cursos/
Sales escribió:
> Ignacio/Jose
>
> Algo muy evidente debo estar haciendo mal.
> Tengo los siguientes controles en un formulario: tEdit1, tEdit2, tEdit3
> Intento al abandonar el tEdit3 pasarle el foco al tEdit2 utilizando un
> tEdit2:setfocus() desde el OnExit pero no consigo que funcione.
>
> Adjunto un pequeño ejemplo.
>
> Saludos
> Toni Sales
>
>
Creo.... ojo CREO que estas haciendo mal el paso del foco, o bueno lo
estás haciendo en el evento incorrecto, el OnExit siempre regresa al
objeto del cual fue llamado, luego entonces no puedes cambiar el foco
dentro de este evento, porque efectivamete lo cambia al que tu le dices,
pero el retunr del onExit lo devuelve al objeto el cual llamo el evento.
Saludos
Rene Flores
http://www.ciber-tec.com
--------------------------
Nos vemos en España !!!!
Del 21 de Noviembre al 1 de Diciembre 2008
Mas informes:
http://www.geroa-software.com/cursos/
Sales escribió:
> Ignacio/Jose
>
> Algo muy evidente debo estar haciendo mal.
> Tengo los siguientes controles en un formulario: tEdit1, tEdit2, tEdit3
> Intento al abandonar el tEdit3 pasarle el foco al tEdit2 utilizando un
> tEdit2:setfocus() desde el OnExit pero no consigo que funcione.
>
> Adjunto un pequeño ejemplo.
>
> Saludos
> Toni Sales
>
>
Como mandar el foco a un control, Helppp?
El problema es el que te comentó Rene, el evento OnExit no permite el
cambio de foco mediante SetFocus().
En la ayuda del evento, aparece la explicación:
------------------------------------------------------------ --------------
TStdControl:OnExit
Evento que se produce cada vez que pierde foco el control.
Parametros:
<oSender>:
Referencia al objeto que provoca el evento
<oNextCtl>:
Objeto que va a recibir el foco
Valor Retorno:
<Nil>:
Ninguna acción
<.F.>:
Se anula la perdida de foco en el control y por lo tanto no lo recibe
oNextCtl
Nota: En ningún caso puede cambiar el foco desde el código de este
evento, es decir, no debe utilizar el método SetFocus.
------------------------------------------------------------ -----------------
cambio de foco mediante SetFocus().
En la ayuda del evento, aparece la explicación:
------------------------------------------------------------ --------------
TStdControl:OnExit
Evento que se produce cada vez que pierde foco el control.
Parametros:
<oSender>:
Referencia al objeto que provoca el evento
<oNextCtl>:
Objeto que va a recibir el foco
Valor Retorno:
<Nil>:
Ninguna acción
<.F.>:
Se anula la perdida de foco en el control y por lo tanto no lo recibe
oNextCtl
Nota: En ningún caso puede cambiar el foco desde el código de este
evento, es decir, no debe utilizar el método SetFocus.
------------------------------------------------------------ -----------------
Como mandar el foco a un control, Helppp?
Gracias a los dos por la explicación y por tanto ¿Como consigo manipular el
foco sin hacer inventos?. Siguiendo el manual el indica que si se pasa un
parámetro .T. se fuerza a que el control coja el foco, pero ¿Donde?.
En bastante habitual tener el control del foco en una aplicación ¿no?.
Saludos
Toni Sales
foco sin hacer inventos?. Siguiendo el manual el indica que si se pasa un
parámetro .T. se fuerza a que el control coja el foco, pero ¿Donde?.
En bastante habitual tener el control del foco en una aplicación ¿no?.
Saludos
Toni Sales
Como mandar el foco a un control, Helppp?
Toni Sales escribió:
> Gracias a los dos por la explicación y por tanto ¿Como consigo manipular el
> foco sin hacer inventos?. Siguiendo el manual el indica que si se pasa un
> parámetro .T. se fuerza a que el control coja el foco, pero ¿Donde?.
>
> En bastante habitual tener el control del foco en una aplicación ¿no?.
>
> Saludos
> Toni Sales
En el mismo evento OnExit, podrias hacer algo como:
METHOD ObjectOnExit(oSender, oNextCtl) CLASS ....
IF(condicion)
...
...
RETURN .F. //El control no perdería el foco
ELSE
oNextCtl:=::oObj //Recibiendo oObj el foco
END IF
RETURN NIL
> Gracias a los dos por la explicación y por tanto ¿Como consigo manipular el
> foco sin hacer inventos?. Siguiendo el manual el indica que si se pasa un
> parámetro .T. se fuerza a que el control coja el foco, pero ¿Donde?.
>
> En bastante habitual tener el control del foco en una aplicación ¿no?.
>
> Saludos
> Toni Sales
En el mismo evento OnExit, podrias hacer algo como:
METHOD ObjectOnExit(oSender, oNextCtl) CLASS ....
IF(condicion)
...
...
RETURN .F. //El control no perdería el foco
ELSE
oNextCtl:=::oObj //Recibiendo oObj el foco
END IF
RETURN NIL
- ignacio
- Site Admin
- Mensajes: 9252
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Como mandar el foco a un control, Helppp?
Toni,
Lo que te ha dicho René es correcto. No se pueden realizar cambios de foco
de forma manual desde un evento OnExit.
Hay varias formas de arreglarlo:
1) oControlDestino:PostMsg( WM_SETFOCUS )
Que consisten en mandar un mensaje de cambio de foco cuando se hayan
procesado todo los mensajes. Sin embargo, a mi no me gusta porque lo suyo es
llamar al método SetFocus() y no solamente mandar un mensaje, y es muy
posible que tengas efectos extraños como que el 'caret' se quede en un
control y el foco en otro.
2) Creas una propiedad de nombre oJump en el formulario y el método
WMXailer() con el siguiente código:
METHOD WMXailer() INLINE ::oJump:SetFocus()
En tu evento OnExit harías:
::oJump := ::oControlDestino
::PostMsg( WM_XAILER )
Un saludo
--
Ignacio Ortiz de Zúñiga
[Soporte Xailer]
[Xailer support]
"Toni Sales" <toni.sales@gmail.com> escribió en el mensaje
news:48e327e0$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Gracias a los dos por la explicación y por tanto ¿Como consigo manipular
> el foco sin hacer inventos?. Siguiendo el manual el indica que si se pasa
> un parámetro .T. se fuerza a que el control coja el foco, pero ¿Donde?.
>
> En bastante habitual tener el control del foco en una aplicación ¿no?.
>
> Saludos
> Toni Sales
>
Lo que te ha dicho René es correcto. No se pueden realizar cambios de foco
de forma manual desde un evento OnExit.
Hay varias formas de arreglarlo:
1) oControlDestino:PostMsg( WM_SETFOCUS )
Que consisten en mandar un mensaje de cambio de foco cuando se hayan
procesado todo los mensajes. Sin embargo, a mi no me gusta porque lo suyo es
llamar al método SetFocus() y no solamente mandar un mensaje, y es muy
posible que tengas efectos extraños como que el 'caret' se quede en un
control y el foco en otro.
2) Creas una propiedad de nombre oJump en el formulario y el método
WMXailer() con el siguiente código:
METHOD WMXailer() INLINE ::oJump:SetFocus()
En tu evento OnExit harías:
::oJump := ::oControlDestino
::PostMsg( WM_XAILER )
Un saludo
--
Ignacio Ortiz de Zúñiga
[Soporte Xailer]
[Xailer support]
"Toni Sales" <toni.sales@gmail.com> escribió en el mensaje
news:48e327e0$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Gracias a los dos por la explicación y por tanto ¿Como consigo manipular
> el foco sin hacer inventos?. Siguiendo el manual el indica que si se pasa
> un parámetro .T. se fuerza a que el control coja el foco, pero ¿Donde?.
>
> En bastante habitual tener el control del foco en una aplicación ¿no?.
>
> Saludos
> Toni Sales
>
Como mandar el foco a un control, Helppp?
Toni,
hemos estado revisando toda la parte de la gestión del foco, y creo que
hemos conseguido lo que quieres. Al menos, el ejemplo que has puesto
funciona ahora correctamente. No obstante, debido a los cambios internos que
ha habido que hacer, esta modificación estará sólo en la 2.0 que
publicaremos entre mañana y pasado.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
hemos estado revisando toda la parte de la gestión del foco, y creo que
hemos conseguido lo que quieres. Al menos, el ejemplo que has puesto
funciona ahora correctamente. No obstante, debido a los cambios internos que
ha habido que hacer, esta modificación estará sólo en la 2.0 que
publicaremos entre mañana y pasado.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
Como mandar el foco a un control, Helppp?
Gracias a todos por responder y por la solucion.
Saludos
Toni Sales
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=48e34617@ozsrv2.ozlan.local...]48e34617@ozsrv2.ozlan.local...[/email]
> Toni,
>
> hemos estado revisando toda la parte de la gestión del foco, y creo que
> hemos conseguido lo que quieres. Al menos, el ejemplo que has puesto
> funciona ahora correctamente. No obstante, debido a los cambios internos
> que ha habido que hacer, esta modificación estará sólo en la 2.0 que
> publicaremos entre mañana y pasado.
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
> http://www.xailer.info
>
Saludos
Toni Sales
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=48e34617@ozsrv2.ozlan.local...]48e34617@ozsrv2.ozlan.local...[/email]
> Toni,
>
> hemos estado revisando toda la parte de la gestión del foco, y creo que
> hemos conseguido lo que quieres. Al menos, el ejemplo que has puesto
> funciona ahora correctamente. No obstante, debido a los cambios internos
> que ha habido que hacer, esta modificación estará sólo en la 2.0 que
> publicaremos entre mañana y pasado.
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
> http://www.xailer.info
>
Como mandar el foco a un control, Helppp?
Bueno
Miestras no llega la version final 2.0 un forma que he visto de poderlo
hacerlo es como indica Ángel pero MUY importante realizar un RETURN .F.
Sin esto no funciona.
El codigo quedaria así
//---------------------------------------------------------- --------------------
METHOD Edit3Exit( oSender, oNextCtl ) CLASS TForm1
oNextCtl := ::oEdit2
::oEdit2:SetFocus(.t.)
RETURN .F.
Saludos
Toni Sales
Miestras no llega la version final 2.0 un forma que he visto de poderlo
hacerlo es como indica Ángel pero MUY importante realizar un RETURN .F.
Sin esto no funciona.
El codigo quedaria así
//---------------------------------------------------------- --------------------
METHOD Edit3Exit( oSender, oNextCtl ) CLASS TForm1
oNextCtl := ::oEdit2
::oEdit2:SetFocus(.t.)
RETURN .F.
Saludos
Toni Sales