Como saber se um determinado Form foi criado ?

Delphi

29/10/2003

Existe algum método para verificar se um determinado form foi criado?

Qual é a idéia?

Para trabalhar sem ocupar a memória inutilmente eu crio os Forms à medida que necessito e descarto após o seu uso com o método FREE. Porém para isto eu necessito abri-los em MODAL, senão o programa passa para a próxima linha e já aciona o FREE, e não consigo fazer mais nada.

E queria abrir os forms sem ser Modal, o que me permitiria abrir outros mesmo que um determinado forma já estivesse aberto. Porém para poder fechar os já fora de uso, precisava verificar de tempos em tempos se ainda estão ativos.

O método ACTIVE retorna ERRO se o form ainda não foi criado.

Alguém tem uma solução?

Senão vou ter que criar um controle paralelo para verificar quando os forms foram acionados e fechados.

Obrigado por qualquer opinião.

Marconi


Marconi

Marconi

Curtidas 0

Respostas

Marcelo Saviski

Marcelo Saviski

29/10/2003

if Assigned(Form1) then form já criado else form ainda não criado

use FreeAndNil(Form) para libera-los da memoria ao invés de Form.Free;


GOSTEI 0
Moonlight

Moonlight

29/10/2003

Ou ainda...

if Form1 = nil then (Nao está criado!)
else (Está criado!)


GOSTEI 0
Luizfernando777

Luizfernando777

29/10/2003

td blz,
faz o seguinte,

if Form2 = nil then
begin
try
Form2 := TForm2.Create(Self);
Form2.Show;
except
Form2.Release;
end;
end
else
begin
Form2.Show;
end;

no evento OnClose do Form
coloque

Form2 := nil;
Action := caFree;

qdo vc for destruir um Formulário
criado não use o Form.Free;
e sim o Form.Release;
é a forma mais correta de destruir o formulário


GOSTEI 0
Beppe

Beppe

29/10/2003

Release é a ÚNICA forma correta de um form se auto destruir. No mais, Free pode ser usado normalmente.

Ataliba


GOSTEI 0
Marconi

Marconi

29/10/2003

Muito obrigado a todos.

O problema foi resolvido a contento.

Todas as dicas funcionaram perfeitamente.

Cordialmente

Marconi


GOSTEI 0
POSTAR