Página 1 de 1
DO EVENTS
Enviado: 06 Jun 2015 12:08
por Hasse
Bom dia colegas.
a)-Onde e como posso estudar e aprender algo a respeito de DO EVENTS e suas variantes ?
b)-Em quais situações o DO EVENTS traz problemas ?
Preciso aprender e dominar este comando / função (

? ) - Entender o que ele faz, qual a sua real utilidade.
Procurei no Fórum e nada me ajudou.
Procurei na Internet ->
https://support.microsoft.com/pt-br/kb/118468/pt-br, e a coisa complicou de vez.....
Aqui até melhorou um pouco ->
http://forum.baboo.com.br/index.php?/to ... -que-isso/
DO EVENTS
Enviado: 08 Jun 2015 11:20
por HASA

)
Eu uso o Do Events no caso de chamadas repetitivas a eventos EX:
form1.texto1.enable := .f.
form1.texto2.enable := .f.
form1.texto3.enable := .f.
form1.texto4.enable := .f.
do events
Quando carrego uma progressbar na indexação de arquivos, e sempre que executo vários comando de uma vez, o Do events libera o processamento impedindo aquela impressão que o sistema travou, ficando BRANCA a tela ou dando a mensagem que o sistema parou de responder ok.
Uso assim
:)Pos
HASA
DO EVENTS
Enviado: 08 Jun 2015 12:22
por alxsts
Olá!
Em uma tradução livre, "do events" significa "execute eventos". Mas quais eventos? Resposta: os eventos do sistema operacional e de outros processos em execução.
Este comando é indicado quando um aplicativo executa tarefas demoradas e/ou que consumam vários recursos do sistema, tomando tempo e recursos de outros processos. Quando se emite um DO EVENTS, estamos dizendo ao sistema operacional para dedicar uma fatia de seu tempo aos outros processos. Como o sistema operacional trabalha em multi-tarefa, o tempo é dividido entre as tarefas, de acordo com as prioridades definidas.
DO EVENTS
Enviado: 08 Jun 2015 17:41
por Hasse
Boa tarde.
Obrigado aos colegas HASA e alxsts que me encaminharam os seus conhecimentos a respeito.
Nos próximos dias postarei algumas dúvidas concretas, com códigos.
DO EVENTS
Enviado: 09 Jun 2015 19:27
por Hasse
Bom dia HASA e alsxts.
Voltando ao assunto DO EVENTS....
Quando iniciei o desenvolvimento do meu primeiro aplicativo em MiniGui, tive a inestimável colaboração do colega ASimoes.
No código há algumas linhas do tipo LABEL que informam o andamento do processo.
Estes LABEL estão, tanto na rotina de leitura de um Banco baseado em Oracle como também em pequenas funções chamadas a partir dela.
Quando o foco estava fora da tela (só tem uma), ou seja, o operador estava usando outro aplicativo naquele momento, as informações não eram atualizadas conforme os LABEL eram processados.
Para contornar isto, o colega ASimoes sugeriu usar o "HB_IdleSleep( 1 )" mais o "DO EVENTS". Isto deveria servir para "setar" o LABEL, como abaixo:
Código: Selecionar todos
FUNCTION Baixa_Prescr( oConexao )
...
...
_SetValue( 'label_1', 'form_1', 'Conexão ATIVA' )
Form_1.label_1.FontColor := RED
_SetValue( 'label_1', 'Form_1', '* * = = Abrindo conexão com o ' + c_NmHospCt + ' = = * *' )
_SetValue( 'label_2', 'Form_1', '* * = = ' + c_NmHospLg + ' = = * *' )
HB_IdleSleep( 1 )
DO EVENTS
...
...
Form_1.Title := "ConexÆo ATIVA com o Oracle do Hospital " + c_NmHospCt
Form_1.label_1.FontColor := BLUE
_SetValue( 'label_1', 'Form_1', '* * = = Conexão ABERTA com o ' + c_NmHospCt + ' = = * *' )
HB_IdleSleep( 1 )
DO EVENTS
...
...
Form_1.label_1.FontColor := GREEN
_SetValue( 'label_1', 'Form_1', 'Importando Prescrição n§ ' + c_Prescric )
Form_1.label_2.FontColor := BLUE
_SetValue( 'label_2', 'Form_1', 'Paciente: ' + c_Nome1 )
HB_IdleSleep( 1 )
DO EVENTS
...
...
Form_1.label_2.FontColor := BLUE
_SetValue( 'label_2', 'Form_1', 'Gravando a data/hora da BAIXA da Prescrição' )
HB_IdleSleep( 1 )
DO EVENTS
...
...
Form_1.label_1.FontColor := BLUE
_SetValue( 'label_2', 'Form_1', 'Download da Prescrição ' + c_Prescric + ' finalizada' )
HB_IdleSleep( 1 )
DO EVENTS
...
...
Form_1.label_1.FontColor := BLUE
_SetValue( 'label_1', 'Form_1', 'ENCERRADA a Conexão com o TASY - Aguardando novo período.' )
_SetValue( 'label_2', 'Form_1', 'Não há mais Prescrições para baixar.' )
HB_IdleSleep( 1 )
DO EVENTS
...
...
RETURN( l_Conex )
Realmente as informações são atualizadas mesmo que o foco não esteja na tela.
Aí começou a acontecer uma coisa estranha.
Em determinados pontos do processamento a rotina simplesmente encerra, retornando o processamento para a tela principal.
Ou seja: Parece que o DO EVENTS tem algumas particularidades especiais que devem ser observadas (ou é o HB_IdleSleep( 1 )

?).
DO EVENTS
Enviado: 10 Jun 2015 09:22
por HASA
Hasse, use somente o do events retire o outro comando ok.
HASA
DO EVENTS
Enviado: 10 Jun 2015 11:05
por alxsts
Olá!
Operações de preenchimento de textos de labels e text boxes não são pesadas, a não ser que estejam dentro de um loop. Se o código mostrado não estiver dentro de um loop, não é necessário invocar DO EVENTS tantas vezes. Deixe apenas a última chamada.
DO EVENTS
Enviado: 10 Jun 2015 11:35
por HASA

)
Olá Hasse, bem colocado pelo colega alxsts, use o DO EVENTS com moderação, ou seja, a cada carga de varios eventos 1 do events, ok.
:)Pos
HASA
DO EVENTS
Enviado: 11 Jun 2015 20:38
por Mario Mesquita
Pessoal, boa noite.
Tenho um programa que também, dá esse "branco" de tela em algumas operações, principalmente se o usuário tira o foco para outro aplicativo. Ao voltar ao programa ele fica com a tela aparentemente travada com aquele prompt do windows "girando". Embora ele continue processando, o usuário acha que está travado e aborta o programa. Imagino que isso dependa de coisas como: capacidade da máquina, quantas janelas abertas etc.
Vendo esse post, acho que o DO EVENTS pode resolver isso. Como nunca o usei, pergunto a vocês:
Qual as operações que mais podem causar esses problemas que o comando pode evitar?
Como devo usa-lo? No início do módulo ou antes de um loop em uma tabela, por exemplo?
Reparei que o uso do objeto BROWSE da MiniGui, deixa o programa lento algumas vezes. Seria o caso de usar o DO EVENTS na hora de abrir um browse, que em tese edita e navega numa tabela inteira?
Desde já, agradeço qualquer dica.
Saudações,
Mario.