1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Duvida UPC - PD4000 - nr-tabpre

Discussão em 'Progress 4GL' iniciado por dublock, Julho 11, 2019.

  1. dublock

    dublock Sem Pontuação

    Pessoal, boa tarde.

    Estou criando uma upc no programa PD4000, para validar algumas informações antes do usuário finalizar a inclusão do item.

    Porém, quando vou coletar o valor do compo fill-in nr-tabpreco (tt-ped-item.nr-tabpre), a upc pega o valor do campo tt-ped-venda.nr-tabpre.

    Como faço, para pegar o valor do campo tt-ped-item.nr-tabpre?


    Alguém tem uma luz para me ajudar?

    OBrigado.
    Código:
    IF p-ind-event  = "AFTERLEAVEVLPREORI"  THEN DO:
    
    run c:\temp\pd4000\buscaWidget.p (input 'pd4000',input ?,input 'nr-tabpre',input 'fill-in',output nr-tabpre-hl).
    
    MESSAGE                        
            nr-tabpre-hl:SCREEN-VALUE
            nr-tabpre-hl:INPUT-VALUE.

    Arquivos Anexados:

  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Depende do ponto da UPC que vc está pegando que o programa chama a tabela que vc precisa.
  3. dublock

    dublock Sem Pontuação

    Olá Rafael, boa tarde.

    Na tela de inserir o item, no programa PD4000. Estou tentando pegar essa informação no evendo AfterLeaveVlPreori.

    Como demonstro no anexo.

    As outras informações consigo trazer normal, como Código do Item e valor. Somente a tabela de preço desta tela que não.

    Como esta neste anexo.

    Arquivos Anexados:

  4. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Nossa, tá muito bizarro isso ai...vc tem uma procedure de busca widget e passa o nome do programa e nada de handle...

    Vc tinha que ter uma procedure recursiva onde você passaria o CURRENT-WINDOW como parâmetro e ele buscasse esse campo físico dentro do programa e atribuir uma variável handle, tipo:

    Código:
    
    DEF VAR txtPreco AS HANDLE.
    
    IF p-ind-event = "AFTERLEAVEVLPREORI" THEN DO:
         RUN BuscaWidget(INPUT CURRENT-WINDOW).
    
        MESSAGE  txtPreco:INPUT-VALUE VIEW-AS ALERT-BOX.
    END.
    
    PROCEDURE BuscaWidget.
      DEF INPUT PARAMETER ObjOrigem AS HANDLE. /* Handle do Frame/Objeto Original e dos próximas recursividades */
      DEF VAR ObjAtual AS HANDLE. /* Frame/Objeto Atual */
      DEF VAR ObjFilho AS HANDLE. /* Frame/Objeto 'Filho' */
      ObjAtual = ObjOrigem.
      DO WHILE VALID-HANDLE(ObjAtual):
         IF VALID-HANDLE(ObjAtual) THEN DO:
            IF txtpreco = ? AND objAtual:TYPE = "FILL-IN" AND objAtual:NAME = "nr-tabpre" AND objAtual:FRAME-NAME = "fpage6" THEN DO: 
                txtpreco = objAtual.
               
            END.
               
           /* IF ObjAtual:TYPE = "FRAME" AND ObjAtual:NAME = "fPage0" THEN fPage0 = ObjAtual:HANDLE.
            IF ObjAtual:TYPE <> "WINDOW" AND ObjAtual:TYPE <> "FRAME" AND ObjAtual:TYPE <> "FIELD-GROUP" THEN DO:
               IF ObjAtual:TYPE = "BUTTON" AND ObjAtual:NAME = "btCalcula" THEN btCalcula = ObjAtual.
            END.*/
            IF ObjAtual:TYPE = "FRAME" OR ObjAtual:TYPE = "FIELD-GROUP" THEN DO:
               ObjFilho = ObjAtual:FIRST-CHILD NO-ERROR.
               IF ERROR-STAT :ERROR = FALSE THEN DO:
                  IF VALID-HANDLE(ObjFilho) THEN DO:
                     RUN BuscaWidget(ObjFilho).
                  END.
               END.
            END.
            ObjAtual = ObjAtual:NEXT-SIBLING NO-ERROR.
         END.
         ELSE LEAVE.
      END.
      IF VALID-HANDLE(ObjOrigem) THEN DO:
         ObjOrigem = ObjOrigem:FIRST-CHILD NO-ERROR.
         IF ERROR-STATUS :ERROR THEN RETURN.
         RUN BuscaWidget(ObjOrigem).
      END.
    END PROCEDURE.
    
    dublock curtiu isso.
  5. dublock

    dublock Sem Pontuação

    Bom dia, Rafael.

    Deu certo.

    Muito obrigado pela ajuda.
    rafael.andrade curtiu isso.

Compartilhe esta Página