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

 



Responder a