Dificuldade em limpar o Form da memória no Delphi
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
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
Curtidas 0
Respostas
Mateus Ribeiro
16/07/2016
Bom dia!
Faça o seguinte...
Não esqueça de remover o FrmSaoLuiz01 do AutoCreate.
Qualquer duvida, só perguntar.
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
16/07/2016
Bom dia!
Faça o seguinte...
Não esqueça de remover o FrmSaoLuiz01 do AutoCreate.
Qualquer duvida, só perguntar.
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
16/07/2016
Hm entendi! Experimente no OnClose dos forms colocar: Action:= caFree;
GOSTEI 0
Mauricio Rodrigues
16/07/2016
Boa noite,
eu crio assim
FrmUtilitario := TFrmUtilitario.Create(FrmUtilitario);
FrmUtilitario.ShowModal;
FreeAndNil(FrmUtilitario);
eu crio assim
FrmUtilitario := TFrmUtilitario.Create(FrmUtilitario);
FrmUtilitario.ShowModal;
FreeAndNil(FrmUtilitario);
GOSTEI 0
Emanuel Gonçalves
16/07/2016
Bom dia, obrigado.
GOSTEI 0