processos demorados - tela do form congela

17/06/2009

0

A meses estou procurando uma maneira de não deixar a tela do form congelada ao executar processos demorados...
Caso o usuário minimizar a tela, tentar arrastar, .... o form fica congelado. Apenas no final do processo os dados são atualizados...
Tenho label que vai informando o que está sendo feito durante o processo... mas acaba não funcionando, pois o mesmo, na maioria das vezes fica tipo que travado.
Fiz um exemplo simples abaixo:

for i:=1 to 1000 do
begin
a:=2;
sleep(10);
label1.caption:=inttostr(i);
label1.refresh;
end;

Nesse caso se ficar clicando no form a tela fica congelada até o final do processo. Mas esse é um exemplo simples que fiz apenas para demostrar...

Já tentei label1.update não deu certo. Também já tentei form1.refresh, form1.update e não consigo resultado.

Aguardo ajuda!
Obrigado!


Briciosm

Briciosm

Responder

Post mais votado

17/06/2009

use um [b:315a634aff]ProcessMessages[/b:315a634aff]

vai ficar assim:
for i:=1 to 1000 do 
begin 
  a:=2; 
  sleep(10); 
  label1.caption:=inttostr(i); 
  label1.refresh; 
  Application.ProcessMessages;
end;


ele vai deixa a aplicação fazer outras coisas enquanto faz o processo.

Espero que ajude.
Att,
.lg.


.lg.

.lg.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar