Fechar Form: Release ou Free ??

Delphi

29/10/2005

pessoal, eu criei um FormPadrao (pai) no qual eu derivo os forms (filhos) do meu programa, então ja deixo um botão Fechar (close) no form e no evento OnClose do form pai eu uso

[i:4a2512ba2d]Action := caFree;
Release;[/i:4a2512ba2d]

Não se ao certo se é necessário usar essas duas linhas, ou se bastasse usar o [b:4a2512ba2d]Action := caFree[/b:4a2512ba2d] ou apenas [b:4a2512ba2d]o Release[/b:4a2512ba2d]

Alguém poderia me dar um help,

abraço,


Eniorm

Eniorm

Curtidas 0

Respostas

Alcantarus

Alcantarus

29/10/2005

[quote:083e1a51ed=´Enio Marconcini´]pessoal, eu criei um FormPadrao (pai) no qual eu derivo os forms (filhos) do meu programa, então ja deixo um botão Fechar (close) no form e no evento OnClose do form pai eu uso

[i:083e1a51ed]Action := caFree;
Release;[/i:083e1a51ed]

Não se ao certo se é necessário usar essas duas linhas, ou se bastasse usar o [b:083e1a51ed]Action := caFree[/b:083e1a51ed] ou apenas [b:083e1a51ed]o Release[/b:083e1a51ed]

Alguém poderia me dar um help,

abraço,[/quote:083e1a51ed]

Caro amigo,

Eu particularmente uso no Evento OnClose do Form:

FreeAndNil(fmFormulario), onde fmFormulario é o nome de seu Form.

Abraços,

Alcantarus.


GOSTEI 0
Eniorm

Eniorm

29/10/2005

reeAndNil(fmFormulario), onde fmFormulario é o nome de seu Form


Certo, mas no meu caso que teria que colocar o FreeAndNill no formPadrao,

FreeAndNill(formPadrao)

isso não funcionaria para os forms filhos que foram herdados de formPadrao,

como proceder neste caso?


GOSTEI 0
Alcantarus

Alcantarus

29/10/2005

[quote:3887484f19=´Enio Marconcini´]
reeAndNil(fmFormulario), onde fmFormulario é o nome de seu Form


Certo, mas no meu caso que teria que colocar o FreeAndNill no formPadrao,

FreeAndNill(formPadrao)

isso não funcionaria para os forms filhos que foram herdados de formPadrao,

como proceder neste caso?[/quote:3887484f19]

Coloque no OnClose dos Filhos tb...


Abracos,

Alcantarus.


GOSTEI 0
Michael

Michael

29/10/2005

Olá!

Como liberar um form depende essencialmente de como ele foi criado.

É preciso ter em mente o seguinte: se os forms forem criados automaticamente junto com a aplicação, então ela é que deve liberá-los. Se forem criados via código, com a possibilidade se serem destruídos posteriormente, é necessário ter certeza de passar como Owner [b:bcb4b8a331]nil[/b:bcb4b8a331], e não [b:bcb4b8a331]Self [/b:bcb4b8a331]nem [b:bcb4b8a331]Application[/b:bcb4b8a331].

Não proceder assim vai causar memory leaks na aplicação, reduzindo sua perfomance e em alguns casos, travar o PC.

Esse é um excelente artigo sobre criação de formulários: [url=http://delphi.about.com/od/adptips2005/qt/nilselfapp.htm]TForm.Create(?) Nil, Self or Application?[/url]

[]´s


GOSTEI 0
Raserafim

Raserafim

29/10/2005

no OnClose do form padrão vc pode colocar:
  FreeAndNill(Self)

o Self vai ser substituido pelo nome do form atual. e retire o inherited


GOSTEI 0
Martins

Martins

29/10/2005

Poderia ser assim tb.!

var
   FClient : TForm;
begin
   FClient := TF_Clientes.Create(nil) ;
   try
     FClient.ShowModal;
   finally
     FClient.Free;
   end;
end;



GOSTEI 0
POSTAR