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.

Curiosidad sobre focos

Foro público de Xailer en español
Responder
mhormigoz
Mensajes: 19
Registrado: Dom May 26, 2013 1:27 am

Curiosidad sobre focos

Mensaje por mhormigoz »

Buenas a todos:
Entro en un mantenimiento de tabla, explorebar en el lado izquierdo, oDBbrowser a la dcha con la tabla en cuestión. Si desde el explorebar, entro en modo edición de un registro, llamando a un dialogo con los campos a modificar y botón btnbmp. Con el ratón pulso el botón final de aceptar la edición funciona y me cierra el dialogo perfectamente. Si lo hago con el botón intro y no he tocacado el browser, funciona perfectamente. Pero, si le he dado el foco al browser, entro en edición de un registro en cuestión, con el ratón pulso el botón aceptar me funciona, pero si le doy a intro, no cierra el dialogo. Algún problema existe con el foco.
Tengo activado en el módulo principal, lusereturn a true.
¿Qué estoy haciendo mal?, no lo veo.
Gracias de antemano.
Mario Hormigo.
joselalinf
Mensajes: 291
Registrado: Jue Ene 31, 2013 1:10 pm

Curiosidad sobre focos

Mensaje por joselalinf »

Mario,
¿tienes la propiedad lDefault del botón a .T.?
Saludos,
José Lalí­n
mhormigoz
Mensajes: 19
Registrado: Dom May 26, 2013 1:27 am

Curiosidad sobre focos

Mensaje por mhormigoz »

José, no funciona tampoco.
La cuestión es, si una lí­nea del browser la edito dándole el foco, ya sea con ratón o cursores, y llamo a un dialogo modal, al pulsar intro en el botón para salir, teniendo este el foco, no se sale del dialogo. Pero si pulso con el ratón si. Y otra curiosidad, si estando el foco en el botón, pulso barra espaciadora si cierra el diálogo.
Y lo más curioso, si no das el foco al browser y editas la lí­nea y pulsas intro, si cierra el diálogo.
Ni idea que pasa.
Mario Hormigo.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Curiosidad sobre focos

Mensaje por jfgimenez »

Mario,
¿podrí­as enviarnos un pequeño ejemplo para revisarlo? Gracias.
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
mhormigoz
Mensajes: 19
Registrado: Dom May 26, 2013 1:27 am

Curiosidad sobre focos

Mensaje por mhormigoz »

Buenas José:
Te enví­o mini mantenimiento, donde puedes ver como si editas desde el browser, al intentar pulsar intro en aceptar, no cierra el dialogo.
Gracias de antemano.
Mario Hormigo.

Attached files Foco.rar (50.1 KB)Â
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Curiosidad sobre focos

Mensaje por jfgimenez »

Mario,
> Te enví­o mini mantenimiento, donde puedes ver como si
> editas desde el browser, al intentar pulsar intro en
> aceptar, no cierra el dialogo.
el problema está en el evento OnKeyUp del browse. Desde ahí­ estás
lanzando el formulario al pulsar intro. Bueno, mejor dicho, al soltar la
tecla de intro... y ese es el problema. Me explico: cuando pulsas intro
sobre el botón "Aceptar" del formulario, éste se cierra inmediatamente,
pero el mensaje WM_KEYUP, que es el que dispara el evento OnKeyUp, lo
recibe el browse, porque el formulario ya no existe, y entonces se
vuelve a lanzar el formulario. Para que te funcione bien, sólo tienes
que poner la llamada en el evento OnKeyDown del browse, no en el OnKeyUp.
Y por cierto, una aclaración... para eventos de teclado, normalmente se
utiliza el OnKeyDown, no el OnKeyUp, porque el primero se dispara las
veces que sea necesario con la propia "autorepetición" de la tecla,
mientras que el segundo sólo se dispara cuando la tecla se suelta. En
cambio, en los eventos de ratón se utiliza tanto la pulsación como la
liberación, ya que el ratón no tiene "autorepetición" de los botones.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
mhormigoz
Mensajes: 19
Registrado: Dom May 26, 2013 1:27 am

Curiosidad sobre focos

Mensaje por mhormigoz »

Entendido José, una vez dentro del formulario ya funciona, pero al navegar sobre el browser con los cursores y elegir un registro con el intro, no me salta el evento OnKeyDown, por tanto no me lanza el formulario.
Gracias.
Mario Hormigo.
mhormigoz
Mensajes: 19
Registrado: Dom May 26, 2013 1:27 am

Curiosidad sobre focos

Mensaje por mhormigoz »

He seguido probando, al no detectarme la tecla intro el evento OnKeyDown, cosa que si hace el OnKeyUp, y por eso supongo que editarí­a el registro por ahí­. Como te decí­a, probando probando, he quitado el evento OnKeyDown y uso el OnChar y funciona todo, tanto el detecte del intro como todo lo demás.
No se si estará bien realizado, pero funciona, ya me comentarás algo, gracias.
Mario Hormigo.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9441
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Curiosidad sobre focos

Mensaje por ignacio »

mhormigoz escribió el mar, 17 septiembre 2013 23:51 He seguido probando, al no detectarme la tecla intro el evento OnKeyDown, cosa que si hace el OnKeyUp, y por eso supongo que editarí­a el registro por ahí­. Como te decí­a, probando probando, he quitado el evento OnKeyDown y uso el OnChar y funciona todo, tanto el detecte del intro como todo lo demás.
No se si estará bien realizado, pero funciona, ya me comentarás algo, gracias.
Mario Hormigo.
La tecla Intro no se recibe porque la procesa el Browse. Si quiere recibirla ponga la propiedad lAllowEdit a falso.
Un saludo
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
mhormigoz
Mensajes: 19
Registrado: Dom May 26, 2013 1:27 am

Curiosidad sobre focos

Mensaje por mhormigoz »

Ignacio, he probado lo que propones, funciona pero no va fino. Te explico, al desactivar la propiedad lAllowEdit, si que ya me detecta el intro en el OnKeyDown, pero cuando sales de el y quieres seguir navegando por el browser con los cursores, por ejemplo, tienes que pulsar unas cuantas de veces para que recupere el foco. Por lo contrario, estando activada la propiedad lAllowEdit y usando OnChar, funciona todo correctamente y mi pregunta es si usarlo así­ es correcto o no.
Gracias.
Mario Hormigo.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9441
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Curiosidad sobre focos

Mensaje por ignacio »

Hola,
Si te funciona con OnChar adelante. Pero el hecho de que te llegue el evento no significa que el foco se cambie en absoluto. Si tu eres el que cambia el foco (por abrir un nuevo diálogo), tienes que ser tu también el que lo restaure si lo deseas.
Por otra parte si tienes un botón con la propiedad lDefault a .T. éste recibirá el foco igualmente y si has puesto Application:lUseReturn a .T. el foco pasará al siguiente control si tu no lo paras. Para pararlo sólo deberas devolver un valor 0 en la función que recibe el evento.
Un saludo
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
mhormigoz
Mensajes: 19
Registrado: Dom May 26, 2013 1:27 am

Curiosidad sobre focos

Mensaje por mhormigoz »

Creo que por ahora, todas mis curiosidades sobre focos, se han aclarado, os doy gracias a todos y seguiré indagando en este fabuloso lenguaje.
Un saludo.
Mario Hormigo.
Responder