1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

Duvida Adicional botão em aba específica do browser via UPC

Discussão em 'EMS , HCM e Totvs 11' iniciado por André Simões, Outubro 1, 2025.

  1. André Simões

    André Simões Sem Pontuação

    Boa tarde pessoal!
    Estou criando uma UPC para a RE1001, porem não estou conseguinte criar um botão diretamente na aba "Acabado" do browser da tela, para que o botão só apareça nessa aba.

    Tem como fazer isso?
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Com uma procedure recursiva, tu consegue pegar qualquer objeto filho da "CURRENT-WINDOW" e assim pegar o frame dessa aba pra usar ela na criação do botão
  3. André Simões

    André Simões Sem Pontuação

    Obrigado Rafael por responder! Por acaso você tem um exemplo dessa procedure recursiva?
  4. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Colocando a procedure abaixo e chamando via "RUN BuscaWidget(CURRENT-WINDOW)." vai percorrer por todos objetos filhos, netos e bisnetos da CURRENT-WINDOW.

    Aí basta trocar o MESSAGE por sua variável local assim:

    DEF VAR h-frameAcabado AS HANDLE NO-UNDO.

    dentro da recursividade, supondo que o frame se chame fPage2:
    IF objFilho:NAME = "fPage2" THEN h-frameAcabado = objFilho.

    aí abaixo do "RUN BuscaWidget" tu pode validar assim
    MESSAGE valid-handle(h-frameAcabado) VIEW-AS ALERT-BOX.

    Obs.: Ao fazer o create de um botão, não esqueça de setar o NAME pq é através dele que tu encontra via recursividade, mesmo sendo um botão dinâmico.
    Obs2.: Nunca use variável global, pois se tu abrir 2 ou mais programas, o botão sai da primeira tela e aparece na última, dá um monte de efeito colateral perigoso

    Código:
    PROCEDURE BuscaWidget.
       DEF INPUT PARAMETER objEntrada AS HANDLE.
       DEF VAR objFilho AS HANDLE.
    
       objFilho = objEntrada:FIRST-CHILD.
    
       DO WHILE VALID-HANDLE(objFilho).
          IF objFilho:TYPE = "WINDOW" OR objFilho:TYPE = "FRAME" OR objFilho:TYPE = "FIELD-GROUP" THEN DO:
               MESSAGE 111 SKIP objFilho:TYPE SKIP objFilho:NAME VIEW-AS ALERT-BOX.
               RUN BuscaWidget(objFilho).
          END.
          ELSE DO:
               MESSAGE 222 SKIP objFilho:TYPE SKIP objFilho:NAME VIEW-AS ALERT-BOX.
          END.
          objFilho = objFilho:NEXT-SIBLING NO-ERROR.
       END.
    
    END PROCEDURE.
    
    André Simões curtiu isso.
  5. André Simões

    André Simões Sem Pontuação

    Muito obrigado Rafael, a procedure me ajudou muito!
    rafael.andrade curtiu isso.

Compartilhe esta Página