Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Duda] El Form queda Minimizado haciendo ExecuteSync (https://www.cobolforo.es/showthread.php?t=283)

Recato53 11 de diciembre de 2015 14:45

El Form queda Minimizado haciendo ExecuteSync
 
Buenos días.

Estoy desarrollando una aplicación en la que combino programas PowerCobol y RMCobol.

Cuando llamo a un programa RMCobol, ejecuto la siguiente rutina:
Código COBOL:
  1. *--> BLOQUEAMOS VENTANA, PUNTERO DE ESPERA
  2.         MOVE POW-FALSE TO "Enabled" OF POW-SELF
  3.         MOVE POW-MP-WAIT TO "MousePointer" OF POW-SELF
  4.        
  5.         MOVE "RUNCOBOL.EXE PROGRAMA.COB" TO COMANDO
  6.         INVOKE POW-SELF "ExecuteSync" USING COMANDO POW-SWHIDE
  7.        
  8. *--> DESBLOQUEAMOS VENTANA, PUNTERO POR DEFECTO
  9.         MOVE POW-TRUE TO "Enabled" OF POW-SELF
  10.         MOVE POW-MP-DEFAULT TO "MousePointer" OF POW-SELF

El problema es que cuando vuelve de ejecutar el programa, el Formulario que ha realizado la llamada se queda el la Barra de tareas.

Como puedo evitar esto.

Muchas Gracias.

Rapinto 11 de diciembre de 2015 17:49

recato53,

Não estará errado o comando:
Código COBOL:
  1. INVOKE POW-SELF "ExecuteSync" USING COMANDO POW-SWHIDE

POW-SWHIDE é para não aparecer visível a Form.
Penso que deveria ser POW-SWNORMAL ou POW-SWSHOWMAXIMIZED.

ou seja, deverias usar:
Código COBOL:
  1. INVOKE POW-SELF "ExecuteSync" USING COMANDO POW-SWNORMAL

Saludos,
Rui

---------- Post añadido : 18:49 ---------- Post anterior : 18:28 ----------

Só agora reparei, que o problema é na FORM que chama o outro programa.

Isso poderá ser outro problema. Ao executar o comando "ExecuteSync" a form que chama está visível??? Quando é que aparece na barra de tarefeas?? No momento em que chama o outro programa, ou quando ele termina e regressa à Form original??

Un saludo,
Rui

Kuk 11 de diciembre de 2015 19:12

Recato53, intenta hacer lo siguiente a ver si funciona:

Código COBOL:
  1.    *--> BLOQUEAMOS VENTANA, PUNTERO DE ESPERA
  2.             MOVE POW-FALSE TO "Enabled" OF POW-SELF
  3.             MOVE POW-MP-WAIT TO "MousePointer" OF POW-SELF
  4.  
  5.             MOVE "RUNCOBOL.EXE PROGRAMA.COB" TO COMANDO
  6.             INVOKE POW-SELF "ExecuteSync" USING COMANDO POW-SWHIDE
  7.  
  8.     *--> MOSTRAMOS FORM COMO ANTES <===============
  9.             INVOKE POW-SELF "ShowForm" USING POW-SWNORMAL
  10.  
  11.     *--> DESBLOQUEAMOS VENTANA, PUNTERO POR DEFECTO
  12.             MOVE POW-TRUE TO "Enabled" OF POW-SELF
  13.             MOVE POW-MP-DEFAULT TO "MousePointer" OF POW-SELF

Recato53 12 de diciembre de 2015 11:04

Gracias por vuestra ayuda.

Sigue quedando el formulario en la barra de tareas.

Kuk 12 de diciembre de 2015 14:14

Recato53, ejecuta otra cosa en lugar el RM, la calculadora de Windows por ejemplo y dinos si te pasa lo mismo o no.

Recato53 12 de diciembre de 2015 19:56

Si ejecuto la calculadora de Windows, ocurre lo mismo.
Cuando cierro la calculadora, el Formulario se queda en la barra de tareas.

Kuk 12 de diciembre de 2015 21:47

Recato53, efectivamente pasa esto con "ExecuteSync", en el caso de deshabilitar el Form. Es decir, si no haces

Código COBOL:
  1.      MOVE POW-FALSE TO "Enabled" OF POW-SELF

El Form se queda en su sitio.

Debe ser un pequeño bug en el Run-Time de Fujitsu.

Dasije 14 de diciembre de 2015 01:41

Puedes utilizar la api de windows, para activar formularios, recoges el handle y después llamas a esta api y la activas.

Creo que es el SetActiveWindow.

Saludos.

Rapinto 15 de diciembre de 2015 00:09

No foro cocina del foro Powercobol+winapi está lá um exemplo de
"Bring Window to Top (By Name) "

Pode ser que te resolva o problema,

Un saludo,
Rui Pinto

Recato53 19 de diciembre de 2015 21:22

Cita:

Citación del post de Rapinto (Mensaje 1354)
No foro cocina del foro Powercobol+winapi está lá um exemplo de
"Bring Window to Top (By Name) "

Pode ser que te resolva o problema,

Un saludo,
Rui Pinto

He probado la rutina, pero al compilar en PWC 9, se producen varios errores.

error LNK2001: unresolved external symbol _SETFOREGROUNDWINDOW@4
error LNK2001: unresolved external symbol _SLEEP@4
error LNK2001: unresolved external symbol _FINDWINDOWA@8

Hay que añadir algo en el programa.
Estoy creando una dll, es correcto.

La LINKAGE en powercobol no se usa. La variables las defino como GLOBALEXTERNAL y paso los valores de una dll a otra.

Kuk 19 de diciembre de 2015 23:27

Recato53, tienes que añadir la opción ALPHAL(WORD) en las propiedades de CobolScripts del Form.

Recato53 20 de diciembre de 2015 09:59

1 Archivos Adjunto(s)
Cita:

Citación del post de Kuk (Mensaje 1380)
Recato53, tienes que añadir la opción ALPHAL(WORD) en las propiedades de CobolScripts del Form.

Buenos días.

Me sigue dando errores cuando compilo.

Envio el programa par ver donde están los errores.

Muchas Gracias.

FELICES FIESTAS.

Kuk 20 de diciembre de 2015 12:47

2 Archivos Adjunto(s)
Recato53, así es cómo debes asignar la opción. Además, tienes tabulaciones usadas, esto no es muy bueno, usa espacios en código. Tenías CONFIGURATION SECTION que no se puede usar tampoco, y el END PROGRAM tabulado que se había ido a la derecha.

Te lo he corregido todo.

Recato53 20 de diciembre de 2015 22:32

Cita:

Citación del post de Kuk (Mensaje 1386)
Recato53, así es cómo debes asignar la opción. Además, tienes tabulaciones usadas, esto no es muy bueno, usa espacios en código. Tenías CONFIGURATION SECTION que no se puede usar tampoco, y el END PROGRAM tabulado que se había ido a la derecha.

Te lo he corregido todo.

Perdona mi torpeza, no había revisado los TAB, ya consigo compilar el programa sin errores.
Mi duda ahora es cual es el nombre de la Ventana que se queda en la barra de tareas, ¿es el nombre del Formulario?, si es así la rutina no me funciona.


La franja horaria es GMT +2. Ahora son las 16:21.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.