GARANTIR DESCONTO

Fórum Saber se um form já está criado - Delphi #592266

08/04/2018

0

MeuForm := TMeuForm.Create(Application);
MeuForm.Show;
.
{ vários codigos }
.
MeuForm.Free; // (As vezes sim, as vezes não, essa linha será executada antes da próxima verificação)
.
{ depois em outro lugar quero usar o mesmo form com a mesma variável MEUFORM que no meu caso é global }
.
IF Assigned( MeuForm ) Then // Vai retornar TRUE pois a variável ainda contem o objeto, porém ele não está alocado na memória.
.
Nesse caso daria erro de ACESS VIOLATION caso eu tentasse usar o FORM sem criar
.
E também não posso criá-lo novamente se já estiver criado, pois na minha aplicação preciso continuar a usá-lo de onde parou.
.
Como faço pra testar se o form está criado e acessível, independente se ele está SHOW ou HIDE
Alberto

Alberto

Responder

Post mais votado

12/04/2018

troque MeuForm.Free por FreeAndNil(MeuForm)

Emerson Nascimento

Emerson Nascimento
Responder

Gostei + 2

Mais Posts

09/04/2018

Carlos Natividade

Bom dia.
If not (frm_Principal = nil) then // verifica se o formulário principal já foi criado
Responder

Gostei + 0

09/04/2018

Alberto

Então Carlos, como segue.

MeuForm := TMeuForm.Create(Application);
MeuForm.Show;
.
{ vários codigos }
.
MeuForm.Free;
.
depois colocando a sua linha de codigo:
.
If not (fMeuForm = nil) then
.
Vai retornar TRUE, porém o form não está acessível.
Responder

Gostei + 0

12/04/2018

Alberto

Então fazer isso resolve se todo o projeto já está assim, ou se é um form específico que você sabe onde é chamado e terminado, mas pense num projeto que não foi você que fez, onde pode haver dezenas ou centenas de chamadas e fechamentos de forms, e você quer saber em um determinado momento se aquele form está acessível ou não, como você faria?
Pois são vários os STATUS que uma varável de um objeto TForm pode estar, como por exemplo:
.
1-Var Form:TForm;
2-Form := TForm.Create(application)
3-Form.Free
4-Form := Nil
.
Dessas 4 opções como saber se ele se encaixa na opção 2?
Responder

Gostei + 0

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

Aceitar