Array
(
)

Verificar se form(MDI) já foi criado, ou se está ativo

Giancorrea
   - 18 nov 2005

Olá, como faço para saber qual form(MDI) dá minha aplicação está ativo? Eu tentei fazer isso com #Código

if (Form1 = nil) then ...
mas acho que isso só funciona para uma aplicação SDI. Alguém poderia me ajudar? Obrigado


Massuda
   - 18 nov 2005

No seu form principal...[list:b9eb66a632][*:b9eb66a632]a propriedade ActiveMDIChild indica qual form MDI child está ativo[*:b9eb66a632]a propriedade MDIChildCount indica quantos forms MDI child estão em uso[*:b9eb66a632]a propriedade MDIChildren é um array com os forms MDI child que estão em uso[/list:u:b9eb66a632]


Giancorrea
   - 18 nov 2005

Massuda, desculpe a minha ignorância, mas como eu posso fazer uma verificação? Eu gostaria de criar um formulário uma vez só. Mas quero utilizar janelas MDI. Obrigado


Massuda
   - 18 nov 2005

Você disse que vai ter uma único form de cada classe, mas poderá ter vários forms (de classes diferentes) criados simultaneamente?


Giancorrea
   - 18 nov 2005

Isso mesmo. Há algo de errado nisso? :?: :?


Massuda
   - 18 nov 2005


Citação:
Isso mesmo. Há algo de errado nisso? :?: :?
Não... mas se você respondesse que só poderia ter um único form de cada classe e que num dado instante só poderia ter um form criado, eu diria para você continuar usando SDI.

Imaginando que cada form seu é de uma classe diferente, para testar se já existe um form MDI child de uma determinada classe, faça algo assim em seu form principal...#Código

var
I: Integer;
...
for I := 0 to MDIChildCount - 1 do begin
if MDIChildren[I] is TSuaClasse then begin
// já existe um form da classe TSuaClasse
// MDIChildren[I] é o form
Break;
end;
end;
...



Giancorrea
   - 18 nov 2005

Valeu pelas dicas Massuda


Eniorm
   - 19 nov 2005

eu num projetinho MDI eu usava assim pra abrir os forms e evitar que fosse aberto o mesmo form + de 1 vez

if (form = Nil) then
application.CreateForm(tform, form);
form.Show

e no OnClose do form (filho) eu uso

Action := caFree;
Release;
form := Nil;

fununciava blza!!!!!!!! e se vc tentasse abrir um form ja aberto, iria apenas mostrar o q ja estava aberto, sem re-criar ele

abraço