fechar form sem se está criado
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.
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
Curtidas 0
Respostas
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...
ele ta abrindo sozinho e só 2, se tem 3??? explica melhor um pouquinho ai...
GOSTEI 0
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
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
30/09/2007
Ja tentou Self.close?
ai vc trata o erro no própio form...
eu acho q pode fazer isso
ai vc trata o erro no própio form...
eu acho q pode fazer isso
GOSTEI 0
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.
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
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
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
30/09/2007
Funcionou assim: Screen.ActiveForm.Close
GOSTEI 0