Interromper processos

Delphi

23/08/2003

Gostaria de saber como faço para interromper um processo em andamento.
Quando estou executando algum processo em uma tabela da forma

table1.first;
while not(table1.eof) do
begin
.... processo....
table1.next;
end;
table1.close;

o único modo que consigo interromper é com o ctrl+alt+del.

Algum dos colegas pode me dar uma luz?

Obrigado.


Catunda

Catunda

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

23/08/2003

Colega,

Existem várias formas, vou sugerir uma que lhe dará condições de entender o funcionamento:

Coloque um CheckBox com caption ´Cancelar´.

table1.first; 
while not(table1.eof) do 
begin 
  Application.ProcessMessages; // Isto é extremamente necessário
  if CheckBox1.Checked then exit;
.... processo.... 
table1.next; 
end; 
table1.close; 


No entanto, é conveniente lembrar que o cancelamento de um processo pode implicar numa série de inconsistências, pricipalmente se estiver manipulando um banco de dados fora de uma transação ou que não suporte.


GOSTEI 0
Afarias

Afarias

23/08/2003

Uma forma é:

1 - Crie uma variável global (ou um Field no Form) da forma:

CancelarProcesso: Boolean;

2 - coloque um botão ´Cancelar´ com um código:

CancelarProcesso := True;

3 - escreva seu código na forma:

procedure MeuProcesso;
begin
  CancelarProcesso := False;

  table1.first; 
  while not(table1.eof) do 
  begin 
     .... processo.... 
     table1.next

    Application.ProcessMessages;
    if CancelarProcesso then
       Break;  // ou Exit -- más tem o Close depois do loop...

  end; 
  table1.close
end;


T+


GOSTEI 0
POSTAR