Problemas ao fechar todos os MDIChild abertos

Delphi

18/09/2008

Ola pessoal, estou tentando fechar todos os MDI Child que tenho aberto no pai, mas não está dando certo.

To tentando dessa forma:

for i:= 0 to Form.MDIChildrenCount -1
      Form.MDIChildren[i].Close;


Mas ele dá um erro num endereço de memória.

Já tentei de tudo.... tentei fechar do ultimo para o primeiro, tentei fechar sempre o indice 0......... mas nada dá certo.

Alguém sabe alguma outra forma de fechar todos os child?

Obrigado.


Sérgio Gobbo

Sérgio Gobbo

Curtidas 0

Respostas

Digaopachesen

Digaopachesen

18/09/2008

Tenho esta função e esta funcionando:

var
  i:integer;
begin
  for i:=MdichildCount-1 downto 0 do
    mdichildren[i].close;


esta quase igual ao seu, veja se vai funcionar, tambem talves verifique se vc collocou em todos os form no evento onClose, Action := CaFree;

Tenta ai..Espero ter Ajudado...


GOSTEI 0
Sérgio Gobbo

Sérgio Gobbo

18/09/2008

Então Digão, já tinha tentado esse código anteriormente, mas dá o mesmo erro.

Mas hoje percebi que só ocorre quando tem 2 janelas do mesmo formulário aberto. Pra testar eu clicava duas vezes no mesmo botão, abrindo 2X o mesmo form, será que é isso? Pois quando abro vários forms, mas todos diferentes não gera o erro.

Acho que o mais sensato seria impedir a abertura do mesmo form mais de uma vez simultâneamente.

Obrigado pela ajuda.


GOSTEI 0
Digaopachesen

Digaopachesen

18/09/2008

Tenta isso aki, so copie nao tentei blz flw
LockWindowUpdate(Handle);
  if (NomedoForm= nil) then
    begin
      try
        Application.CreateForm (TNomedoForm, NomedoForm);
      except
        NomedoForm.Free;
      end;
    end;
  NomedoForm.Show;
  LockWindowUpdate(0);



GOSTEI 0
POSTAR