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.
Curiosidad sobre focos
Curiosidad sobre focos
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.
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.
-
- Mensajes: 291
- Registrado: Jue Ene 31, 2013 1:10 pm
Curiosidad sobre focos
Mario,
¿tienes la propiedad lDefault del botón a .T.?
Saludos,
José Lalín
¿tienes la propiedad lDefault del botón a .T.?
Saludos,
José Lalín
Curiosidad sobre focos
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.
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
Mario,
¿podrías enviarnos un pequeño ejemplo para revisarlo? Gracias.
Un saludo,
José F. Giménez
¿podrías enviarnos un pequeño ejemplo para revisarlo? Gracias.
Un saludo,
José F. Giménez
Curiosidad sobre focos
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)Â
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
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
> 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
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.
Gracias.
Mario Hormigo.
Curiosidad sobre focos
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.
No se si estará bien realizado, pero funciona, ya me comentarás algo, gracias.
Mario Hormigo.
- ignacio
- Site Admin
- Mensajes: 9441
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Curiosidad sobre focos
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
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
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Curiosidad sobre focos
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.
Gracias.
Mario Hormigo.
- ignacio
- Site Admin
- Mensajes: 9441
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Curiosidad sobre focos
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
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
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Curiosidad sobre focos
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.
Un saludo.
Mario Hormigo.