Fórum Problemas ao fechar forms MDI e MDICHild #270422
28/02/2005
0
Estou com um probleminha.
Tenho uma aplicação que usas forms MDI. Em cada form filho eu tenho um evento no OnCloseQuery, ou seja, toda vez que se fechar um form filho ele faz uma pergunta.
Só que a bronca começa quando eu tento fechar o form pai e existem janelas filhas abertas. Para cada form filho é executada a pergunta de fechar. Já tentei interceptar a mensagem de fechamento, só que não funcionou. Quando se tenta fechar o form pai ele tenta fechar os forms filhos e só depois executas os eventos OnClose e OnCloseQuery dos form pai. Já tentei também capturar os eventos do sistema. Não resolveu. Não sei mais onde procurar a mensagem de fechamento do form filho, ou com evitar que execute o OnCloseQuery dos filhos.
Se alguém souber com fazer fico grato se puder me ajudar.
Desde já agradeço a atenção de todos
Ehvasc
Curtir tópico
+ 0Posts
28/02/2005
Massuda
var I: Integer; .... with Form1 do for I := MDIChildCount - 1 downto 0 do begin MDIChildren[I].Free; end;
Gostei + 0
01/03/2005
Ehvasc
Já tentei isso. Não funciona pq de alguma forma o form_pai envia uma mensagem antes do close ou do CloseQuery do próprio form_pai para os filhos. A saida seria capturar a mensagem que o form MDI manda pra os filhos quando se tenta fechá-lo.
Já tentei verificar no OnClose e OnCloseQuery do form pai, só que primeiro é executado o do form filho e depois o do form_pai.
De qualquer forma agradeço sua atenção.
Gostei + 0
01/03/2005
Massuda
type TMeuFormMdiPai = class(... ... public function CloseQuery: Boolean; override; ... ... function TMeuFormMdiPai.CloseQuery: Boolean; begin // seta uma flag global ou // percorre MDIChildren[] setando uma flag // para indicar que é o form pai que está fechando os forms Flag_FormPai_Fecha_FormFilho := True; Result := inherited CloseQuery; end;
Gostei + 0
02/03/2005
Ehvasc
Não havia me atentado para isso, acho que queria resolver da forma mais complicada possível, essa sua dica funcionou muito bem. Muito obrigado e até a próxima
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)