Você está na página 1de 3

Usando Herança de Formulários para Construção de Cadastros em Aplicações com

Banco de Dados no Delphi

1. O primeiro passo é criar um novo projeto no Delphi e nele, incluir um DataModule.


2. No DataModule, incuímos um componente ZConnection e fazemos sua configuração conforme visto
anteriormente, salvando a unit do DataModule como uDataModule.
3. Em seguida, criamos um novo Form na aplicação, reservando o Form1, criado automaticamente pelo
Delphi, para ser o formulário principal.
4. Neste novo Form (Form2), trocamos a propriedade Name para fmModelo e salvamos sua unit (Ctrl+S)
como uModelo.
5. Incluímos na cláusula Uses da unit uModelo, a referência a unit uDataModule, de modo que possamos
referenciar o DataModule.
6. Inserimos no form fmModelo, um componente ZTable (ZeosAccess), um DataSource (DataAccess), um
DBGrid (DataControls), um DBNavigator (DataControls), um Label (Standard), um Edit (Standard), dois
Button (Standard).
7. Ligamos o DataSource ao ZTable1, através da propriedade DataSet do DataSource. Alteramos também
sua propriedade AutoEdit para False.
8. Ligamos o DBGrid e o DBNavigator ao DataSource, através da propriedade DataSource destes dois
componentes.
9. Alinhamos na parte superior do Form, sobre o DBGrid, o Label, o Edit e um dos Buttons.
10. Alteramos a propriedade Caption do Label para Localizar:
11. Limpamos a propriedade Texte do Edit
12. Alteramos a propriedade Caption do Button para Localizar
13. O outro Button, alinhamos na parte inferior do Form, abaixo do DBGrid, juntamente com o DBNavigator.
14. Alteramos a propriedade Caption deste Button para Fechar.
15. Executamos um duplo-clique sobre o Button Fechar e inserimos o seguinte código na procedure
apresentada pelo Delphi:
Close;
16. Selecionamos o Form fmModelo (clicando numa área do Form que não tenha nenhum componente ou
selecionando a caixa de seleção da parte superior da janela do Object Inspector)
17. Vamos até a guia Events e localizamos o evento OnCreate. Executamos um duplo-clique na caixa de
seleção ao lado do nome do evento, inserindo o seguinte código na procedure apresentada pelo Delphi:
ZTable1.Open;
18. Voltamos ao Object Inspector e localizamos agora o evento OnClose do Form. Executamos o duplo-clique
sobre a caixa de seleção ao lado do nome do evento e inserimos o seguinte código na procedure
apresentada pelo Delphi:
ZTable1.Close;
Action:= caFree;
19. No código acima, após fechar a tabela, indicamos que a ação de fechamento deve ser a de liberação do
form da memória (caFree). Neste caso, ao fecharmos o Form, ele é automaticamente destruído e a
memória utilizada por ele é liberada, otimizando assim o uso deste tipo de recurso pela nossa aplicação.
20. Vamos agora ao código-fonte da unit uModelo (executamos F12 caso estejamos visualizando o Form,
alternando assim para o editor de códigos).
21. Localizamos no início do código a declaração da classe do formulário, algo como:
Type
TfmModelo = class(TForm)
...
Private
Public
CampoCodigo: String;
CampoPesquisa: String;
Tabela: String;
End;
22. As linhas em vermelho no código acima, nós devemos adicionar. Estas variáveis serão utilizadas para
tornar o processo de auto-incremento do código da tabela no evento BeforePost genérico (independente
da tabela), de modo que possamos utilizar o mesmo código para diferentes tabelas.
23. Selecionamos agora no Form fmModelo o componente ZTable1. Vamos ao Object Inspector e localizamos
o evento BeforePost.
24. Executamos um duplo-clique na caixa de seleção ao lado do nome do evento e incluímos na procedure
apresentada pelo Delphi o seguinte código:
If ZTable1.State = dsInsert Then
With dmSis Do Begin
zqAux.Close;
zqAux.SQL.Clear;
zqAux.SQL.Add(‘select max(‘ + CampoCodigo + ‘) from ‘ + Tabela);
zqAux.Open;

