Otros temas que te pueden interesar
|
||||
| Tema | Autor | Foro | Respuestas | Último post |
| [Compilador] Error JMW0005I-U al ejecutar un programa | Begoguay | PowerCOBOL (ActiveX, v4 - v11) | 3 | 13 de febrero de 2024 11:09 |
| FUNCTION RANDOM siempre devuelve el mismo valor | Zzebastian | GnuCOBOL (OpenCOBOL) | 5 | 7 de enero de 2024 20:49 |
| [Sintaxis] CALL en OPENCOBOLIDE 4.7.6 da error (no encuentra) | etilico2022 | IDE-s para GnuCOBOL | 17 | 31 de julio de 2023 20:53 |
| [Sintaxis] Consulta sobre Function Key | drvedia1981 | PowerCOBOL (ActiveX, v4 - v11) | 5 | 11 de mayo de 2022 19:53 |
| [Duda] Call "CFURCOV" System error occurred. code = 0x25 | dmosca | PowerCOBOL (ActiveX, v4 - v11) | 19 | 6 de agosto de 2019 15:29 |
![]() |
|
Forero
![]()
|
Hola foreros.
Mi problema es el siguiente: En los programas que hago pongo la propiedad 'Enabled' de los controles que utilizo como POW-TRUE o POW-FALSE, dependiendo de si quiero que el usuario modifique en ese momento el valor del control o no. Por ejemplo, en un mantenimiento de un fichero, si no se pulsa el botón de 'Editar' no quiero que acceda a ningún campo del fichero. También tengo indicado en el evento 'PreKeyDown' del formulario, que cuando se pulse 'ESC', según si está en modo edición o no, acceda a unos controles u otros. Pero me pasa que, solo a veces en algunos programas, cuando va a 'Enablar' o 'Desenablar' un control se me pierde el foco y me da el error 'Illegal function call'. Y aunque haga un 'SetFocus' a un control que anteriormente le he puesto POW-TRUE en su propiedad 'Enabled', no va a dicho control, y el foco se sitúa en otro control (es decir, donde le da la gana). No se si alguien me puede dar una pista de por qué me puede ocurrir esto. Un saludo. |
||||||||
|
|
|
|
Administrador
![]()
|
Begoguay, esto ocurre porque el orden de ejecución de las rutinas GUI no siempre corresponde con el orden de su lanzamiento.
Este error suele darse cuando justamente hacemos SetFocus sobre un control que en el momento lo tiene en estado Disabled. Para evitar este tipo de problemas, usa el método ThruEvents antes de hacer SetFocus: Código COBOL:
Dicho método asegurará la espera necesaria para que todas la rutinas GUI se ejecuten antes de la siguiente línea de código, que en nuestro caso es el SetFocus. NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
Forero
![]()
|
Hola.
Lo estoy probando, poniendo delante de cada SetFocus el evento ThruEvents y sigue sin funcionar La única forma de arreglarlo es dejar activos los controles a los que va (sin que yo se lo diga) y en su evento GotFocus controlar que deje o no modificar ese control según si quiero que esté activo o no. |
||||||||
|
|
|
|
Administrador
![]()
|
Begoguay, eso es que se te está escapando algo. Jugando con GetFocus y SetFocus, como decía, el orden de ejecución no está garantizado. Revísalo, yo lo resolví con el ThruEvents.
NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
![]() |
|
|
| Archivo - Cobol Foro | Contactar con Nosotros - Cobol Foro | |||||||