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