Interromper processos
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.
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
Curtidas 0
Respostas
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´.
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.
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
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:
T+
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