Fórum Verifica se form já está aberto. #402513

07/06/2011

0

Como verificar se um form já está aberto no meu aplicativo?
Júnior Garcia

Júnior Garcia

Responder

Posts

07/06/2011

Nigro

Duplicidade
Responder

Gostei + 0

07/06/2011

Rafael Mattos

if form <> nil then
   Ja instanciado
Responder

Gostei + 0

07/06/2011

Júnior Garcia


  eu até faço isso no menu, tipo:
if Form = nil then  Application.CreateForm(TForm, Form);
Form.Show;Form.BringToFront;
(isso porque pode ser necessário abrir mais de um form DIFERENTE)
Só que quando fecho ele e abro denovo ele cria vários forms, como se ele já tivesse sido criado. Me disseram pra usar o Release; mas não deu certo, dá o Access Violation quando eu tento abrir novamente.
Responder

Gostei + 0

07/06/2011

Rafael Mattos

O Que tem no seu FormClose e no FormCreate ou no FormShow. algum objeto está sendo instanciado la?
Responder

Gostei + 0

07/06/2011

Júnior Garcia


  Está aparentemente funcionando quando coloquei no onClose de cada Form o FreeAndNil(Form); Parece que não tá dando nenhum erro.
Responder

Gostei + 0

27/10/2011

Flávio Lopes

quando "form nil" quer dizer que foi instanciado na memória, mas não quer dizer que esteja aberto "show".

Existe casos em que o form pode estar instanciado na memória e estar "hide" ou "close".

então creio que a opção melhor seria

if form nil then
begin
showmessage(Form criado na memória !);

if form.visible then
begin
showmessage(Form está aberto/visível. Fecharei);
form.close;
end
else
begin
showmessage(O form não está aberto. Abrirei.);
form.showmodal;
end;

// liberando form da memória
form.release;
form.free;
form:= nil;

if form = nil then
showmessage(O form foi liberado da memória);
end;
Responder

Gostei + 0

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

Aceitar