Fórum Verificar se o Form está aberto #267954

09/02/2005

0

Olá a todos e boa noite,
Esta é moleza, e pra variar eu não sei
Tenho vários forms. Criados em tempo de execução.
Como faço para saber se o um Form está criado ou não?
Valeu OBrigado.


Dbergkamps

Dbergkamps

Responder

Post mais votado

09/02/2005

valeu cara eu sabia que era simples
obrigado e boa noite.


Dbergkamps

Dbergkamps
Responder

Gostei + 4

Mais Posts

09/02/2005

Poeta Noturno

olá amigo

faça assim:

if form1 = nil then
[não está criado]
else
[está criado]

um abraço

Rodrigo


Responder

Gostei + 1

09/02/2005

Massuda

Você usar a variável global Screen e usar as propriedades FormCount e Forms para ter acesso a todos os forms abertos pelo seu programa, independente de quem é o Owner do form.

Assumindo que você só tem um form de cada classe, o seguinte código resolveria o problema de saber se um form está criado (não testei):
function FormEstaCriado(AClass: TClass): Boolean;
var
  I: Integer;
begin
  Result := False;
  for I := 0 to Screen.FormCount -1 do begin
    if Screen.Forms[I] is AClass then begin
      Result := True;
      Break;
    end;
  end;
end;
Para saber se um form da classe TSeuForm está criado, faça:
  if not FormEstaCriado(TSeuForm) then begin ...



Responder

Gostei + 1

10/02/2005

Rodc

A forma mais bonita é :

  if Assigned(TForm1) then
    //Criado
  else
    //Não criado


O Assigned faz nada mais que comparar o objeto com nil.


Responder

Gostei + 2

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/visível. 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 + 1

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

Aceitar