Verificar se o Form está aberto
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.
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
Curtidas 7
Melhor post
Dbergkamps
09/02/2005
valeu cara eu sabia que era simples
obrigado e boa noite.
obrigado e boa noite.
GOSTEI 4
Mais Respostas
Poeta Noturno
09/02/2005
olá amigo
faça assim:
if form1 = nil then
[não está criado]
else
[está criado]
um abraço
Rodrigo
faça assim:
if form1 = nil then
[não está criado]
else
[está criado]
um abraço
Rodrigo
GOSTEI 1
Massuda
09/02/2005
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):Para saber se um form da classe TSeuForm está criado, faça:
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;
if not FormEstaCriado(TSeuForm) then begin ...
GOSTEI 1
Rodc
09/02/2005
A forma mais bonita é :
O Assigned faz nada mais que comparar o objeto com nil.
if Assigned(TForm1) then //Criado else //Não criado
O Assigned faz nada mais que comparar o objeto com nil.
GOSTEI 2
Flávio Lopes
09/02/2005
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;
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;
GOSTEI 1