Fórum Como saber se um determinado Form foi criado ? #191512

29/10/2003

0

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

Responder

Posts

29/10/2003

Marcelo Saviski

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;


Responder

Gostei + 0

29/10/2003

Moonlight

Ou ainda...

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


Responder

Gostei + 0

30/10/2003

Luizfernando777

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


Responder

Gostei + 0

30/10/2003

Beppe

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

Ataliba


Responder

Gostei + 0

30/10/2003

Marconi

Muito obrigado a todos.

O problema foi resolvido a contento.

Todas as dicas funcionaram perfeitamente.

Cordialmente

Marconi


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar