Na realidade, você deve utilizar o formprincipal.MDIChildCount para saber a quantidades de janelas abertas, e dentro de uma estrutura de for, voce corre e utilizando formprincipal.MDIChildren[i] voce vai testando a classe e fecha os q vc quiser:
procedure TForm1.Button1Click(Sender: TObject); var i :Integer; begin for i := 0 to Self.MDIChildCount -1 do if Self.MDIChildren[i] is TForm2 then Self.MDIChildren[i].Close; end; espero ter ajudado falow -- Thales Eduardo Barros de Oliveira Desenvolvedor Delphi / Firebird Emails: [EMAIL PROTECTED] (GoogleTalk) [EMAIL PROTECTED] (MSN) Blog: http://tebosoftware.blogspot.com/ "Tente ser uma pessoa de valor, não de sucesso" Albert Einstein Em 21/01/08, Ricardo Ravelli <[EMAIL PROTECTED]> escreveu: > > Boa noite a todos, > > Tenho uma aplicação MDI que no evento onclose do form principal faço com > que > ele oculte e fique somente no icon tray. Mas o problema é quando tem algum > form MDIChild aberto, ao tentar fazer ocultar o sistema não oculta > direito. > > No evento onclose do form principal: > > Action := caNone; > FrmPrincipal.Hide; > > A minha dúvida é a seguinte: como eu faço pra verificar se tem qualquer > form > "filho" aberto no sistema e fechar esses forms filhos de f dentro do form > principal?? > Já tentei usar IF( NomeForm <> NIL ) then só que mesmo que o form filho > esteje aberto ele aparece sendo igual a NIL.. > > Por favor, se alguém puder me ajudar com esse problema, alguém que > trabalha > com aplicações MDI, é o meu primeiro sistema em formato MDI. > > Obrigado. > Ricardo Ravelli. > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas]