Delphi - Criar / Destruir formulários

Delphi

23/06/2020

Boa noite!

Estou com algumas dúvidas referente a criação de formulários, no caso do Form1 := TForm1.Create(nil) e Form1 := TForm1.Create(self)...

Realizando algumas pesquisas, ao meu ver seria da seguinte forma:

utilizando nil...
onCreate:
Form1 := TForm1.Create(nil)

onDestroy:
FreeAndNil(Form1);

E no caso do self "é destruído quando o formulário / self for destruído". A dúvida é.. se eu utilizar o Self, será destruído automaticamente?

Não sei se me fiz entender, mas agradeço desde já.
Nomad

Nomad

Curtidas 0

Melhor post

Leandro Carvalho

Leandro Carvalho

24/06/2020

Boa noite!

Estou com algumas dúvidas referente a criação de formulários, no caso do Form1 := TForm1.Create(nil) e Form1 := TForm1.Create(self)...

Realizando algumas pesquisas, ao meu ver seria da seguinte forma:

utilizando nil...
onCreate:
Form1 := TForm1.Create(nil)

onDestroy:
FreeAndNil(Form1);

E no caso do self "é destruído quando o formulário / self for destruído". A dúvida é.. se eu utilizar o Self, será destruído automaticamente?

Não sei se me fiz entender, mas agradeço desde já.


Bom dia.

A sua resposta está aqui: http://www.planetadelphi.com.br/dica/6555/varias-formas-de-se-iniciar-um-form
GOSTEI 1

Mais Respostas

Marcos Junior

Marcos Junior

23/06/2020

Bom dia...

Meu chefe a meu ver a melhor maneira tanto para se criar a destruir o form para garantir que o mesmo seja limpo tanto o ponteiro como da memoria seria assim.:

Ao criar o form.:
if (frmExemplo = nil) then
Application.CreateForm(TfrmExemplo, frmExemplo);

frmExemplo.Show;

e colocar no vento OnClose do form.:
Action := caFree;

e colocar no evento onDestroy.:
frmExemplo := nil;

Desta maneira eu sempre verifico antes de criar se ele existe e sempre que fechar o form eu limpo o ponteiro e o mesmo da memoria.
GOSTEI 1
Nomad

Nomad

23/06/2020

Obrigado a ambos pelas respostas!
GOSTEI 0
POSTAR