Como Destruir um formulario executado em Show ?

Delphi

13/07/2012

Olá bom dia!

Tenho o seguinte problema:

Tenha uma aplicacao rodando em ShowModal e desejaria
passar para somente Show, até ai tudo bem.
O problema começa quando quero destruir o Formulario usando esta instrução FreeAndNil(frm)
Quando usando ShowMNodal tenho o conmtrole do fluxo quando desejo fechar um modulo da aplicacao,
até ai tudo bem, mas com Show somente, não tem como eu saber quando a aplicacao encerra o modulo,
pois preciso destruir este formulario.
Consigo destruir os outros objetos, mas o formulario não vejo como.

Então, pergunto como destruir este formulario ?


Desde já meus agradecimentos a quem puder ajudar.


100+


ANT.CARLOS/SP



-------exemplo------------------------------------
If Frm_Grupos = nil Then Begin
Application.CreateForm(TDMGRU, DMGRU);

DMGRU.Cds_Grupos.open;
Application.CreateForm(TFrm_Grupos,Frm_Grupos);

Frm_Grupos.Show;

End Else Begin

Frm_Grupos.Show;

End;
--------------------------------------------------



Antonio Jesus

Antonio Jesus

Curtidas 0

Respostas

Gustavo Bretas

Gustavo Bretas

13/07/2012

Antonio, no evento OnClose do formulário, eu faço da seguinte forma:

procedure TfrmCadPadrao.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;


No meu caso é viável por que eu utilizo formulário herdado, então não preciso redeclarar nos demais formulários!
GOSTEI 0
Eliel Martins

Eliel Martins

13/07/2012

Bom dia, Antonio !

Não sei se entendi direito, mas você pode fazer da seguinte forma :

No evento onclose do form que você vai chamar, ele é destruido.

FreeAndNil(Form2);


Ai no caso você não precisará do ELSE, sempre que chamar será criado.


Espero ter ajudado, qualquer coisa se não forma dessa forma que gostaria de fazer me avise.

Atenciosamente,

Eliel G. Martins
GOSTEI 0
Antonio Jesus

Antonio Jesus

13/07/2012

Olá bo tarde!
Obrigado pela atenção!

Fiz destruindo o form no onClose, funcionou, mas com uma resalva, gera um Exception depois de
destruido.

Meu form é herdado de um formPai, o erro não aconte lá, pois não destru-o no form-Pai.
O erro acontece depois da destruição dos objetos no End da procedure onclose;
Postei no 4Shared as imagens de erro.

favor acessar este link e ver o erro gerado.

http://www.4shared.com/photo/220J2JkM/imagem3.html


100+

ANT.CARLOS/SP
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

13/07/2012

Você está destruindo vários forms que talvez sejam usados após o fechamento deste. Acredito que a melhor opção seja esta dada pelo amigo acima, definindo a variável Action como caFree.
GOSTEI 0
Antonio Jesus

Antonio Jesus

13/07/2012

Olá boa noite!

então fiz o teste com um form herdado usei destruir no formPai e no form sem herança usei destruir no onclose e funcionou, blz e muito obrigado pela atenção de todos.


100+

ANT.CARLOS/SP
GOSTEI 0
POSTAR