segunda-feira, 14 de setembro de 2009

Permitindo cancelar processo demorado

{- Vamos considerar em nosso exemplo que o processamento ocorre na unit do Form1. - Declare, na seção public do Form1, uma variável boolean.}


public;
Cancelar: boolean; {- Crie um novo form (Form2);

- Coloque um botão neste novo form. Programe o OnClick deste botão conforme abaixo:


Form1.Cancelar := true; - Na parte onde ocorre o loop do processamento demorado coloque algo como:}


try
{ Antes de começar o processamento }
Form2.Caption := 'Processamento demorado...';
Form2.Show;
{ No início do loop "Cancelar" precisa ser false }
Cancelar := false;
{ Aqui inicia o loop do processamento demorado }
while {...} do begin
{ ... Processa algo aqui... }
{ Permite que o programa processe mensagens do Windows }
Application.ProcessMessages;
{ Se a variável "Cancelar" foi alterada para true... }
if Cancelar then begin
ShowMessage('Operação cancelada pelo usuário.');
Break; { Sai do loop }
end;
end;
finally
Form2.Close;
end; {Não se esqueça de que o Form1 precisa usar Form2 e vice-versa. }

Nenhum comentário:

Postar um comentário