Criei um botao com uma upc normalmente. O botao aparece e tudo. CREATE BUTTON wh-btn-tul ASSIGN WIDTH = wh-btn-inc:WIDTH HEIGHT = wh-btn-inc:HEIGHT FRAME = p-wgh-frame NAME = "wh-btn-tul" SENSITIVE = TRUE X = wh-btn-inc:X + 380 Y = wh-btn-inc:Y + 3 triggers: on choose persistent run upc/upc-tul.p(input wh-wgh-res:SCREEN-VALUE). end triggers. Porem no evento on choose eu chamo o programa upc-tul e passo como parametro o screen-value do wh-wgh-res (numero solicitação). Porem esse valor sempre é 1, (ele pega somente o primeiro handle do campo, nao atualiza). Tudo bem que é persistent, entao eu fiz diferente, no evento VIEWER fiz assim: IF VALID-HANDLE(wh-btn-tul) THEN DO: ON 'choose':U OF wh-btn-tul PERSISTENT RUN upc/upc-tul.p(input wh-wgh-res:SCREEN-VALUE). END. e assim ele não faz nada, ação nem uma.
Boa tarde, Antes de mais nada admito q posso estar enganada, pois não trabalho com persistentes dessa forma. Eu seto uma handle para o programa persistente e executo a procedure que quero da persistente, dessa forma: IF NOT VALID-HANDLE(hUpcTul) THEN RUN upc\upc-tul.p PERSISTENT SET hUpcTul. Depois, digamos que eu precise da procedure "calcular" da persistente, então eu executo: RUN calcular in hUpcTul(input... output...). Até onde eu sei, as persistentes tem que ter o main-block sem comandos, ou no máximo setando parâmetros que vai usar.. Então se o main-block da sua persistente estiver assim, e vc está apenas executando a persistente, sem chamar procedure, então não vai mesmo realizar nenhuma ação. Mas, como eu disse, posso estar enganada, é um "tiro no escuro", uma vez que não sei o código da sua persistente. De qualquer forma, tente olhar pra ela, pode ser q o problema esteja nela e não no evento do botão... Espero ter ajudado de alguma forma.
Caro colega, Veja exemplo que postei no post http://www.4each.com.br/threads/upc-sem-utilizar-nenhuma-variável-global.7963/page-3#post-26910 , é só adaptar a sua chamada.