![]() |
Controlar si un Form ya está abierto
Estimados, buenas tardes,
Una consulta, cuando uno llama en una cadena de programas por error a un programa (dll) de esa cadena, nos da un mensaje porque Netcobol no permite la recursividad. You can create only one "formA" "formA" has already benn opened as a form, or placed on the form as a control La pregunta es, existe algún código de status o forma de poder controlar que ya está abierto, con el netcobol? (en definitiva algún de status del callform) (obvio que con llaves uno lo puede manejar) gracias, abrazo Armando |
Armando,
Penso que sim. Ao fazer o "Call" podes definir um "cookie=1" No evento: Cita:
Cita:
Ficas a saber que a form foi fechada. Não sei se me faço entender. Se for necessária mais alguma informação diz-me. Un saludo, Rui Pinto |
Sí sabes usar apis de windows, hay funciones para capturar el título del formulario, y si existe, ya sabes que está abierto en ese momento.
Un colega lo conseguió, por mi inicitiva de mejorar su aplicación y mía por necesidad en la propia aplicación, la idea era de capturar las teclas desde cualquier parte de la aplicación, antes de abrir el formulario se comprueba si existe, así se evitaba el error que te aparece. |
Armando, no es la recursividad sino la multi-instancia. En realidad, si desde el principio establecemos el tipo de script a OO COBOL en la propiedades del módulo, permite multiinstancia. Pero al caso.
Sí que se puede saber, como decía Rapinto. Un ejemplo simple: Abres 2 Forms con 2 botones. MainForm.CmCommand1.Click: Código COBOL:
MainForm.CmCommand2.Click: Código COBOL:
Ahora, en el evento "CloseChild" del MainForm haces: Código COBOL:
Y listo. Este es el mecanismo. A partir de esto, puedes hacer loq eu quieras, manejar variables EXTERNAL para saber en otros Forms también, si un Form está abuerto o no etc. |
Estimados, a todos muchas gracias,
Si el tema del cookie, en algún caso lo hemos usado y resuelve bien, Lo mismo lo de las API, de encontrar por el título, Más que nada, capaz que no supe expresarme bien era si había alguna alternativa, cuando tenés un programa que llama a A, este a B, este a C y el útimo intenta llamar a A de nuevo, si había una alternativa de interceptar el Mensaje en inglés, como en Rmcobol, que hay un PROGRMA-STATUS, si el programa llamado da error (incluso si encuentra la dll, por ejemplo) Código COBOL:
|
Cita:
USO ISTO: Código COBOL:
Não esquecer de por nas opções de compilação: ALPHAL(WORD) |
Armando, creo que PowerCOBOL no permite el acceso a tal "profundidad" porque es un entorno orientado a eventos. Con lo cual, no veo una manera de interceptar dicho mensaje porque viene del Run-Time.
La alternativa sería comprobar la existencia de la DLL en tu código. O, en caso de los Form, mover el estado, según cookie, a una variable EXTERNAL compartida por todos los Forms. |
| La franja horaria es GMT +2. Ahora son las 06:27. |
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.