Velha duvida para liberar memoria( Form )

Delphi

03/01/2007

Opa Galera,

já li de tudo sobre liberar memória de um formulário criado mas ainda possuo duvidas

para a criação normal eu utilizo:

Form := TForm.Create(Self);
Form.ShowModal;

e no onClose do Form eu dou um:

Action := caFree;
Form := NIL

Até aqui está correto?

Mas existem situação em que eu preciso recuperar alguns valores do formulário

entao eu coloco

Form2 := TForm2.Create(Self);

if Form2.ShowModal = mrOk then
label.caption := QueryNome.AsString;

Neste caso, se eu colocar no onclose do Form2

Form2 := NIL

ele nao me recupera os valores

O Action funciona

Action := caFree;

Como devo prosseguir neste caso?

Nos últimos tempos, cansado de utilizar este mesmo formato, resolvi dar uma mudada. Agora crio os formulário com

Form3 := TForm3.Create(NIL);
Form3.ShowModal;

e no onclose dou um
Action := caFree
Form3 := NIL

e se precisar recuperar algum valor dou apenas um
Action := caFree

Por Favor, alguem me de uma luz pois nao sei o que pode estar ocorrendo por trás do meu sistema.

Obrigado Abraços e Aguardo Repostas


Tremonti

Tremonti

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

03/01/2007

Colega,

Sempre utilizo assim para formulários SDI (apesar da redundância):

  Application.CreateForm(TFormAZRpt1, FormAZRpt1);
  try
    FormAZRpt1.ShowModal;
  finally
    FormAZRpt1.Release;
    FreeAndNil(FormAZRpt1);
  end;



GOSTEI 0
Tremonti

Tremonti

03/01/2007

e no onclose do formulário criado, vc nao coloca nada?!


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

03/01/2007

Colega,

No caso de formulários SDI (Modais) e não coloco nada no OnClose.


GOSTEI 0
POSTAR