fechar form sem se está criado

Delphi

30/09/2007

Crio três forms dinamicamente.
Sempre tem apenas um criado e na tela (showModal).
O que eu gostaria é fechar o form que está aberto sem saber qual deles é que está carregado.

Como poderia fazer isso?

Obrigado.


Armindo

Armindo

Curtidas 0

Respostas

Mayron Cachina

Mayron Cachina

30/09/2007

rpz eu tenho 99.9¬ de certeza que vc tem q saber o nome de um form pra fechar ele!!!

ele ta abrindo sozinho e só 2, se tem 3??? explica melhor um pouquinho ai...


GOSTEI 0
Armindo

Armindo

30/09/2007

[quote:6e83082522=´Mayron Cachina´]rpz eu tenho 99.9¬ de certeza que vc tem q saber o nome de um form pra fechar ele!!!

ele ta abrindo sozinho e só 2, se tem 3??? explica melhor um pouquinho ai...[/quote:6e83082522]


Vou colocar um pouco diferente então:
Tenho 3 forms. Um é o principal(form1). Neste tenho um menu onde o form2 e outro menu onde o form3 é chamado.
Quando se aciona esses menus eu excuto:
´Application.CreateForm(TForm2,Form2);
Form2.ShowModal´
ou
´Application.CreateForm(TForm3,Form3);
Form3.ShowModal´

No form principal, coloquei um ApplicationEvents. Quando ocorrer uma exceção qualquer em um dos forms (2 ou 3), no onException do ApplicationEvents, quero fechar o form ativo (FAtivo.Close);
Ou seja, o que preciso é verificar qual o form (além do principal) que está carregado, para fechá-lo.

OBs.: coloquei 3 forms só para exemplificar, mas na verdade a aplicação tem mais de 30 forms.

Obrigado


GOSTEI 0
Mayron Cachina

Mayron Cachina

30/09/2007

Ja tentou Self.close?
ai vc trata o erro no própio form...
eu acho q pode fazer isso


GOSTEI 0
Armindo

Armindo

30/09/2007

[quote:ca01ff1e9a=´Mayron Cachina´]Ja tentou Self.close?
ai vc trata o erro no própio form...
eu acho q pode fazer isso[/quote:ca01ff1e9a]

Tendo em vista inúmeras outras variáveis no meu sistema, que não tem como te explicar aqui, eu preciso fazer o tratamento no componente ApplicationEvents.

Mas valeu pela tentativa de ajuda.
Se descobrir algo, postarei aqui.

Obrigado.


GOSTEI 0
Johnny-walker

Johnny-walker

30/09/2007

Amiog tem um jeito de vc sabber qual form esta aberto utilizando-se da variavel Screen...


mais ou menos assim:

procedure TForm1.Button1Click(Sender: TObject);
var
I : Byte;
begin
for I := 1 to Screen.FormCount -1 do
begin
ListBox1.Items.Add(Screen.Forms[I].Name);
end;
end;


PS.: lembranod que a variavel screen somente retorna os forms criados ou autocriados...


bye


GOSTEI 0
Armindo

Armindo

30/09/2007

Funcionou assim: Screen.ActiveForm.Close


GOSTEI 0
POSTAR