[RESOLVIDO] UPC PD4000

Discussão em 'EMS , HCM e Totvs 11' iniciado por elmo, Dezembro 12, 2013.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. elmo

    elmo Membro Ativo

    Bom dia a todos,
    Estou desenvolvendo uma UPC no PD4000, nessa UPC estou sobrepondo dois botões na tela de input do item (botão salvar e botão cancelar), até aí tudo bem. Acontece que criei triggers de acionamento dos botões, porém, elas não estão funcionando, o botão só funciona se eu clicar ou colocar o focus nele e apertar ENTER ou Barra de Espaço. Quando tento utilizar por exemplo o CTRL + S é acionado o botão padrão e não o novo botão que criei, tentei desabilitar o botão padrão e quando aperto CTRL + S nada acontece.
    Como sou novato em progress, estou supondo que o botão está na frame errada mas sei não como ajustar isso.
    Gostaria da ajuda de vocês.
    Código:
    if p-ind-event  = "AfterDisplayOrder" and
      p-ind-object = "CONTAINER"        then do:
    
    
        ASSIGN h-frame = p-wgh-frame:FIRST-CHILD /* pegando o Field-Group */
              h-frame = h-frame:FIRST-CHILD. /* pegando o 1o. Campo */
    
        DO WHILE h-frame                <> ?            or
                h_fl-item:name          <> "it-codigo"  and
                h_fl-qt-item:name      <> "qt-un-fat"  and
                wh-bt-custom:name      <> "btSaveItem" and
                wh-bt-custom-CanIt:name <> "btCancelItem":  
            IF h-frame:TYPE <> "field-group" THEN DO:
    
                IF h-frame:NAME = "it-codigo" THEN do:
                    ASSIGN h_fl-item = h-frame.                    
                end.
                IF h-frame:NAME = "qt-un-fat" THEN do:
                    ASSIGN h_fl-qt-item = h-frame.  
                end.
                IF h-frame:NAME = "nr-sequencia" THEN do:
                    ASSIGN h_fl-seq-item = h-frame.
                end.
                IF h-frame:name = "btSaveItem" then do:
                    ASSIGN wh-bt-padrao = h-frame.
                        CREATE BUTTON wh-bt-custom
                        ASSIGN FRAME    = wh-bt-padrao:FRAME
                              ROW      = wh-bt-padrao:ROW
                              COLUMN    = wh-bt-padrao:column
                              Height    = wh-bt-padrao:Height
                              WIDTH    = wh-bt-padrao:WIDTH
                              /*LABEL    = "Copia"*/
                              FLAT-BUTTON = NO
                              TOOLTIP  = "*" + wh-bt-padrao:TOOLTIP
                              SENSITIVE = NO
                              VISIBLE  = FALSE
                        TRIGGERS:
                            ON 'CHOOSE' PERSISTENT RUN upc/upc_pd4000.p ( INPUT "CbtSaveItem", INPUT "CbtSaveItem", INPUT p-wgh-object, INPUT p-wgh-frame , INPUT p-cod-table, INPUT p-row-table ).
                            ON 'RETURN' PERSISTENT RUN upc/upc_pd4000.p ( INPUT "RbtSaveItem", INPUT "RbtSaveItem", INPUT p-wgh-object, INPUT p-wgh-frame , INPUT p-cod-table, INPUT p-row-table ).
                            ON 'MOUSE-SELECT-CLICK' PERSISTENT RUN upc/upc_pd4000.p ( INPUT "MbtSaveItem", INPUT "MbtSaveItem", INPUT p-wgh-object, INPUT p-wgh-frame , INPUT p-cod-table, INPUT p-row-table ).
                            ON 'CTRL-S' PERSISTENT RUN upc/upc_pd4000.p ( INPUT "SbtSaveItem", INPUT "SbtSaveItem", INPUT p-wgh-object, INPUT p-wgh-frame , INPUT p-cod-table, INPUT p-row-table ).
                        END TRIGGERS.
                        wh-bt-padrao:TAB-STOP = YES.
                        wh-bt-custom:LOAD-IMAGE(wh-bt-padrao:IMAGE).
                        wh-bt-custom:LOAD-IMAGE-INSENSITIVE(wh-bt-padrao:IMAGE-INSENSITIVE).
                        wh-bt-custom:MOVE-TO-TOP().
                                   
                end.
                IF h-frame:name = "btCancelItem" then do:
                    ASSIGN wh-bt-padrao-CanIt = h-frame.
                        CREATE BUTTON wh-bt-custom-CanIt
                        ASSIGN FRAME    = wh-bt-padrao-CanIt:FRAME
                              ROW      = wh-bt-padrao-CanIt:ROW
                              COLUMN    = wh-bt-padrao-CanIt:column
                              Height    = wh-bt-padrao-CanIt:Height
                              WIDTH    = wh-bt-padrao-CanIt:WIDTH
                              /*LABEL    = "Copia"*/
                              FLAT-BUTTON = NO
                              TOOLTIP  = "*" + wh-bt-padrao-CanIt:TOOLTIP
                              SENSITIVE = NO
                              VISIBLE  = FALSE
                        TRIGGERS:
                            ON 'CHOOSE' PERSISTENT RUN upc/upc_pd4000.p ( INPUT "btCancelItem", INPUT "btCancelItem", INPUT p-wgh-object, INPUT p-wgh-frame , INPUT p-cod-table, INPUT p-row-table ).
                            ON 'RETURN' PERSISTENT RUN upc/upc_pd4000.p ( INPUT "btCancelItem", INPUT "btCancelItem", INPUT p-wgh-object, INPUT p-wgh-frame , INPUT p-cod-table, INPUT p-row-table ).
                            ON 'MOUSE-SELECT-CLICK' PERSISTENT RUN upc/upc_pd4000.p ( INPUT "btCancelItem", INPUT "btCancelItem", INPUT p-wgh-object, INPUT p-wgh-frame , INPUT p-cod-table, INPUT p-row-table ).
                            ON 'CTRL-S' PERSISTENT RUN upc/upc_pd4000.p ( INPUT "btCancelItem", INPUT "btCancelItem", INPUT p-wgh-object, INPUT p-wgh-frame , INPUT p-cod-table, INPUT p-row-table ).
                        END TRIGGERS.
                        wh-bt-padrao-CanIt:TAB-STOP = YES.
                        wh-bt-custom-CanIt:LOAD-IMAGE(wh-bt-padrao-CanIt:IMAGE).
                        wh-bt-custom-CanIt:LOAD-IMAGE-INSENSITIVE(wh-bt-padrao-CanIt:IMAGE-INSENSITIVE).
                        wh-bt-custom-CanIt:MOVE-TO-TOP().                  
                end.      
                ASSIGN h-frame = h-frame:NEXT-SIBLING.
            END.
            ELSE DO:
                ASSIGN h-frame = h-frame:FIRST-CHILD.
            END.
        END.
    end.
  2. LFBuozi

    LFBuozi Membro Participativo

    Um problema que vejo aqui é que o CTRL-S está para os dois botões, retire esta a trigger de um deles e veja se dá algum resultado.
  3. elmo

    elmo Membro Ativo

    Obrigado LFBuozi, estava analisando o PD4000 e existe um evento para o CTRL-S, estou utilizando esse evento.
    Código:
    IF p-ind-event        = "BeforeShortKeys" and
      p-cod-table        =  "KEY-CTRL-S" THEN DO:
      RUN upc/upc_pd4000.p ( INPUT "btSaveItem", INPUT "btSaveItem", INPUT p-wgh-object, INPUT p-wgh-frame , INPUT p-cod-table, INPUT p-row-table ).
    end.
    Meu problema agora é referente a ENTER que em qualquer parte do input do item pode ser pressionado e o PD4000 aceita como sendo um salvar item o que invalida meu botão customizado.
  4. elmo

    elmo Membro Ativo

    Olá, visto que seria difícil captura o evento enter, criei um nova lógica e estou testando. Quando concluir os testes irei disponibilizar no forum.
  5. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Pessoal,

    Eu particularmente nao gosto de usar variaveis globais para os handles das UPC, pois se aberto 2 sessoes da mesma rotina, a primeira se perde ou na segunda nao trata os dados da UPC.

    Sendo assim desenvolvi um processo diferente, conforme arquivo de exemplo em anexo, onde ao inves de criar de criar um outro botao eu simulo alguns eventos em cima do que ja existe (inclusive o CTRL-S).

    Teste a rotina enviada em anexo

    Arquivos Anexados:

    paininet curtiu isso.
  6. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Pessoal,

    Eu particularmente nao gosto de usar variaveis globais para os handles das UPC, pois se aberto 2 sessoes da mesma rotina, a primeira se perde ou na segunda nao trata os dados da UPC.

    Sendo assim desenvolvi um processo diferente, conforme arquivo de exemplo em anexo, onde ao inves de criar de criar um outro botao eu simulo alguns eventos em cima do que ja existe (inclusive o CTRL-S).

    Teste a rotina enviada em anexo
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página