Problema: Em determinadas partes no programa existem processos que podem demorar vários minutos para serem concluídos. Muitas vezes o usuário desiste e deseja cancelar o processamento. Como permitir este cancelamento? Solução: Em aplicativos para Windows é comum, em processamentos demorados, o programa mostrar uma janela de diálogo avisando que o processo pode levar um tempo extra. Nesta mesma janela normalmente coloca-se também um botão "Cancelar" que dá ao usuário a opção aguardar ou desistir do processo. Para fazer isto em um aplicativo Delphi, siga os passos abaixo: - 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 (vou chamá-lo de 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;
O conteúdo desta página pode ajudar alguém? Compartilhe!