Olá a todos, um amigo me perguntou como ele poderia fazer para atualizar os registros de um browse automaticamente de tempos em tempo. Bom como essa pode ser a duvida de outros e minha também caso eu precise novamente desta rotina vou postar um exemplo em progress de como colocar essa rotina para executar automaticamente a cada x segundos usando o componente PSTimer do AppBuilder.
Vamos ver um exemplo simples de uma rotina que deve ser executada automaticamente a cada 15 segundos.
Incluía na tela os seguintes objetos da palette na tela:
PSTimer: responsável por disparar eventos de tempo em tempo, ao inserir um PSTimer na tela ele cria automaticamente uma variável do tipo COMPONENT-HANDLE com o nome ch + nome do componente e é a está variável que devemos usar para acessar as propriedades e métodos.
Text: Para apresentarmos o tempo para próxima execução, vamos chama-lo de fch-relogio.
Toogle Box: Para pausar ou iniciar o contador, vamos chama-lo de chb-para.
De dois clique sobre o PSTimer e altere a propriedade Interval para 60.
No definitions da tela declare um variável do tipo inteiro para controlar a próxima execução:
DEFINE VARIABLE vControle AS INTEGER NO-UNDO.
Na trigger OCX.Tick do PSTimer use o seguinte código:
if vControle < integer(time) then ASSIGN vControle = integer(time) + 15. assign fch-relogio:screen-value in frame {&frame-name} = "Próxima Execução em: " + string(vControle - integer(time)). IF integer(time) = vControle THEN DO: MESSAGE "Executar agora" VIEW-AS ALERT-BOX INFO BUTTONS OK. END.
Na trigger VALUE-CHANGED do chb-parar (toogle box) use o seguinte código para parar ou iniciar o contador:
if chb-parar:CHECKED in frame {&frame-name} = yes then do: ASSIGN chCtrlFrame:pSTimer:ENABLED = FALSE fch-relogio:screen-value in frame {&frame-name} = "Próxima Execução em: --". end. if chb-parar:CHECKED in frame {&frame-name} = no then do: ASSIGN chCtrlFrame:pSTimer:ENABLED = true. end.
Por enquanto é isso pessoal.
Qualquer duvida ou observação por favor comentem.
muito bom seus posts sobre progress, estou começando e esta me ajudando muito !! poste mais exemplos de progress
Legal que tenha gostado e que os post estejam ajudando!
Qualquer duvida pode mandar, talvez possamos ajudar!