Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FabioRubim

Fechar forms filhos e pai com a tecla ESC

Recommended Posts

Ola pessoal,mais um pepino meu envolvendo forms filhos e pai...

Se eu coloco por exemplo um código que quando pressionar a tecla ESC fechar os forms filhos, fica tudo ok, mas se ja faço o mesmo com o formulário pai e com os filhos usando tmb, sempre vai direto para o formulário do pai o chamado, queria que só fosse acionado o evento do form se não houvesse mais nenhuma filha aberta, tem como??

 

Usei esse código no evento OnShortCut do form pai:

Handled:=true;
   if Msg.CharCode = VK_ESCAPE then
	Close;

e no outro formulários, os filhos, usei esse código no evento OnKeyPress:

if Key=#27 then
   close;

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Peraew, deixa eu ver se entendi ...

você quer q qdo a tecla ESC por pressionada, o sistema verifique se existem janelas filhas abertas, caso tenha alguma, feche as mesmas, caso contrario deseja q finalize o programa? isso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, isso mesmo, mas a janela filha que estiver em foco, pois quando uso o evento OnShortCut, qualquer lugar que eu aperto a tecla ESC éo form principal(o pai) quem reponde pelo esc, sem obedecer as janelhas filhas na ordem.Se houver outro modo de fazer o que eu quero...

 

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum ... entao faça assim kra:

if (Msg.CharCode = VK_ESCAPE) then
  begin
	if (MDIChildCount > 0) then
	begin
	  while MDIChildCount > 0 do
	  begin
		MDIChildren[0].Close;
	  end;
	end
	else
	begin
	  Application.Terminate;
	end;
  end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Rodrigo, desse jeito trava a aplicação, entra em um laço infinito...massssssssssss, você conseguiu que eu fizesse de outro jeito, e melhor, funcionou, assim:

 

if (Msg.CharCode = VK_ESCAPE) then
	if not (frmPrincipal.MDIChildCount > 0) then
	  close;

 

 

Obrigado Rodrigo! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.