Página 1 de 1

Curiosidad sobre focos

Publicado: Jue Sep 12, 2013 2:12 pm
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.

Curiosidad sobre focos

Publicado: Lun Sep 16, 2013 8:30 pm
por joselalinf
Mario,
¿tienes la propiedad lDefault del botón a .T.?
Saludos,
José Lalí­n

Curiosidad sobre focos

Publicado: Mar Sep 17, 2013 12:52 am
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.

Curiosidad sobre focos

Publicado: Mar Sep 17, 2013 9:19 am
por jfgimenez
Mario,
¿podrí­as enviarnos un pequeño ejemplo para revisarlo? Gracias.
Un saludo,
José F. Giménez

Curiosidad sobre focos

Publicado: Mar Sep 17, 2013 7:34 pm
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)Â

Curiosidad sobre focos

Publicado: Mar Sep 17, 2013 8:42 pm
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

Curiosidad sobre focos

Publicado: Mar Sep 17, 2013 11:18 pm
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.

Curiosidad sobre focos

Publicado: Mar Sep 17, 2013 11:51 pm
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.

Curiosidad sobre focos

Publicado: Mié Sep 18, 2013 11:31 am
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

Curiosidad sobre focos

Publicado: Mié Sep 18, 2013 5:05 pm
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.

Curiosidad sobre focos

Publicado: Mié Sep 18, 2013 5:10 pm
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

Curiosidad sobre focos

Publicado: Mié Sep 18, 2013 9:21 pm
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.