ZTable1.FieldByName(CampoCodigo).AsInteger:= zqAux.Fields[0].AsInteger + 1;

zqAux.Close;
End;
25. No código acima, estamos referenciando o componente zqAux do DataModule. No entanto, ainda não
inserimos este componente. Assim, vamos ao DataModule e inserimos um componente ZQuery
(ZeosAccess), alterando sua propriedade Name para zqAux e apontando a propriedade Connection para
ZConnection1.
26. Voltamos ao Form fmModelo. Executamos um duplo-clique sobre o Button Localizar e na procedure
apresentada pelo Delphi, incluímos o seguinte código:

If Not ZTable1.Locate(CodigoPesquisa, Edit1.Text, [loCaseInsensitive]) Then

MessageDlg(‘Não foi encontrado registro com o argumento de pesquisa fornecido.’,


mtInformation, [mbOk], 0);

27. Devemos retirar o Form fmModelo da lista de Forms Auto-Create do projeto. Para isso, acessamos a
opções do projeto (Ctrl_Shift+F11) e transferimos o Form fmModelo da caixa Auto-Create Forms para a
caixa Available Forms.
28. Para testarmos se o modelo está ok, vamos ao menu File -> New -> Other... selecionamos a guia com o
nome do projeto em que estamos trabalhando e nela, selecionamos o formulário fmModelo.
29. O Delphi criará um novo Form, que herda todas as características do fmModelo.
30. Neste novo Form, alteramos a propriedade Name para fmCadGeneros e salvamos a unit como
uCadGeneros.
31. Na seção Uses desta nova unit, incluímos a unit uDataModule, para que possamos referenciar o
DataModule.
32. Selecionamos então o componente ZTable1 do fmCadGeneros e na propriedade Connection,
selecionamos dmSis.ZConnection1.
33. Na propriedade TableName do ZTable1, selecionamos public.generos.
34. Executamos um duplo-clique sobre o ZTable1, exibindo o FieldsEditor e nele, clicando com o botão direito
do mouse, selecionamos a opção Add all fields.
35. Em seguida, selecionamos cada um dos campos e no Object Inspector, alteramos a propriedade
DisplayLabel para um nome mais amigável (lembrando que não devemos alterar o FieldName, mas sim
DisplayLabel).
36. Abrimos então as opções do projeto (Ctrl+Shift+F11) e passamos o fmCadGeneros da caixa de Auto-
Create Forms para Available Forms.
37. Vamos ao Form1 (o que foi criado automaticamente pelo Delphi quando criamos o projeto e no qual,
ainda não havíamos mexido). Alteramos a propriedade Name para fmPrincipal e salvamos a unit como
uPrincipal.
38. Incluímos no fmPrincipal um Button. Alteramos a propriedade Caption para Gêneros. Executamos um
duplo-clique sobre o Button e na procedure apresentada pelo Delphi, inserimos o seguinte código:
fmCadGeneros:= TfmCadGeneros.Create(self);
fmCadGeneros.CampoCodigo:= ‘id_genero’;
fmCadGeneros.CampoPesquisa:= ‘nome_genero’;
fmCadGeneros.Tabela:= ‘generos’;
fmCadGeneros.ShowModal;
39. Salvamos (Ctrl+S) e em seguida, executamos a aplicação (F9). O Delphi apresentará uma mensagem
informando que estamos referenciando na unit uPrincipal o form fmCadGeneros e que a unit
uCadGeneros não está na cláusula Uses. Confirmamos a inclusão clicando em Yes e em seguida,
executamos novamente. Clicamos no botão Gêneros e realizamos testes de inclusão, deixando em branco
o campo id_genero para verificar se a rotina de auto-incremento deste campo funcionará corretamente.

Você também pode gostar