Chamar programa, mantendo também o chamador disponível.

Discussão em 'Progress 4GL' iniciado por berriel, Janeiro 15, 2015.

  1. berriel

    berriel Membro Participativo

    Caros, estou criando uma UPC que durante a execução de um programa do Recebimento (RE1001), ela execute um outro programa que irá exibir em um campo Editor, todos os documentos do fornecedor.
    Minha dúvida é como eu poderei chamar pela UPC o programa e manter tanto a tela do RE1001 operacional, quanto a no novo programa.

    Desde já agradeço.
    Luiz Berriel
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    assim, se na upc vc fizer run rep/re1001Doc.w por exemplo, o re1001Doc.w fica dominante vamos assim dizer, pra fazer o que vc quer é assim:
    Código:
    define variable re1001handle as handle no-undo.
    
    run dispatch in re1001Handle('initialize').
    
    Assim vc vai executar o programa e o programa principal continua, pra passar parametros nesse caso, vc cria uma procedure que recebe os parametros e dai faz um run recebeDados in re1001Handle(parametros). depois do run dispatch
    Inclusive, desse jeito, o usuario até consegue fechar o re1001 e o seu programa continua.
  3. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Opa, esqueci de um pedaço do comando:
    define variable re1001handle as handle no-undo.

    run rep/re1001Doc.w persistent set re1001handle.
    run dispatch in re1001handle('initialize').
  4. berriel

    berriel Membro Participativo

    Caro bootstrapmaster, obrigado mesmo pela rápida resposta. Mas eu não entendi bem como fazer. Criei umas linhas de teste (utilizando o seu exemplo) para executar o programa que desejo executar pela UPC:
    DEF VAR teste AS CHAR.
    define variable re1001handle as handle no-undo.
    REPEAT :
    UPDATE teste.
    run u:/espec\ems206b\rep\diaupc\odepc1001.w persistent set re1001handle.
    run dispatch in re1001handle('initialize').
    END.

    A seguinte mensagem de erro é gerada:
    upload_2015-1-16_10-5-34.png

    Preciso alterar o programa odepc1001.w para ser chamado desta maneira?

    Mais uma vez obrigado e grande abraço,
    Luiz Berriel
  5. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Então, vc não usa template do DDKGUI ?
    se não usa, vc não vai precisar do run dispatch, só o run persistent já basta.
    berriel curtiu isso.
  6. Eilleen

    Eilleen Membro Ativo

    Boa tarde!

    Tente isso:

    Código:
    DEFINE VARIABLE hPrograma AS HANDLE NO-UNDO.
    
    IF NOT VALID-HANDLE(hPrograma) THEN
        RUN diretorio\programa.p PERSISTENT SET hPrograma.
    E quando quiser "fechar" o programa, use:

    Código:
    IF VALID-HANDLE(hPrograma) THEN
        DELETE OBJECT hPrograma.
    Espero que ajude! :)
    berriel e Agnaldo curtiram isso.

Compartilhe esta Página