Criação de Formulários no Braço

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (17)  (12)

Através de try..finally veja como é possivel criar seus formulários em runtime, sem se preocupar com o famoso erro "Acces Violation" no caso de formularios que já não existem sendo destruidos.

   Para um programador inesperiente, este artigo pode parecer infrutífero, afinal um formulário é criado em milésimos de segundo, sendo assim muito mais facil deixar o delphi criá-los automáticamente, porém, este não é o caso de um programa com muitos formulários onde então no iniciar o seu programa haveria um tempo de espera enorme, o que é lógico nenhum usuário suporta. Neste caso é necessário que seu projeto cria automaticamente apenas os "DataModules" (pois nestes estão suas Querys que podem ser acessadas de qualquer formulário) e o seu Formulário Principal, já para os demais formulários temos que implementar um código de chamada e criação padrão eficiente no qual estejam previstos os casos do seu sistema, inclusive suprindo o jogo de que querys abrem agora e quando elas fecham, sendo que muitas querys abertas ao mesmo tempo, ou, querys fechadas antes da hora podem dar dor de cabeça aos programadores.

   Depois de meses de experiência acabei bolando um código que em sua simplicidade e eficiencia, supre todos estes casos:

 

procedure TFPrincipal.BotaoClick(sender:TObject);
begin
   try
      dm.Query.Open; //Voce pode abrir as querys utilizadas no seu formulário aqui
      Application.CreateForm(FSecundario, TFSecundario); //cria o formulário
      FSecundario.showmodal; //mosta o formulário
   finally // A partir desta linha só vai ser executado quando as ações do "try" terminarem
               // ou seja, apenas quando o ShowModal do formulário retornar "Close";
      dm.Query.Close; //Fechar as querys abertas, nunca deixar muitas querys abertas
                                     //pois consomem memória e pesam seu sistema.
      FSecundario.Release; //Solta a memória utilizada pelo formulário
      FSecundario:=nil; //Limpa a Referência do programa a ele como "existente" tornando "inexitente"
   end;
end;

 

   Desta Forma perceba que quando voce executar a ação que abre o formulário, ele vai ficar disponivel até o exato momento em que você o fecha, para então se destruir, e assim quatas vezes forem necessárias.

 

Remover os Formulários da lista de Formulários Criados Automaticamente em Project/Options/Forms

imagem.JPG

 

   Espero que gostem, este é meu primeiro artigo, desenvolvi ele bastante iniciante mesmo por experiência, nas próximas irei tratar de assuntos mais elaborados: Threads, StoredProcedures por ex.

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?