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.
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.
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.