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

18/11/2005

Olá, como faço para saber qual form(MDI) dá minha aplicação está ativo? Eu tentei fazer isso com
 if (Form1 = nil) then ... 
mas acho que isso só funciona para uma aplicação SDI. Alguém poderia me ajudar? Obrigado


Giancorrea

Respostas

18/11/2005

Massuda

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]


Responder Citar

18/11/2005

Giancorrea

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


Responder Citar

18/11/2005

Massuda

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


Responder Citar

18/11/2005

Giancorrea

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


Responder Citar

18/11/2005

Massuda

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...
var
  I: Integer;
...
  for I := 0 to MDIChildCount - 1 do begin
    if MDIChildren[I&93; is TSuaClasse then begin
      // já existe um form da classe TSuaClasse
      // MDIChildren&91;I&93; é o form
      Break;
    end;
  end;
...



Responder Citar

18/11/2005

Giancorrea

Valeu pelas dicas Massuda


Responder Citar

19/11/2005

Eniorm

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


Responder Citar