O Fill-In Field é um Widget, segue abaixo uns eventos com funções importantes: ENTRY ---> Qualquer ação do usuário ou da aplicação que dá foco a um Widget CHOOSE ---> Qualquer ação que causa a seleção de um botão ou um menu LEAVE ---> Qualquer ação do usuário ou da aplicação que tira o foco de um widget VALUE-CHANGED --> Qualquer ação que muda o valor atual de um toggle-box, radioset ou selection list INTERATION-CHANGED ---> Qualquer ação que muda o registro selecionado de um browse. RESUMO: Entry é executado quando um widget recebe o foco e LEAVE quando perde o foco. Exemplo: Código: ON ENTRY OF field2 DO: MESSAGE "Entrei no Field2". END. ON LEAVE OF field2 DO: MESSAGE "Sai do Field2". END. Se precisar de um exemplo prático de programa (Caracter, orientado a eventos) me avisa que eu posto aqui.
Entao, no meu caso, tenho um campo fill-in, que esta mapeado com o campo de uma tabela, fiz o seguinte codigo que executa ao confirmar a alteração dos dados: Código: apply "entry" to tabela.observacao in frame fpage0. return no-apply. Mas mesmo asism, o foco não volta para o campo, o que poderá estar faltando?
Tenta assim: Código: ENABLE tabela.observacao WITH FRAME fpage0. apply "entry" to tabela.observacao in frame fpage0. return no-apply. Veja um exemplo : Código: DEF VAR field1 AS CHAR INITIAL "Inicio" FORMAT "X(10)" LABEL "Start". DEF VAR field2 AS CHAR INITIAL "Campo" FORMAT "x(10)" LABEL "Destino". DEF BUTTON btn-exit LABEL "Saida". DEF FRAME frame1 SKIP(2) field1 SPACE(10) field2 SKIP(2) btn-exit WITH NO-BOX CENTERED SIDE-LABELS. ON ENTRY OF field2 DO: MESSAGE "Entrando no campo". END. ON LEAVE OF field2 DO: MESSAGE "Saindo do campo". END. /* Bloco principal */ DISPLAY field1 field2 WITH FRAME frame1. ENABLE ALL WITH FRAME frame1. WAIT-FOR CHOOSE OF btn-exit. SE NÃO RESOLVER MANDA O PROGRAMA INTEIRO ... ABRAÇOS