Tela congelada

21/11/2005

Segue uma duvida:

Tenho uma aplicação que executa um processo longo.
Ao executar, este processo inicia normalmente. Acontece que se eu mudar para qualquer outra janela que estiver aberta, quando retorno para a janela da aplicação ela está congelada.
O processo executa perfeitamente até o final mas com a tela congelada, inclusive o progressbar.

Outra dúvida: como colocar um botão para o usuário cancelar o processo, caso queira.

Grato,

Pan7


Pan7

Respostas

21/11/2005

Emerson

para não ter esse efeito de tela congelada, utilize Application.ProcessMessages na iteração do seu laço (supondo que esse ´processo lento´ se dê por conta de um loop)
seria algo assim:
lCancela := False;
while not tabela.eof and not lCancela do
begin
  {faz alguma coisa}
  tabela.next;
  {incrementa a barra de progresso}
  application.processmessages;
end;

if lCancela then
  ShowMessage(´Processo cancelado pelo usuário´);


essa variável lCancela deverá ser uma variável private do tipo boleana para controle do cancelamento do processo.
daí vc coloca um botão cancelar no seu form e, no onclick desse botão, põe o seguinte código:
lCancela := Application.MessageBox(´Deseja realmente cancelar o processo´,´Cancelar´,MB_TASKMODAL + MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON2) = mrYes;



Responder Citar

21/11/2005

Pan7

Valeu Emerson

Vou testar ! (Assim que a bendita terminar de rodar !!!)

Um abraço,

Pan7


Responder Citar