Pessoal... meu lema é escrever pouco e deixar o computador trabalhar por mim :-) (já que ele foi feito pra isso)
Então segue uma dica para aqueles que tem este mesmo conceito de deixar seu projeto mais "enxuto" Levantei a Thread :-) com relação a Automatizar a abertura e fechamento de Forms. Imagino que o Delphi até já tenha esta função embutida... pois é a rotina mais usada em qualquer aplicação... mas ainda não encontrei. Coloque esta função naquela Unit de funções plubicas que vc deve ter... (pois não seria vantajoso colocar para um unico form) Bem aí vai minha dica: procedure MostraLiberaForm(pForm: TForm; cForm: TFormClass); begin pForm := cForm.Create(nil); // Aqui vc pode usar Self, Application, ou nil try pForm.ShowModal; // Nao funciona para form Show, pois o mesmo não para aqui e será liberado finally pForm.Free; // Só libera quando o ShowModal é fechado. end; end; Para utiliza-la: MostraLiberaForm(SeuForm, TSeuForm); Esta função deve ser usada naqueles forms que não tem nenhuma rotina antes da sua abertura (por ser ShowModal)... ou a tal rotina deve estar no OnCreate do Form em questão. * Rotina sujeita a mudanças sem prévio aviso :-) Marcelo Silva Cel. 11 9693-4251 ICQ - 49224093 MSN [EMAIL PROTECTED] ----- Original Message ----- From: Marcelo Silva To: delphi-br@yahoogrupos.com.br Sent: Wednesday, March 02, 2005 6:24 PM Subject: Re: [delphi-br] Automatizar processos OnClose do Form Free -- serve para o Objeto que não tenha um dono... por exemplo var MinhaLista: TStringList; begin MinhaLista := TStringList.Create; MinhaLista.Blablabla... MinhaLista.Free; end; MinhaLista é dona dela mesma... assim não depende de outra instancia e pode ser liberada da memoria sem erros. Outro exemplo SeuForm := TSeuForm.Create(nil); Try SeuForm.ShowModal; finally SeuForm.Free; end; SeuForm é dono dele mesmo... o que seria diferente de: Application.CreateForm(TSeuForm, SeuForm); Desta forma Application é dona do SeuForm e teria que ser destruido assim SeuForm.Release; // Aguarda todos os processos(componentes e variaveis) pendendentes dentro dele. SeuForm := Nil; // Limpa a variável SeuForm para poder ser Recriada Se usar Free neste caso poderá causar violation por outros componentes estarem dependentes do SeuForm Observe que se voce nao utilizar Release e Nil neste caso, sera criado um outro form com o nome SeuForm_1 e assim por diante. Se for usar aplicações MDI use Free ... do contrário use Release e Nil Pelo menos é o que eu entendi no Help do Delphi como segue abaixo: E estou pronto para novas ideias :-) Description Use Free to destroy an object. Free automatically calls the destructor if the object reference is not nil. Any object instantiated at runtime that does not have an owner should be destroyed by a call to Free so that it can be properly disposed of and its memory released. Unlike Destroy, Free is successful even if the object is nil; so if the object was never initialized, Free won't result in an error. When you call Free for a component, it calls Free for all components that it owns-that is, all components in its component list. Since a form owns all the controls and other components that are created on it in design mode, those components are automatically freed when the form is freed. By default, all forms are owned by the Application object; when the application terminates, it frees the Application object, which frees all forms. For objects that are not components, or for components created with a nil owner, be sure to call Free after you are finished with them; otherwise the allocated memory will not be usable until after the application terminates. Warning: Never explicitly free a component within one of its own event handlers or the event handler of a component it owns or contains. For example, don't free a button, or the form that owns the button, in its OnClick event handler. To free a form, call its Release method, which destroys the form and releases the memory allocated for it after all its event handlers and those of the components it contains are through executing. ----- Original Message ----- From: Fabio Giro To: delphi-br@yahoogrupos.com.br Sent: Wednesday, March 02, 2005 9:53 AM Subject: Re: [delphi-br] Automatizar processos OnClose do Form Marcelo, muito boa a sua explicação. Poderia me informar como funciona o Free. Obrigado antecipadamente. ----- Original Message ----- From: "Marcelo Silva" <[EMAIL PROTECTED]> To: <delphi-br@yahoogrupos.com.br> Sent: Wednesday, March 02, 2005 9:38 AM Subject: Re: [delphi-br] Automatizar processos OnClose do Form Se você não utilizar Release o formulario será imediatamente destruido... o que poderá causar um Access Violation por alguns componentes ainda estarem na memória ou aquele endereço irá demorar para estar disponível a outro solicitante. É como você mandar um arquivo para a lixeira... ele pode estar na lixeira mas o espaço por ele utilizado ainda não está livre. Mas sim, só depois de ele ser excluído da lixeira. Se voce usar Release ele aguarda que todos os processos relativos aquele Form seja finalizado depois executando Nil você arranca de vez o formulario da memória e libera o endereço da mesma. * Lembre-se de que apesar de os componentes estarem dentro do formulário... cada um utiliza um endereço na memória quando abertos, por isso a necessidade da espera até que eles sejam descaregados. Marcelo Silva Cel. 11 9693-4251 ICQ - 49224093 MSN [EMAIL PROTECTED] ----- Original Message ----- From: Wildner B. Ferreira To: delphi-br@yahoogrupos.com.br Sent: Wednesday, March 02, 2005 9:26 AM Subject: RES: [delphi-br] Automatizar processos OnClose do Form Para liberar o form da memoria a realmente a necessidade de estar utilizando o form.release ???? _____ De: Marcelo Silva [mailto:[EMAIL PROTECTED] Enviada em: quarta-feira, 2 de março de 2005 09:18 Para: delphi-br@yahoogrupos.com.br Assunto: [delphi-br] Automatizar processos OnClose do Form Pessoal em todos os Forms temos que colocar Release e nil para liberar os formularios da memória... A pergunta é... Teria como automatizar para que a aplicação liberasse o formulario da memória de forma automática ? Ou seja, detectar que form está sendo fechado e dar um Form?.Release; Form? := nil; Será que tem ? Eu já consigo saber qual formulário está sendo executado, mas não consigo detectar quando foi pedido para fechar... se eu souber quando ocorre este evento... aí fica belesma... Marcelo Silva Cel. 11 9693-4251 ICQ - 49224093 MSN [EMAIL PROTECTED] ---------- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.300 / Virus Database: 266.5.4 - Release Date: 01/03/2005 [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: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Yahoo! Grupos, um serviço oferecido por: <http://br.i1.yimg.com/br.yimg.com/i/br/ads4/2309_lrec_yshopping2.gif> <http://br.rd.yahoo.com/SIG=12ajj3q7i/M=264105.3931087.6562589.1588051/D=brc lubs/S=2137111264:HM/EXP=1109852332/A=2361264/R=6/SIG=10v4acpp0/*http:/br.sh opping.yahoo.com/> _____ 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: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> * O uso que você faz do Yahoo! Grupos está sujeito aos Termos <http://br.yahoo.com/info/utos.html> do Serviço do Yahoo!. [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: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE ---------------------------------------------------------------------------- -- Links do Yahoo! Grupos a.. Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ b.. Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. ---------------------------------------------------------------------------- -- No virus found in this incoming message. Checked by AVG Anti-Virus. Version: 7.0.300 / Virus Database: 266.5.4 - Release Date: 01/03/2005 ---------- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.300 / Virus Database: 266.5.4 - Release Date: 01/03/2005 [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: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos -- No virus found in this incoming message. Checked by AVG Anti-Virus. Version: 7.0.308 / Virus Database: 266.5.7 - Release Date: 01/03/2005 -- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.308 / Virus Database: 266.5.7 - Release Date: 01/03/2005 -- <<<<< 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: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE ------------------------------------------------------------------------------ Links do Yahoo! Grupos a.. Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ b.. Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. ------------------------------------------------------------------------------ No virus found in this incoming message. Checked by AVG Anti-Virus. Version: 7.0.300 / Virus Database: 266.5.4 - Release Date: 01/03/2005 ---------- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.300 / Virus Database: 266.5.4 - Release Date: 01/03/2005 [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: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Yahoo! Grupos, um serviço oferecido por: São Paulo Rio de Janeiro Curitiba Porto Alegre Belo Horizonte Brasília ------------------------------------------------------------------------------ Links do Yahoo! Grupos a.. Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ b.. Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. ------------------------------------------------------------------------------ No virus found in this incoming message. Checked by AVG Anti-Virus. Version: 7.0.300 / Virus Database: 266.5.4 - Release Date: 01/03/2005 ---------- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.300 / Virus Database: 266.5.4 - Release Date: 01/03/2005 [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: [EMAIL PROTECTED] ou [EMAIL PROTECTED] 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: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html