@Joseg, lo que puedes hacer es pasar el Form1 (que es el que necesitas varias veces) a una DLL nueva y fijar el código en OO COBOL. Hay que copiar y pegar código en los eventos porque (!!!)
al cambiar de COBOL85 a OO COBOL se borra todo el código en los eventos, pero bueno no es un problema. Teniendo copia de ese Form en el proyecto, simplemente haces Copiar/Pegar en cada evento.
De esta manera, cada vez que invoques ese Form1 se creará una copia nueva (obvio, estando en modo OO). Yo tengo hecho esto para un proyecto donde creé mi propio MessageBox.
---------- Post añadido : 15:28 ---------- Post anterior : 15:08 ----------
Y esto se puede hacer de la siguiente manera:
En el Form1 defines unos campos como EXTERNAL, Y pones un TIMER. A la hora de llamar el Form 2 lo haces con OpenForm (para continuar ejecutando el Timer) y con Cookie (para saber cuando se ha cerrado el Form2 en el evento "CloseChild" del Form1).
El código más o menos sería algo así:
Form1->Button1Click:
COBOL Código:
MOVE POW-TRUE TO "Active" OF Timer1
MOVE POW-FALSE TO "Enabled" OF CmCommand1
INVOKE POW-SELF "OpenForm" USING "Form2" 1
Form1->Timer
COBOL Código:
WORKING-STORAGE SECTION.
01 MiCampoExt IS EXTERNAL PIC X(50).
PROCEDURE DIVISION.
MOVE MiCampoExt TO POW-TEXT OF CmText1
Form1->CloseChild:
COBOL Código:
LINKAGE SECTION.
01 POW-COOKIE PIC S9(9) COMP-5.
PROCEDURE DIVISION USING POW-COOKIE.
IF POW-COOKIE = 1 *> nuestro Form2
MOVE POW-FALSE TO "Active" OF Timer1
MOVE POW-TRUE TO "Enabled" OF CmCommand1
END-IF
Form2->OnChange (o cualquier evento)
COBOL Código:
WORKING-STORAGE SECTION.
01 MiCampoExt IS EXTERNAL PIC X(50).
PROCEDURE DIVISION.
MOVE POW-TEXT OF CmText1 TO MiCampoExt
Marcadores