Como saber se um determinado Form foi criado ?
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
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
Curtidas 0
Respostas
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;
use FreeAndNil(Form) para libera-los da memoria ao invés de Form.Free;
GOSTEI 0
Moonlight
29/10/2003
Ou ainda...
if Form1 = nil then (Nao está criado!)
else (Está criado!)
if Form1 = nil then (Nao está criado!)
else (Está criado!)
GOSTEI 0
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
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
29/10/2003
Release é a ÚNICA forma correta de um form se auto destruir. No mais, Free pode ser usado normalmente.
Ataliba
Ataliba
GOSTEI 0
Marconi
29/10/2003
Muito obrigado a todos.
O problema foi resolvido a contento.
Todas as dicas funcionaram perfeitamente.
Cordialmente
Marconi
O problema foi resolvido a contento.
Todas as dicas funcionaram perfeitamente.
Cordialmente
Marconi
GOSTEI 0