Boa Tarde Fiz uma UPC para o programa EQ0506 para o Botão Alocação. A UPC é só para verificar uma informação e retornar a mensagem. após a mensagem o Botão Alocação deverá fazer a sua função normalmente. Mas, assim que o sistema mostra a mensagem ele não faz a função dele, ou seja, clicando no botão Aloca Item Selecionado, ele mostra a mensagem da UPC, mas ele não continua, ou seja, não aloca os pedidos. como fazer o sistema executar a upc e depois continuar normalmente? programa UPC-eq0506b.p: IF VALID-HANDLE(wh-bt-aloca) THEN DO: /*Maicon*/ ON 'choose':U OF wh-bt-aloca PERSISTENT RUN upc/upc-eq0506b3.p (input p-wgh-frame, INPUT r-embarque ). END. /*programa upc-eq0506b3: */ define input parameter p-wgh-frame as handle no-undo. define input parameter p-r-embarque AS ROWID no-undo. DEF BUFFER b-embarque FOR embarque. /*Cria uma tabela cópia do emitente com o nome de b-teste*/ DEF BUFFER b-pre-fatur FOR it-pre-fat. /*Cria uma tabela cópia do emitente com o nome de b-teste*/ if valid-handle( p-wgh-frame ) then do: FIND FIRST b-embarque NO-LOCK WHERE ROWID(b-embarque) = p-r-embarque NO-ERROR. FIND FIRST b-pre-fatur WHERE b-pre-fatur.nr-embarque = b-embarque.nr-embarque NO-ERROR. IF AVAIL b-pre-fatur THEN DO: MESSAGE b-pre-fatur.nr-pedcli VIEW-AS ALERT-BOX INFO BUTTONS OK. END. END.
Aí está um problema, você substituiu o evento "choose" do botão, assim ele não executa o programa antigo e chama sua UPC. Neste caso você terá que criar um novo botão que vai ficar no lugar deste que você quer alterar e colocar um "visible = no" para o botão padrão. Então no "choose" deste botão novo você coloca a sua mensagem e depois faz um "apply 'choose' to wh-botao-antigo", assim você executa o que precisa e faz um clique no padrão. Veja se consegue, enquanto isso vou fazer um exemplo limpo aqui para você, porque as UPCs que uso isto estão meio complicadas.
Aqui tem um exemplo de uma UPC para a tela CD0204 onde substitui o botão de cópia de item: Código: define input parameter p-ind-event as character. define input parameter p-ind-object as character. define input parameter p-wgh-object as handle. define input parameter p-wgh-frame as widget-handle. define input parameter p-cod-table as character. define input parameter p-row-table as rowid. DEF NEW GLOBAL SHARED VAR wh-objeto AS WIDGET-HANDLE NO-UNDO. DEF NEW GLOBAL SHARED VAR wh-objeto-aux AS WIDGET-HANDLE NO-UNDO. DEF NEW GLOBAL SHARED VAR wh-bt-padrao AS WIDGET-HANDLE NO-UNDO. DEF NEW GLOBAL SHARED VAR wh-bt-custom AS WIDGET-HANDLE NO-UNDO. ASSIGN wh-objeto = p-wgh-frame:FIRST-CHILD. DO WHILE VALID-HANDLE(wh-objeto): IF wh-objeto:TYPE = "frame" THEN DO: IF NOT VALID-HANDLE( wh-bt-padrao ) THEN DO: IF wh-objeto:NAME = "panel-frame" THEN DO: ASSIGN wh-objeto-aux = wh-objeto:FIRST-CHILD. DO WHILE VALID-HANDLE(wh-objeto-aux): IF wh-objeto-aux:NAME = "bt-cop" THEN DO: ASSIGN wh-bt-padrao = wh-objeto-aux. 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 = YES TOOLTIP = "* Botão customizado" SENSITIVE = YES VISIBLE = TRUE TRIGGERS: ON 'CHOOSE' PERSISTENT RUN upc/upc-cd0204.p ( INPUT "customizado", INPUT "customizado", INPUT p-wgh-object, INPUT p-wgh-frame , INPUT p-cod-table, INPUT p-row-table ). ON 'RETURN' PERSISTENT RUN upc/upc-cd0204.p ( INPUT "customizado", INPUT "customizado", INPUT p-wgh-object, INPUT p-wgh-frame , INPUT p-cod-table, INPUT p-row-table ). ON 'MOUSE-SELECT-CLICK' PERSISTENT RUN upc/upc-cd0204.p ( INPUT "customizado", INPUT "customizado", INPUT p-wgh-object, INPUT p-wgh-frame , INPUT p-cod-table, INPUT p-row-table ). ON 'CTRL-C' PERSISTENT RUN upc/upc-cd0204.p ( INPUT "customizado", INPUT "customizado", 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 wh-objeto-aux:TYPE = 'field-group' THEN ASSIGN wh-objeto-aux = wh-objeto-aux:FIRST-CHILD. ELSE ASSIGN wh-objeto-aux = wh-objeto-aux:NEXT-SIBLING. END. END. END. END. IF wh-objeto:TYPE = 'field-group' THEN ASSIGN wh-objeto = wh-objeto:FIRST-CHILD. ELSE ASSIGN wh-objeto = wh-objeto:NEXT-SIBLING. END. IF p-ind-event = "customizado" THEN DO: MESSAGE "Você está no botão customizado, agora ele fará o choose no botão padrão." VIEW-AS ALERT-BOX INFO BUTTONS OK. APPLY 'CHOOSE':U TO wh-bt-padrao. END.
bom dia galera,tudo bem? sou iniciante em UPC e estou com uma duvida que para muitos é muito simples. a UPC que estou criando irá adicionar um togle-box para o simples nacional e um fil-in para limite de crédito. Pois bem o togle-box é um campo lógico e o assign recebe o comando checked ex: ASSIGN wgh-tg-simples-nac:CHECKED = FALSE no caso do fil-in por ele não ser um campo lógico qual comando devo usar para substituir o CHECKED. OBRIGADO