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.

Sigo con Problemas al Pasar el Focus

Foro público de Xailer en español
Responder
carlos
Mensajes: 126
Registrado: Mié Feb 02, 2005 7:31 pm

Sigo con Problemas al Pasar el Focus

Mensaje por carlos »

Miren hago esto para pasar el focus de un TEDIT a otro TEdit cuando presiono
Enter y no me funciona
WITH OBJECT ::oEditUser := TEdit():New(::oTB2)
:SetBounds( 62, 2, 80, 20 )
:Value :=""
:lPassword := .F.
:cPasswordChar := ""
:nclrTextFocus := clMenuText
:cBalloon := "Teclee Nombre de Usuario"
:onEnter := ::PasaControl()
:Create()
:SetFocus()
END
//---------------------------------------------------------- ----------------
----
METHOD PasaControl() CLASS TControlar
WITH OBJECT ::oEditClave
:SetFocus()
END
Return NIL
ni esto por ejemplo, este me lo pasa pero antes de editar el TEDIT que
quiero porner el nombre de usuario
WITH OBJECT ::oEditUser := TEdit():New(::oTB2)
:SetBounds( 62, 2, 80, 20 )
:Value :=""
:lPassword := .F.
:cPasswordChar := ""
:nclrTextFocus := clMenuText
:cBalloon := "Teclee Nombre de Usuario"
:onEnter := "PasaControl"
:Create()
:SetFocus()
END
Ni esto funciona
WITH OBJECT ::oEditUser := TEdit():New(::oTB2)
:SetBounds( 62, 2, 80, 20 )
:Value :=""
:lPassword := .F.
:cPasswordChar := ""
:nclrTextFocus := clMenuText
:cBalloon := "Teclee Nombre de Usuario"
:onEnter := ::oEditClave:SetFocus()
:Create()
:SetFocus()
END
Me respondieron en el foro que hiciera lo siguiente
METHOD EditUserKeyDown( oSender, nKey, nFlags ) CLASS TControlar
if nKey = VK_RETURN
::oEditClave:SetFocus()
endif
RETURN Nil
WITH OBJECT ::oEditUser := TEdit():New(::oTB2)
Application:lUseReturn := .T.
:SetBounds( 62, 2, 80, 20 )
:Value :=""
:lPassword := .F.
:cPasswordChar := ""
:nclrTextFocus := clMenuText
:cBalloon := "Teclee Nombre de Usuario"
:onEnter := EditUserKeyDown
:Create()
:SetFocus()
END
WITH OBJECT ::oEditClave := TEdit():New(::oTB2)
:SetBounds( 62, 2, 80, 20 )
:Value :=""
:lPassword := .F.
:cPasswordChar := ""
:nclrTextFocus := clMenuText
:cBalloon := "Teclee Nombre de Usuario"
:onEnter := ::ValidUser()
:SetFocus()
END
El caso es que no me pasa el foco al oEditClave
Por favoir diganme que hago mal o que me falta para que esto funcione
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Sigo con Problemas al Pasar el Focus

Mensaje por jfgimenez »

Carlos,
ya veo que lo has solucionado. De todos modos, me gustaría aclararte una
cosa:
> :onEnter := ::PasaControl()
El evento OnEnter no se dispara cuando se pulsa enter, sino cuando el
control obtiene el foco. Por eso, con este código, nunca podría funcionar.
Te resumo los eventos que están relacionados con este tema:
- OnEnter: se dispara cuando el control recibe el foco.
- OnExit: cuando el control pierde el foco. Se puede retornar .F. para que
no lo pierda y entonces sería similar al VALID de Clipper
- OnKeyDown: cuando el usuario pulsa cualquier tecla, excepto Alt.
- OnChar: cuando el usuario pulsa una tecla que tiene código ASCII. Es
decir, las teclas de función, los cursores, etc. NO se reciben en OnChar,
pero sí en OnKeyDown. En cambio, las teclas de la A a la Z, los números,
signos de puntuación, Enter, Esc y algunas más, sí se reciben tanto en
OnKeyDown como en OnChar.
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder