Iniciar Sesión

Ver la Versión Completa : [Duda] El Form queda Minimizado haciendo ExecuteSync


Recato53
11 de diciembre de 2015, 14:45
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:
*--> BLOQUEAMOS VENTANA, PUNTERO DE ESPERA
MOVE POW-FALSE TO "Enabled" OF POW-SELF
MOVE POW-MP-WAIT TO "MousePointer" OF POW-SELF

MOVE "RUNCOBOL.EXE PROGRAMA.COB" TO COMANDO
INVOKE POW-SELF "ExecuteSync" USING COMANDO POW-SWHIDE

*--> DESBLOQUEAMOS VENTANA, PUNTERO POR DEFECTO
MOVE POW-TRUE TO "Enabled" OF POW-SELF
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:
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:
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:


*--> BLOQUEAMOS VENTANA, PUNTERO DE ESPERA
MOVE POW-FALSE TO "Enabled" OF POW-SELF
MOVE POW-MP-WAIT TO "MousePointer" OF POW-SELF

MOVE "RUNCOBOL.EXE PROGRAMA.COB" TO COMANDO
INVOKE POW-SELF "ExecuteSync" USING COMANDO POW-SWHIDE

*--> MOSTRAMOS FORM COMO ANTES <===============
INVOKE POW-SELF "ShowForm" USING POW-SWNORMAL

*--> DESBLOQUEAMOS VENTANA, PUNTERO POR DEFECTO
MOVE POW-TRUE TO "Enabled" OF POW-SELF
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


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
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
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
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
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.