Fórum Posso usar Abort depois do form fechado? #355489
17/03/2008
0
Tenho um form que é aberto enquanto um loop é processado.
Coloquei um botão para cancelar o loop. Se o usuário confirma o cancelamento sai do loop e o form é fechado.
Se coloco para fechar o form [u:8b8ed3fb38]depois[/u:8b8ed3fb38] do Abort [u:8b8ed3fb38]ele não é fechado [/u:8b8ed3fb38]então coloquei desta forma:
while...
if cancelar...
begin
[color=darkblue:8b8ed3fb38][b:8b8ed3fb38]Form.Close;
Abort;[/b:8b8ed3fb38][/color:8b8ed3fb38]
end;
Assim o form é fechado mas [color=darkblue:8b8ed3fb38]isto pode ocasionar algum problema[/color:8b8ed3fb38]?
Asales
Curtir tópico
+ 0Posts
17/03/2008
Massuda
Gostei + 0
17/03/2008
Asales
ao processar uma grande quantidade de dados mostro uma tela com um progressbar que é preenchido de acordo com um loop.
Coloquei um botão para cancelar e ao clicar neste botão o processamento é interrompido e se o usuário confirmar então o processo é abortado e o form fechado.
Só que se coloco o [color=darkblue:778effb9dd]Abort antes do form.close o formulário [u:778effb9dd]não é fechado[/u:778effb9dd][/color:778effb9dd].
Só funciona se [color=darkblue:778effb9dd]fecho o formulário e [u:778effb9dd]depois dou o Abort[/u:778effb9dd][/color:778effb9dd].
Minha dúvida é se [color=darkblue:778effb9dd]isso pode causar algum problema[/color:778effb9dd]: Abort num loop dentro de um form que foi destruído (utilizo ´Action := caFree´ ao fechar o formulário).
Exemplo do que faz loop:
for i:= 1 to 100000 do
begin
Application.ProcessMessages;
if Cancelar Then [color=darkred:778effb9dd]// interrompo o processo[/color:778effb9dd]
begin
if MessageDlg(´Deseja Cancelar ?´,mtConfirmation,[mbYes,mbNo],0) = mrYes Then
begin
Form1.close; [color=darkred:778effb9dd]// aqui o formulário é fechado (Action := caFree)[/color:778effb9dd]
[color=darkblue:778effb9dd]Abort[/color:778effb9dd]; [color=darkred:778effb9dd]// depois vem o Abort (ele surte algum efeito já que fechei o formulário?)[/color:778effb9dd]
end;
end;
Gostei + 0
18/03/2008
Massuda
raise EAbort.Create(...);
Gostei + 0
18/03/2008
Asales
estarei testando.
Obrigado
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)