processos demorados - tela do form congela

Delphi

17/06/2009

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

Curtidas 0

Melhor post

.lg.

.lg.

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.


GOSTEI 1
POSTAR