Tela congelada

21/11/2005

1

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


Responder

Posts

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

21/11/2005

Pan7

Valeu Emerson

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

Um abraço,

Pan7


Responder