Fórum Duvida com o Application.ProcessMessages #255162
20/10/2004
0
Olá pessoal, minha dúvida é a seguinte:
Quando em uma rotina ela é grande estou usando o Application.ProcessMessages; pra ´liberar´ e deixa o programa mais rápido.Minha questao é: [b:eaa188b681]Existe algum problema em eu usar muitos Application.ProcessMessages; em uma função e em um Form?[/b:eaa188b681]
Desde ja agradeco.
Quando em uma rotina ela é grande estou usando o Application.ProcessMessages; pra ´liberar´ e deixa o programa mais rápido.Minha questao é: [b:eaa188b681]Existe algum problema em eu usar muitos Application.ProcessMessages; em uma função e em um Form?[/b:eaa188b681]
Desde ja agradeco.
Titanius
Curtir tópico
+ 0
Responder
Posts
20/10/2004
Emerson Nascimento
pelo que eu sei não há problema. esse método só é executado se há alguma ´mensagem´ do windows a ser processada. por exemplo, suponha que seu formulário esteja rodando uma rotina demorada e o seu programa seja ´sobreposto´ por um outro programa. quando você retorna ao seu programa, é enviada uma mensagem para que o seu formulário seja ´redesenhado´. se você ainda estiver dentro daquela rotina demorada, o form não será redesenhado, a menos que você faça uma chamada ao ProcessMessages, que informa ao sistema para processar a mensagem de ´redesenhar´ o form.
o caso de ´redesenhar´ é apenas um exemplo. você pode querer colocar um botão ´Cancelar´ no seu formulário, para que uma determinada rotina seja cancelada a qualquer momento pelo usuário. para isso você precisa do ProcessMessages em cada iteração do seu laço/rotina, para que seja processada a mensagem informando que o botão foi clicado, para qe você execute as ações necessárias.
se não houver mensagens pendentes, o ProcessMessages não faz nada. eu nunca percebi perda de desempenho com várias chamadas ao ProcessMessages e até recomendo seu uso.
o caso de ´redesenhar´ é apenas um exemplo. você pode querer colocar um botão ´Cancelar´ no seu formulário, para que uma determinada rotina seja cancelada a qualquer momento pelo usuário. para isso você precisa do ProcessMessages em cada iteração do seu laço/rotina, para que seja processada a mensagem informando que o botão foi clicado, para qe você execute as ações necessárias.
se não houver mensagens pendentes, o ProcessMessages não faz nada. eu nunca percebi perda de desempenho com várias chamadas ao ProcessMessages e até recomendo seu uso.
Responder
Gostei + 0
20/10/2004
Titanius
valeu manow :D
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)