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!
From: matheus_...@hotmail.com
To: delphi-br@yahoogrupos.com.br
Subject: RE: [delphi-br] Destruir Form
Date: Wed, 25 Nov 2009 23:43:39 +0000








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...@gmail.com
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_...@hotmail.com>



>

> 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...@hotmail.com

> 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_...@hotmail.com

> > 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...@hotmail.com

> > 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]






    
     

    
    






                                          
Chegou o Windows 7. Deixe seu computador mais simples e fácil. Clique para 
conhecer.                                      
_________________________________________________________________
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 >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    delphi-br-ow...@yahoogrupos.com.br
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    delphi-br-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html


Responder a