Programa é finalizado mas fica executando

Delphi

22/09/2005

Pessoal Olá!

Estou com o seguinte problema, ao fechar minha applicatção ela ainda fica executando como se tivesse algum processo pendente.

Mas não consigo ver o que eh.
O programa é estruturado por formulários MDI...
Mas estava dando esse problema... até que coloquei relatórios feitos em Rave nele...
Daí ele começou a travar.

Try
Application.Terminate;
Finally
End;

Ele roda normal mas naum sai da memória.

Obrigada!

Silbene


Eneblis

Eneblis

Curtidas 0

Respostas

Eneblis

Eneblis

22/09/2005

Corrigindo...

Ele não estava dando esse problema... mas ...


GOSTEI 0
Marco Salles

Marco Salles

22/09/2005

Try 
Application.Terminate; 
Finally 
End; 


e assim mesmo que esta :?: :?: :?: :?:

E onde esta eesse código :?: :?: :?:


Em qual evento :?: :?: :?:


GOSTEI 0
Eneblis

Eneblis

22/09/2005

O código encontra-se no OnClose do Form Principal...

Eu estou usando forms MDI...

Mas percebi que isso esta acontecendo depois que fiz alguns relatórios do RAVE...

:cry: Eu so gostaria de finalizar o programa, para que ele saia da memória...


Silbene.


GOSTEI 0
Pezzin

Pezzin

22/09/2005

Eu não trabalho com MDI.
Tenho relatórios em Rave e Quick.

No OnClose do Modulo Principal eu mando fechar todas as tabelas do meu Data Module.

Uso Action:=CaFree no OnClose nos meus Forms de Cadastro e Movimento.


GOSTEI 0
Marco Salles

Marco Salles

22/09/2005

E onde esta eesse código


O código encontra-se no OnClose do Form Principal...


Try 
Application.Terminate; 
Finally 
End;  
e assim mesmo que esta :?: :?: :?:


Voce nun respondeu :cry: :cry: :cry: O código e esse mesmo ??? So tem isso no Onclose do formPrincipal :?: :?: Não to entendendo porque
não tem nada abaixo do Finally :?: :?:


GOSTEI 0
Eneblis

Eneblis

22/09/2005

Desculpe eu estava testando... com Try...
Mas no form principal... está assim:
[b:3d01a3160d]
procedure Tfmenu.FormClose(Sender: TObject; var Action: TCloseAction);
var x: Byte;
begin
if MDIChildCount > 0 then
for x := 0 to Pred(MDIChildCount) do MDIChildren[x].Close;
dm.ConexaoGefin.Connected := False;
Application.Terminate;
end;[/b:3d01a3160d]

No principal... está assim:
[u:3d01a3160d]
begin
fsplash := Tfsplash.create(Application);
fsplash.Show;
fsplash.Update;
Application.Initialize;
Application.CreateForm(Tdm, dm);
Application.CreateForm(Tfmenu, fmenu);
fsplash.Hide;
fsplash.Free;
Application.Run;
end.[/u:3d01a3160d]


GOSTEI 0
Marioguedes

Marioguedes

22/09/2005

Às vezes sou atormentado com este problema devido a um TTimer, que não costumo usar e TThreads, que uso bastante...

Talvez seja uma dica.


GOSTEI 0
Massuda

Massuda

22/09/2005

Não sei se isso vai resolver seu problema, mas faça estas alterações...
// no form principal
procedure Tfmenu.FormClose(Sender: TObject; var Action: TCloseAction); 
var x: Byte; 
begin 
  if MDIChildCount > 0 then 
    for x := Pred(MDIChildCount) downto 0 do 
      MDIChildren[x].Close; 
  dm.ConexaoGefin.Connected := False; 
end; 

// no projeto
begin 
  fsplash := Tfsplash.create(Application); 
  ...
  Application.Run; 
  Application.Terminate; 
end.


Com relação ao timer, experimente desativar o timer no OnClose/OnDestroy do form.

Com relação às threads, possivelmente elas é que estão causando o problema. Você tem certeza que as threads são encerradas quando você fecha seu programa?


GOSTEI 0
POSTAR