Acho que ninguém descobriu.

Então vamos lá. quando eu disse que ao "debugar" vocês achariam a solução, eu 
não menti! Veremos o porque...

Em uma Form, coloque um simples comando: Close; em um evento do tipo OnShow ou 
OnCreate.

No mesmo Form, evento OnClose coloque um: ShowMessage('');

Agora rode, "debugue", faça o que quiser, e note que o ShowMessage(''); não 
será executado.

O motivo:

É super simples, você disparou uma "Trigger" (Comando interno do DELPHI, nada 
de SQL), que tentou chamar a função WM_CLOSE da WINAPI. a WM_CLOSE da um 
comando de Terminate do Form para o Windows.

Mas qual Form ela deverá terminar, sendo que nenhum Form foi criado ainda? 

Veja que OnShow e OnCreate ainda não tem a janela em aspecto Físico.

Solução:

Usar no evento OnShow o comando: 

PostMessage(Self.Handle, WM_CLOSE, 0, 0); 


A diferença que a Mensagem será disparada com a Janela pronta, e 
automaticamente mandará uma ação WM_CLOSE para o Handle da Janela.

Repetindo WM_CLOSE = CLOSE do Delphi, mas é comando WINAPI.

Dependendo da velocidade do Processador, poderá ser visto um Flicker na Tela, 
que realmente comprava que ela foi criada.


Finalmente:

É lógico que esse é o meio errado de se fazer, pois seria melhor você testar 
tudo antes do OnShow, pois é estranho você criar e destruir a janela.


Bem é isso, para aqueles que dizem que não ajudo!

