[Funções] Parte I – Chamando Forms

Bom dia Pessoal! Estive impossibilitado de postar esses dias, semana de prova é dureza!

Mas vamos lá!

Todo mundo que trabalha no mundo da programação sabe que o re-aproveitamento de código é uma maravilha, diminui o código fonte e o mantém mais organizado.

Neste post irei ensinar vocês a tornar a chamada de formulários em Delphi mais ágil e robusta, através de um Procedimento(Procedure).

Uma pesquisa rápida e podemos descobrir que um Procedimento é:

“Procedure, ou procedimento, é uma coleção de instruções implementadas com algum linguagem,uma [sub-rotina].”

Á grossas palavras, seria um bloco de instrução que você poderia usar de maneira mais simples em qualquer lugar do seu sistema.

Depois de uma introdução rápida, vamos ao que realmente interessa.

Abra uma nova aplicação Delphi:

File->New->VCL Forms Application

Dê um bonito nome ao Form, utilizando a propriedade Caption, como Chamando Forms Utilizando Procedimentos

e Mude o Name do Form, na propriedade Name para Fm1.

Insira um novo Form:

File->New->Form

Mude seu Caption para Formulário 2

e seu Name para Fm2

Salve o Projeto utilizando o botão Save All.

Agora temos que fazer nosso 1º Form “enxergar” o 2º Form, para isso usamos o atalho ALT+F11 e selecionamos nosso 2º Form ou vamos em File->Use Unit

Feito isso vamos inserir um botão no 1º Form, para que possamos chamar nosso segundo Form

Agora vem uma parte importante, que muitos iniciantes esquecem ou nem sabem que existe. Quando criamos uma aplicação Delphi e vamos inserindo Forms, eles são criados automáticamente quando a aplicação é iniciada, ou seja, se seu projeto tiver 50 Forms, todos os 50 Forms são carregados para a memória quando a aplicação iniciar. Desperdicio de memória não é? Levando em conta que você irá usar um Form de cada vezna maioria dos casos. Para sanarmos isso vamos alterar nosso projeto:

Vá em Project->Options e selecione Forms no lado esquerdo

Vamos entender a imagem acima:

  1. Aqui será definido o Form principal da sua aplicação, o Form que irá aparecer quando ela for iniciada;
  2. Aqui serão os Forms que serão criados automaticamente quando a aplicação for iniciada, devemos deixar apenas o Fm1
  3. Aqui serão deixados o restante dos forms, onde deveremos criar, e chamá-los manualmente.

Então selecione Fm2 e clique na seta apontando para o lado direito (>).

Feito isso, podemos fechar a janela.

Voltando ao Fm1, dê um duplo clique no botão para manipularmos o evento dele.

O que muita gente faz é isso:

Fm2:=TFm2.Create(Self);
Fm2.ShowModal;
Freeandnil(Fm2);

ou

Application.CreateForm(TFm2,Fm2);
Fm2.ShowModal;
Freeandnil(Fm2);

Se vocês seguiram a nomenclatura que defini, e utilizarem qualquer um dos dois códigos no botão, o segundo Form será chamado na tela, muito fácil não é?

Mas em uma aplicação grande isso se torna repetitivo e tedioso, então para rotinas repetitivas vamos criar um Procedure.

Vá em File->New->Unit e uma nova Unit será criada, uma Unit nada mais é do que onde são armazenadas as linhas de programação de um Form ou não.

Salve nossa Unit com o nome de Biblioteca, será nossa biblioteca de funções/procedimentos.

Logo abaixo da linha interface digite a seguinte instrução

uses Forms, Classes, SysUtils;

Que são classes para usarmos determinadas funções.

Abaixo da linha uses vamos declarar nosso procedimento:

Procedure ChamarForm(Classe:TComponentClass; Form:TForm);

Estamos declarando um Procedimento chamado ChamarForm e estamos passando para ele dois parâmetros, que são Classe, do tipo ComponentClass, e Form, que é do tipo TForm.

Abaixo da linha Implementation vamos inserir os comandos para chamada de formulário

Procedure ChamarForm(Classe:TComponentClass; Form:TForm);
Begin
Application.CreateForm(Classe,Form);
Try
Form.ShowModal;
Finally
Freeandnil(Form);
End;
End;

Estamos utilizando o comando Application.CreateForm para criar o Formulário como háviamos feito antes, e abaixo temos uma coisa nova, o Try..Finally..End;

Esta instrução é muito usada, e possui uma variante Try..Except..End, mais afrente irei fazer um tópico relacionado à elas, mas por enquanto fica a dica:

Try

Tudo que estiver aqui ele irá “tentar” fazer, como o nome diz

Finally

Independente do que ele conseguiu fazer na parte de cima, ele vai executar tudo que estiver aqui.

end;

Então seguindo o raciocinio, ele irá tentar Mostrar o Form(Form.ShowModal).

Porém se por algum motivo ele não conseguir mostrá-lo, ele irá de qualquer maneira, liberá-lo da memória(Freeandnil(Form)).

Acabamos por aqui, agora precisamos que o Fm1 enxergue a Biblioteca, pelo comando ALT+F11, feito isso vamos novamente ao código do Botão, vamos apagar o que haviamos colocado antes e simplesmente inserimos a linha:

ChamarForm(TFm2, Fm2);

Podemos rodar a aplicação e testar.

Este tópico acaba por aqui, estarei disponibilizando o código e o projeto para vocês.

Como podem ver gosto das coisas muito bem explicadas, pois sei como é quando a gente está começando, e sofri muito também, para aprender certas coisas.

O Projeto pode ser baixado aqui

Espero que tenham gostado, e até a próxima!

1º Tópico

Fala galerinha, sejam muito bem vindos ao meu WordPress, espero que se sintam em casa, o primeiro tópico realmente é uma coisa muito difícil de se escrever, a gente fica pensando no que será o blog, ou se escrevemos sobre nós mesmos…é complicado.

Neste blog estarei abordando tanto coisas do cotidiano, coisas que eu acho interessante, pois adoro documentários, adoro saber das coisas, mesmo por que podem tirar tudo de nós, menos o conhecimento. E como meu professor sempre dizia, aprenda tudo o que puder, pois um dia poderá ser útil. Também postarei algumas coisas relacionadas com programação, Delphi/Pascal/SQL(Firebird) e um pouco de C.

Um pouco de mim, já escrevi algumas coisas no meu perfil, mas basicamente trabalho em um escritório de contabilidade, estou cursando Sistemas de Informações , namoro(linda garota chamada Aline =)), moro no interior de São Paulo, uma pequena cidadezinha chamada Buritama.

 

Por enquanto é só isso!

Até o próximo posto galera!

 

Abraços!