Dificuldade em limpar o Form da memória no Delphi

Delphi

16/07/2016

Bom dia

Tenho um form principal (FrmMigra) que esta sendo criado no auto-create e outros form´s que são chamados a partir de botões nesse form principal, o código de cada botão é o mesmo

Application.CreateForm(TfrmSaoLuiz01,frmSaoLuiz01);
frmSaoLuiz01.ShowModal;
frmSaoLuiz01.Release;

esse código é implementado no evento OnClick de cada botão, o detalhe está ao fechar o form que nesse exemplo é o (FrmSaoLuiz01).
Já tentei no evento
OnDestroy
FrmSaoLuiz01:= Nil;

já tentei no Onclose
já tentei opções com o freeandnil
Emanuel Gonçalves

Emanuel Gonçalves

Curtidas 0

Respostas

Mateus Ribeiro

Mateus Ribeiro

16/07/2016

Bom dia!

Faça o seguinte...
No botão que chama o Form:
FrmSaoLuiz01:= TFrmSaoLuiz01.Create(FrmMigra);
FrmSaoLuiz01.ShowModal;
FrmSaoLuiz01.Release;
FrmSaoLuiz01:= Nil;


Não esqueça de remover o FrmSaoLuiz01 do AutoCreate.

Qualquer duvida, só perguntar.
GOSTEI 0
Emanuel Gonçalves

Emanuel Gonçalves

16/07/2016

Bom dia!

Faça o seguinte...
No botão que chama o Form:
FrmSaoLuiz01:= TFrmSaoLuiz01.Create(FrmMigra);
FrmSaoLuiz01.ShowModal;
FrmSaoLuiz01.Release;
FrmSaoLuiz01:= Nil;


Não esqueça de remover o FrmSaoLuiz01 do AutoCreate.

Qualquer duvida, só perguntar.


Mateus no auto-create eu tenho apenas os Data módulo e o FrmMigra, o restante está fora do auto-create. O detalhe é que a memória só é limpa quanto fecho o FrmMigra

o FrmMigra tem 18 botões e cada um é responsável por fazer a importação do respectivo banco de dados de 18 lojas, então clico no botão 01 ele abre o FrmSaoLuiz01 para importar os dados da loja 01 feito isso a memória ram dispara em 300mb ou 400mb, após fechar o FrmSaoLuiz01 a memória não reduz e quando passo para o FrmSaoLuiz02 o problema se repete e desse modo o sistema vai acumulando memoria. são 18 Forms e cada um acumulando algo entre 200mb e 400mb
GOSTEI 0
Mateus Ribeiro

Mateus Ribeiro

16/07/2016

Hm entendi! Experimente no OnClose dos forms colocar: Action:= caFree;
GOSTEI 0
Mauricio Rodrigues

Mauricio Rodrigues

16/07/2016

Boa noite,

eu crio assim

FrmUtilitario := TFrmUtilitario.Create(FrmUtilitario);
FrmUtilitario.ShowModal;
FreeAndNil(FrmUtilitario);
GOSTEI 0
Emanuel Gonçalves

Emanuel Gonçalves

16/07/2016

Bom dia, obrigado.
GOSTEI 0
POSTAR