--- Em delphi-br@yahoogrupos.com.br, Matheus Nabao <matheus_...@...> escreveu
>
> 
> Julio,
> Nada contra ninguém aqui. Mas olha só, tem coisas que acho que nós mesmos 
> devemos solucionar. (Como nesse caso).
> Não adianta simplesmente você saber a solução e pronto. Você tem que entender 
> o que está acontecendo na execução, nos eventos etc. Eu já disse que no 
> primeiro e-mail, que no próprio exemplo está a solução. É só "debugar"!
> Eu não quero ser o chato ou sádico da turma, apenas quero ajudar o cara a 
> pensar no problema, eu aprendi muito com isso e todos conseguiremos. Senão 
> conseguir, depois eu postarei a solução, mas acredito que ele conseguirá 
> achar facilmente se debugar.
> Mais uma pista... é um mero detalhe que até no help ele encontraria a solução.
> To: delphi-br@yahoogrupos.com.br
> From: jcsguio...@...
> Date: Wed, 25 Nov 2009 12:06:32 -0300
> Subject: Re: [delphi-br] Destruir Form
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>  
> 
> 
> 
>   
> 
> 
>     
>       
>       
>       Matheus,
> 
> 
> 
> não é mais fácil e amigável você enviar a solução?
> 
> Acho que já somos todos crescidinhos não?!
> 
> 
> 
> Abraço,
> 
> Júlio César Santiago Guiótti
> 
> 
> 
> 2009/11/25 Matheus Nabao <matheus_...@...>
> 
> 
> 
> >
> 
> > Não não não e não.
> 
> >
> 
> >
> 
> >
> 
> > O try não é o problema, presta atenção no seu primeiro e-mail. "Debuga" que
> 
> > você vai encontrar a resposta fácil fácil.
> 
> >
> 
> >
> 
> >
> 
> >
> 
> > To: delphi-br@yahoogrupos.com.br
> 
> > From: dionata...@...
> 
> > Date: Wed, 25 Nov 2009 11:38:20 +0000
> 
> > Subject: RE: [delphi-br] Destruir Form
> 
> >
> 
> >
> 
> >
> 
> >
> 
> >
> 
> >
> 
> > sim por causa do try...
> 
> >
> 
> > mas se eu colocar uma variavel de controle tipo erro :='S' e depois testar
> 
> >
> 
> > if Erro= 'S' then close fora do try também nao fecha...
> 
> >
> 
> > > To: delphi-br@yahoogrupos.com.br
> 
> > > From: matheus_...@...
> 
> > > Date: Tue, 24 Nov 2009 17:51:33 +0000
> 
> > > Subject: RE: [delphi-br] Destruir Form
> 
> > >
> 
> > >
> 
> > > Já vi o erro!
> 
> > >
> 
> > > Se você prestar atenção verá também o erro assim como eu.
> 
> > >
> 
> > > Olhe o exemplo que você postou que você verá por quê o Form não fecha.
> 
> > >
> 
> > >
> 
> > >
> 
> > > To: delphi-br@yahoogrupos.com.br
> 
> > > From: dionata...@...
> 
> > > Date: Tue, 24 Nov 2009 12:23:15 +0000
> 
> > > Subject: [delphi-br] Destruir Form
> 
> > >
> 
> > >
> 
> > >
> 
> > >
> 
> > >
> 
> > > Pessoal uma pergunta bem simples...
> 
> > >
> 
> > > no onshow do meu form tenho varios procedures dentro do try except;
> 
> > >
> 
> > > Exemplo
> 
> > >
> 
> > > try
> 
> > > procedure1
> 
> > > preocedure2
> 
> > > except
> 
> > > Showmessage('Não foi possivel abrir a aplicação!');
> 
> > > Close;
> 
> > > end;
> 
> > >
> 
> > > so que quando dou um close ele nao esta fechando o form, esta anbrindo
> 
> > igual..
> 
> > >
> 
> > > no onclose do form tenho
> 
> > >
> 
> > > Action :=cafree;
> 
> > > form :=nil;
> 
> > >
> 
> > > Como posso resolver isso?Valeu
> 
> > >
> 
> > >
> 
> > >
> 
> > >
> 
> > >
> 
> > > __________________________________________________________
> 
> > > Agora a pressa é amiga da perfeição. Chegou o Windows 7. Conheça!
> 
> > > http://www.microsoft.com/brasil/windows7/default.html?WT.mc_id=1539
> 
> > >
> 
> > > [As partes desta mensagem que não continham texto foram removidas]
> 
> > >
> 
> > >
> 
> > >
> 
> > > ------------------------------------
> 
> > >
> 
> > > --
> 
> > > <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
> 
> > >
> 
> > >
> 
> > >
> 
> >
> 
> > __________________________________________________________
> 
> > Converse e compartilhe fotos ao mesmo tempo. Saiba como no novo Site de
> 
> > Windows Live.
> 
> > http://www.windowslive.com.br/?ocid=WindowsLive09_MSN_Hotmail_Tagline_out09
> 
> >
> 
> > [As partes desta mensagem que não continham texto foram removidas]
> 
> >
> 
> >
> 
> >
> 
> >
> 
> >
> 
> > __________________________________________________________
> 
> > Agora a pressa é amiga da perfeição. Chegou o Windows 7. Conheça!
> 
> > http://www.microsoft.com/brasil/windows7/default.html?WT.mc_id=1539
> 
> >
> 
> > [As partes desta mensagem que não continham texto foram removidas]
> 
> >
> 
> >
> 
> >
> 
> > ------------------------------------
> 
> >
> 
> > --
> 
> > <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
> 
> >
> 
> >
> 
> >
> 
> >
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
> 
> 
> 
> 
> 
> 
>     
>      
> 
>     
>     
> 
> 
> 
> 
> 
> 
>                                         
> _________________________________________________________________
> Converse e compartilhe fotos ao mesmo tempo. Saiba como no novo Site de 
> Windows Live.
> http://www.windowslive.com.br/?ocid=WindowsLive09_MSN_Hotmail_Tagline_out09
> 
> [As partes desta mensagem que não continham texto foram removidas]
>


Responder a