PROGRAMAÇÃO
COMERCIAL
MINISTÉRIO DA EDUCAÇÃO
PRÓ-REITORIA DE ENSINO
DEPARTAMENTO DE EDUCAÇAO À DISTÂNCIA
ESCOLA TÉCNICA ABERTA DO PIAUÍ - ETAPI
CAMPUS TERESINA CENTRAL
PROGRAMAÇÃO
COMERCIAL
DISCIPLINA: PROGRAMAÇÃO COMERCIAL – 75H
PRESIDENTE DA REPÚBLICA
Luiz Inácio Lula da Silva
MINISTRO DA EDUCAÇÃO
Fernando Haddad
GOVERNADOR DO ESTADO
Wilson Martins
REITOR DO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO
PIAUÍ
Francisco da Chagas Santana
SECRETÁRIO DE EDUCAÇÃO A DISTÂNCIA DO MEC
Carlos Eduardo Bielschowsky
COORDENADORIA GERAL DA UNIVERSIDADE ABERTA DO BRASIL
Celso Costa
SECRETÁRIA DE EDUCAÇÃO DO ESTADO DO PIAUÍ
Maria Pereira da Silva Xavier
COORDENADORA GERAL DO CENTRO DE EDUCAÇÃO ABERTA A DISTÂNCIA
DO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO PIAUÍ
Elanne Cristina Oliveira dos Santos
SUPERITENDÊNTE DE EDUCAÇÃO SUPERIOR NO ESTADO
Eliane Mendonça
ORGANIZAÇÃO DO MATERIAL DIDÁTICO
Rogério da Silva
4
Boas Vindas!
Caro (a) Cursista
Bem vindo (a) à disciplina PROGRAMAÇÃO COMERCIAL.
Esta é a nossa “Apostila”, material elaborado com o objetivo de
contribuir para o desenvolvimento de seus estudos e para a ampliação
de seus conhecimentos acerca da citada disciplina.
Este texto é destinado aos estudantes aprendizes que participam
do programa Escola Técnica Aberta do Brasil (e-Tec Brasil), vinculado à
Escola Técnica Aberta do Piauí (ETAPI) do Instituto Federal de
Educação, Ciências e Tecnologia do Piauí (IFPI), com apoio da
Prefeitura Municipal dos respectivos pólos: Batalha e Valença do Piauí.
O texto é composto de quatro (04) Aulas assim distribuídas:
Na Aula 1 - Apresentamos os componentes da IDE Lazarus
que auxiliam a criação de aplicações com acesso a base de
dados, através do pacote ZeosLib.
Na Aula 2 – O processo de Conexão com Base de Dados
usando pacote ZeosLib, bem como a interação os dados, listagem
e inserção de registro no Banco de Dados.
Na Aula 3 – Demonstração das operações básicas com
registros no banco de dados: Inserir, Editar, Salvar e Apagar. Há
também a apresentação do Componente MessageDlg do
Lázarus.
Na Aula 4 – Demonstração de uso do componente que permite
a associação entre registro de tabelas diferentes, e finalizamos a
disciplina com Geração de Relatórios usando componente Fortes
Report.
5
Quem sou?
Prof. Esp. Rogério da Silva
Nascido em Teresina-PI, sou graduado em Tecnologia em Análise
e Desenvolvimento de Sistemas, Especialista em Banco de Dados
pelo
Instituto
Federal
do
Piauí
(IFPI).
Trabalho
com
Desenvolvimento de Software Desktop e Sistemas Web a mais de
5 anos, tendo com plataformas o Delphi e Java. Atualmente, sou
professor do Instituto Federal de Educação, Ciência e Tecnologia
do Piauí – IFPI, atuando no Departamento de Sistemas de
Informação da Diretoria de Tecnologia da Informação – Reitoria do
IFPI. Já trabalhei também em Faculdade particular de Teresina,
onde ministrei as disciplinas de Programação Orientada a Objetos
e Design Interface Web. E, agora junto a Equipe de Educação a
distância deste Instituto como Professor Conteudista.
6
Índice Geral
APRESENTAÇÃO ........................................................................................ -4
Índice Geral ....................................................................................................6
Índice de Figuras ............................................................................................7
AULA 1 - COMPONENTE LÁZARUS PARA ACESSO A BANCO DE DADOS- 9
1.1 - Aplicação com acesso a base de dados.........................................10
1.2 - Principais componentes da paleta data controls .............................11
1.3 - O componente Tdatasource ..........................................................13
1.4 - Pacote de Zeoslib. ........................................................................14
1.5 - Instalando sgbd Mysql 5 e cliente de acesso. .................................17
AULA 2 - Conexão com Base de Dados usando o pacote ZeosLib ...........32
2.1 - O projeto....................................................................................... 33
2.2 - Iniciando o projeto .........................................................................35
2.3 - Tela listagem de cargos ................................................................41
2.4 - Tela de adicionar novo cargo.........................................................43
2.5 - Linkando as telas ..........................................................................44
2.6 - O componente data module...........................................................47
2.7 - Componentes zeoslib ....................................................................48
2.8 - Associando elementos data controls com data source ....................51
AULA 3 - Operações básicas com registros de bancos de dados ............-56
3.1 - Operações Insert e post do dataset. ..............................................57
3.2 - Operação Edit do dataset ..............................................................55
3.3 - Operação Delete do dataset ..........................................................62
3.4 - O componente lázarus MessageDlg ..............................................63
AULA 4 - Associação entre registros de tabelas, e Geração de Relatórios-66
4.1 - O componente DBLookupCombobox .............................................67
4.2 - Pacote de componentes Fortes Report ..........................................70
7
Índices de Figuras
Figura 1 – Estrutura simplificado de Aplicação com Banco de Dados
Figura 2 - Patela Data Controls do Lázarus
Figura 3 – Propriedades de Banco de Dados do DBEdit
Figura 4 – Paleta de Componentes Data Access Lázarus
Figura 5 – Propriedades de TDataSource
Figura 6 – Pasta do ZeosLib
Figura 7 – IDE Lázarus
Figura 8 – Instalação de Novo Pacote no Lázarus
Figura 9 – Compilação e Instalação de pacote no Lázarus
Figura 10 – Download do MySQL
Figura 11 – Instalação do MySQL
Figura 12 – Instalação do MySQL
Figura 13 – Instalação do MySQL
Figura 14 – Instalação do MySQL
Figura 15 – Configuração do MySQL
Figura 16 – Configuração do MySQL
Figura 17 – Configuração do MySQL
Figura 18 – Configuração do MySQL
Figura 19 – Configuração do MySQL
Figura 20 – Configuração do MySQL
Figura 21 – Configuração do MySQL
Figura 22 – Configuração do MySQL
Figura 23 – Acesso o MySQL com
Figura 24 – Tela do HeidiSQL
Figura 25 – Criando novo banco de dados com HeidiSQL
Figura 26 – Modelo ER da Aplicação de Cadastro de Empresa
Figura 27 – Modelo ER da Aplicação de Cadastro de Empresa
Figura 28 – Tela de Menu Environment Lázarus
Figura 29 – Edição de Opções do Lázarus
Figura 30 – Novo Projeto no Lázarus
Figura 31 – Adicionando StatusBar no Lázarus
Figura 32 – Edição de Menu na Aplicação.
Figura 33 – Menu de Aplicação.
Figura 34 – Menu de Aplicação.
Figura 35 – Menu de Aplicação.
Figura 36 – Menu de Aplicação.
Figura 37 – Menu de Aplicação.
Figura 38 – Código Fonte para Fechar Formulário.
Figura 39 – Formulário de Listagem de Cargos.
Figura 40 – Formulário de Lista de Cargos.
Figura 41 – Formulário de Lista de Cargos.
Figura 42 – Formulário de Cadastro de Cargo.
Figura 43 – Formulário de Cadastro de Cargo.
Figura 44 – Exibindo Units.
Figura 45 – importanto units.
Figura 46 – Invocando outro Formulário.
Figura 47 – Invocando outro Formulário.
Figura 48 – Invocando outro Formulário.
Figura 49 – Criando um objeto Data Module.
Figura 50 – Objeto Data Module.
Figura 51 – Field Editor de Campos do DataSet.
Figura 52 – Componente Data module.
Figura 53 – Editor de Colunas do DBGrid.
8
Figura 54 – Editor de Colunas do DBGrid.
Figura 55 – Propriedades do DBEdit.
Figura 56 – HeidiSQL, Editando Tabela.
Figura 57 – HeidiSQL, Editando Tabela.
Figura 58 – Procedimento Insert do DataSet.
Figura 59 – Procedimento Post do DataSet.
Figura 60 – Formulário Lista de Cargos.
Figura 61 – Procedimento Edit do DataSet.
Figura 62 – Editando Cargo.
Figura 63 – Editando Cargo.
Figura 64 – Procedimento Cancel do DataSet.
Figura 65 – Procedimento Delete do DataSet.
Figura 66 – Procedimento Delete do DataSet com MessageDlg.
Figura 67 – Mensagem de Confirmação com MessageDlg.
Figura 68 – Formulário de Listagem de Funcionários
Figura 69 – Formulário de Cadastro de Funcionários com DBLookupCombobox.
Figura 70 – Paleta de componentes do Fortes Report.
Figura 71 – Paleta de componentes do Fortes Report.
Figura 72 – Componente TRLReport do Fortes Report.
Figura 73 – Componente TRLReport do Fortes Report.
Figura 74 – Código Fonte uniRelatorioSetores.
Figura 75 – Tela Menu Listagem de Setores.
Figura 76 – Tela Relatório Listagem de Setores.
Componente Lázarus
para Acesso a Banco de
Dados
1
9
Aula
Meta da Aula
Apresentar os componentes da
IDE Lazarus que auxiliam a criação
de aplicações com acesso a base
de dados.
Objetivos
Ao final desta aula, você deverá ser
capaz de:
1. Entender a arquitetura de uma
Aplicação com Acesso a Banco de
Dados;
2. Conhecer componentes da Paleta
Data Controls e o TDataSource da
Paleta Data Access;
3. Instalar a pacote de acesso a
banco de dados Zeos e o SGBD
MySQL 5 e Cliente de Acesso.
10
1.1
– APLICAÇÃO COM ACESSO A BASE DE
DADOS
Uma aplicação que não guarda a informações com as quais ela
trabalha após ser fechada tem uso muito restrito. Por Exemplo, o
aplicativo Calculadora do Windows cada vez que é iniciado não
resgata qualquer operação que tenha feita noutro momento.
Para se guardar os dados de uma aplicação precisamos que um
novo componente comumente chamado de Banco de Dados. De
forma simples podemos definir Banco de Dados com sendo uma
coleção de dados inter-relacionados sobre determinado assunto.
Exemplos de aplicações com banco de dados do dia-a-dia temos:
Agenda Telefônica, Catálogo de uma Locadora, Cadastro de
produtos de um comércio bem como seus registro de venda.
Internamento um Sistema de Banco de Dados Relacional
organiza os dados nas chamadas Tabelas, e estas por si são
composta por um conjunto de campos, ou atributos, onde cada
linha desta tabela consiste num registro.
Os mais famosos Sistemas de Banco de Dados gratuitos do
mercado são o MySQL e PostgreSQL. No decorrer da nossa
aplicação que será desenvolvida nesta disciplina vamos utilizar o
MySQL na sua versão 5.
11
Com uso de banco de dados a aplicação desenvolvida com o
Lazarus ficará com a seguinte arquitetura:
Aplicação
Banco de
Dados
Figura 1 – Estrutura simplificado de Aplicação com Banco de Dados
1.2
– PRINCIPAIS COMPONENTES DA PALETA
DATA CONTROLS
Na disciplina de Programação em Ambiente Gráfico você
conheceu uma série de componentes, principalmente das paletas
Standart e Additional, que auxiliam da construção de interfaces
(formulários) para as aplicações.
São componentes como Labels, Edits, Memo e outros que são
geralmente usados para entrada ou exibição de dados do
programa.
Para construção de aplicação com uso de banco de dados a IDE
Lazarus nos disponibiliza a paleta Data Controls.
12
Figura 2 - Patela Data Controls do Lázarus
Podemos observar uma relação entre os componentes desta
paleta com os que você já conhece. Exemplo, você já conhece o
componente TEdit, aqui temos o TDBEdit, outro elemento é o
TLabel cujo o correspondente é o TDBedit.
Como você observou temos o prefixo DB nos elementos, que
denota que estes componentes são próprios para uso em
aplicação com acesso a banco de dados.
Na aplicação que desenvolveremos vamos usar principalmente os
componentes:
TDBLabel – Exibe um texto a partir do banco de
dados, de forma “somente leitura”;
TDBEdit – Permite receber do usuário ou exibir do
banco de dados um valor tipo texto.
TDBMemo – Componente usado para receber do
usuário ou exibir do banco de dados um texto maior
que o permitido pelo TDBEdit.
TDBNavigator – permite navegar num conjunto de
registro de banco de dados.
TDBGrib – Permite exibir de forma tabular os dados
oriundo do banco de dados.
Tabela 1 – Alguns Componente da Paleta Data Controls
13
1.3
– O COMPONENTE TDATASOURCE
Você acabou de conhecer os principais componentes de
manipulação de dados com uma base de dado.
O componente TDataSource trabalha exercendo a função de
comunicação entre DataSets (vamos ver mais afrente.) e os
componentes DataControls. Todo DataSet (Table, Query, etc.)
deve ser associado a um componente DataSource para que seus
dados possam ser exibidos em componentes Data Controls.
Ou seja, são eles que entregam os dados para os elementos Data
Controls. Devido a isso, todo componente Data Controls em suas
propriedades deve definir a qual DataSource e Campo este estar
representando.
Figura 3 – Propriedades de Banco de Dados do DBEdit
Podemos observar a propriedade DataSource que aponta para
um Componente TDataSource chamado DSPost e ao Campo
(propriedade DataField) titulo.
14
Então o DBEdit1 está associado com campos titulo de uma
DataSource DSPost, que se comunica com uma tabela de Posts
de Blog.
O Componente TDataSource é o primeiro elemento da paleta
Data Access, e tem poucas propriedades, dentre as quais a mais
importante é DataSet que define o nome da DataSet, ou tabela,
ao qual este esta associado.
Figura 4 – Paleta de Componentes Data Access Lázarus
Propriedades de um TDataSource:
Figura 5 – Propriedades de TDataSource
A propriedade AutoEdit quando True possibilita que os dados
entrem em modo de edição automaticamente quando o usuário
clica em algum componente associado com DataSource (Ex.:
TDBEdit, TDBGrid).
1.4
- PACOTE DE ZEOSLIB.
ZeosLib é pacote composto por um conjunto de componentes que
facilitam a comunicação com Banco de Dados como o MySQL.
15
Baixando e Instalando o pacote Zeoslib
Acesse a página http://sourceforge.net/projects/zeoslib/files/ e
faça o download da último versão estável do Zeos. Neste material
usamos a v. 6.6.6.
Após o download descompacte a pasta para prosseguirmos para
instalação do pacote no Lazarus.
Figura 6 – Pasta do ZeosLib
Pronto. Agora abra a sua IDE Lazarus.
Figura 7 – IDE Lázarus
Com o Lazarus aberto vá no Menu Package e clique no item
Open Package File (.lpk).
16
Figura 8 – Instalação de Novo Pacote no Lázarus
Após clicar aparecer a janela para você localizar o pacote a ser
instalado, no caso o Pacote Zeos para Lazarus.
Localize o diretório onde você descompactou o Zeos que foi
baixado e navegue até chegar no componente para Lazarus, pelo
seguinte caminho: ..\ZEOSDBO-6.6.6-stable\packages\lazarus e
selecione o zcomponente.lpk.
Após selecionar o zcomponente será exibido uma tela nesta
clique em Compilar.
Figura 9 – Compilação e Instalação de pacote no Lázarus
17
Após compilar com sucesso, clique no botão Install. Será
solicitado confirmação para aceite e seu Lazarus será reiniciado
para finalizar a Instalação do Pacote Zeos.
Ao reiniciar deverá aparecer uma nova paleta chamada Zeos
Access.
Esta paleta contém os componentes que nos permitem acessar
as tabelas do banco de dados, nos habilitando a Inserir, Consulta,
Atualizar ou até mesmo Excluir registro.
Principais componentes do Pacote ZeosLib:
TZConnection – Permite estabelecer conexão com a
base de dados.
TZReadOnlyQuery – Permite definição de Instrução
SQL que realizar consulta somente leitura.
TZQuery – permite definição de consulta com Ling.
SQL.
TZTable – Componente que fica associado a uma
tabela no banco de dados, permitindo leitura e
atualização dos seus, inclusive deleção.
TZUpdateSQL – Permite construção de Instruções
SQL que alterem valores de atributos de uma tabela
no banco de Dados.
TZStoredProc – Permite invocar uma Stored
Procedures definida no banco de Dados.
Tabela 2 – Componentes da Paleta Zeos
1.5
– INSTALANDO SGBD MYSQL 5 E CLIENTE DE
ACESSO.
Para desenvolvimento da aplicação em nossa disciplina vamos
usar o banco de dado MySQL 5. Caso você já o tenha instalado
em seu computador é necessário apenas que você copie o
arquivo libmySQL.dll do diretório de instalação do mySQL
...\MySQL\MySQL
C:\Winsows\System32
Windows.
Server
caso
5.0\bin
utilize
para
sistema
pasta
operacional
18
Baixando o instalador Mysql 5
Acesse
a
página
http://dev.mysql.com/downloads/mysql/
e
selecione a MYSQL Community Server 5 como a figura abaixo
mostra:
Figura 10 – Download do MySQL
Instalando o MYSQL 5
Fonte: (http://www.juliobattisti.com.br/tutoriais/almirrivas/php002.asp)
Após download proceda com a instalação.
Na tela de boas vindas do instalador do MySQL clique em Next
19
Figura 11 – Instalação do MySQL
Na próxima janela selecione o tipo de instalação (Typical) e em seguida
clique em Next
Figura 12 – Instalação do MySQL
Confirme as escolhas da instalação e clique em Next
20
Figura 13 – Instalação do MySQL
Aguarde enquanto o MySQL é instalado
Figura 14 – Instalação do MySQL
21
Salte o login no MySQL selcionando Skip Sign-Up e clique em
Next
Figura 15 – Configuração do MySQL
Selecione Configure the MySQL Server Now e clique em Next
Figura 16 – Configuração do MySQL
22
Na tela de boas-vindas da configuração clique em Next
Figura 17 – Configuração do MySQL
Selecione Standard Configuration e em seguida clique em Next
23
Figura 18 – Configuração do MySQL
Selecione Install As Windows Service e em seguida clique em
Next
Figura 19 – Configuração do MySQL
24
Selecione Modify Security Settings digite a senha na caixa de
texto New root password e confirme a senha digitando-a
novamente na caixa Confirm e em seguida clique em Next.
Atenção: Guarde esta senha vamos precisar dela mais tarde.
Figura 20 – Configuração do MySQL
Execute a configuração clicando em Execute
25
Figura 21 – Configuração do MySQL
Após finalizar a configuração e clique em Finish.
Figura 22 – Configuração do MySQL
26
Clientes de Acesso ao MySQL.
O Mysql por si só não vem com interface gráfica para acessar o
servidor de banco de dados. Existem várias opções de clientes
para o MySQL que nos permitem realizar a deversas operações
permitidas pelo banco, tais como: criar banco, criar tabelas,
realizar consultas etc.
Baixa e Instale a sua preferência.
HeidiSQL - http://www.heidisql.com/download.php
SQLYog – http://www.webyog.com/en/downloads.php
MySQL GUI Tools - http://dev.mysql.com/downloads/guitools/5.0.html
27
Testando o MySQL com Heidi SQL
Caso tenha instalado o HeidiSQL abra-o e será exibida a seguinte
tela.
Figura 23 – Acesso o MySQL com HeidiSQL
Nela informe os dados referente ao seu MySQL.
Network Type: Deixo TCP/IP
Hostname / IP: informe onde estar instalado o MYSQL no caso
na sua própria máquina (127.0.0.1)
User: user o usário que foi solicitado durante a instalação (root)
Password: a senha que foi informada durante a instalação.
Port: por padrão é 3306, caso tenha mudado na instalação favor
informar.
Após informar os dados e clique em Open e será exibido a
seguinte tela.
28
Figura 24 – Tela do HeidiSQL
Criando um Banco de Dados
Clique com botão direito sobre ([email protected]) e escolha Create
New > DataBase.
Figura 25 – Criando novo banco de dados com HeidiSQL
E crie um banco chamado empresa. Vamos utilizar esse banco
na aplicação que vamos construir no decorrer da disciplina.
Nossa aplicação será o cadastro de funcionários em uma
empresa.
As tabelas inicialmente necessárias e seus atributos são:
29
Figura 26 – Modelo ER da Aplicação de Cadastro de Empresa
Temos no Diagrama ER acima a estrutura em que um
Funcionário tem alguns atributos e se associa com Tabela Cargo,
além disso, o funcionário tem relacionamento com tabela Setor.
O Script SQL para criação dessa estrutura no mySQL é:
CREATE TABLE Cargo (
cargo_id INT NOT NULL,
nome CHAR(60)
);
ALTER TABLE Cargo ADD CONSTRAINT PK_Cargo PRIMARY KEY
(cargo_id);
CREATE TABLE Setor (
setor_id INT NOT NULL,
nome CHAR(60)
);
ALTER TABLE Setor ADD CONSTRAINT PK_Setor PRIMARY KEY
(setor_id);
CREATE TABLE Funcionario (
funcionario_id INT NOT NULL,
cargo_id INT NOT NULL,
setor_id INT NOT NULL,
nome CHAR(60),
cpf CHAR(14),
data_nascimento DATE,
rg CHAR(30)
);
ALTER TABLE
PRIMARY KEY
ALTER TABLE
FOREIGN KEY
ALTER TABLE
FOREIGN KEY
Funcionario ADD CONSTRAINT PK_Funcionario
(funcionario_id,cargo_id,setor_id);
Funcionario ADD CONSTRAINT FK_Funcionario_0
(cargo_id) REFERENCES Cargo (cargo_id);
Funcionario ADD CONSTRAINT FK_Funcionario_1
(setor_id) REFERENCES Setor (setor_id);
30
Com seu HeidiSQL aberto selecione o banco Empresa e na Aba
Query cole o Script acima e Execute para pode criar as tabelas.
E por último: copie o arquivo libmySQL.dll do diretório de
instalação do mySQL ...\MySQL\MySQL Server 5.0\bin para
pasta C:\Winsows\System32 caso utilize sistema operacional
Windows. Esse procedimento é necessário para que o Zeos
consiga se conectar a nossa base de dados.
EXERCÍCIOS
1) O objetivo geral da Disciplina Programação Comercial é
apresentar e usar as principais ferramentas que auxiliam a
criação de aplicações com uso de banco de dados. Diante
disso, monte o ambiente em nível de banco de dados
necessário para construção da aplicação.
a. Instale e Configure o SGBD MySQL 5;
b. Instale o cliente de acesso ao mySQL HeidiSQL;
c. Já com o HeidiSQL e o MySQL instaldos crie o
banco de dados que será usado em nossa
aplicação.
2) Adicione o pacote Zeoslib a sua instalação do Lazarus.
3) Faça um gráfico demonstrativo com elementos envolvidos
numa aplicação comercial com banco de dados e Zeos.
Abuse dos detalhes.
31
RESUMO DA AULA
Nesta conhecemos e aprendemos a configurar o ambiente
necessário para construção de Aplicações comerciais usando a
IDE Lázarus.
NA PRÓXIMA AULA
Na aula 2 daremos inicio a construção de uma aplicação de
exemplo para demonstrar a utilização do pacote Zeoslib.
Conexão com Base de
Dados usando o pacote
ZeosLib
2
32
Aula
Meta da Aula
Demonstrar
o
processo
de
Conexão com Base de Dados
usando a Biblioteca Zeos bem
como a interação os dados.
Objetivos
Ao final desta aula, você deverá ser
capaz de:
1. Construir Formulário de Cadastro com
Campos associados com TDataSources;
2. Usar o componente Data Module do
Lazarus;
3. Conectar a uma Base de Dados mySQL
com o pacote Zeos;
4. Usar os componentes DataSets para
comunicação com tabelas do Banco de
Dados;
5. Listagem em Grids de Registros de Banco
de Dados.
33
2.1
- O PROJETO
Vamos construir uma Aplicação Comercial que realiza o
cadastro de Setores, Cargos e Funcionário de Empresa.
A Interface será construída na IDE Lazarus com os
conhecimentos que você já tem e os demais que irá adquirir
no decorrer desta disciplina.
A Base de Dados será o SGBD MySQL 5, já instalado na
aula 1, com banco de dados também já criado na aula
passada. Como já visto, inicialmente será necessária a
seguinte estrutura:
Figura 27 – Modelo ER da Aplicação de Cadastro de Empresa
Novos atributos ou tabelas poderão adicionas no decorrer no
projeto.
Na disciplina de Programação em Ambiente Gráfico foi
apresentado que a IDE Lazarus tem o recurso de ser exibido
em vários idiomas.
Com
objetivo
de
ambientá-lo
com
os
termos
indispensáveis(e já convencionados) no mercado de
34
trabalho e reforçado com a já sabida necessidade de
domínio mínimo da língua Inglesa no decorrer desta
disciplina vamos usar o Lazarus em seu idioma padrão: O
Inglês.
Nomes de formulários, telas, units e outros elementos
também podem aqui conter termos comumente usados na
comunidade desenvolvimento software, estes quase sempre
em Inglês, porém de fácil compreensão. Caso haja dúvidas,
esclareça-a com seu tutor presencial ou à distância.
Caso seu lazarus já esteja em Português proceda com
mudança conforme abaixo:
Figura 28 – Tela de Menu Environment Lázarus
Depois em:
Figura 29 – Edição de Opções do Lázarus
35
Com todo o ambiente pronto vamos iniciar a aplicação.
2.2
- INICIANDO O PROJETO
Tela Principal
Com a IDE Lazarus aberta inicie um novo Projeto (File >
New > Project > Application). Imediatamente salve seu
projeto dentro de um diretório chamado preferencialmente
de Empresa.
Lembre-se: Use nomes padronizados e significativos para
todos os elementos em seu projeto, isso ajuda na
organização e futuras manutenções do Programa. Não é
obrigatório usar o mesmo padrão usado no decorrer desta
disciplina, o importante é sempre estabelecer um padrão.
Primeiro o Lazarus pede o nome da Unit, bote uniPrincipal,
depois o Projeto em si, coloque prjEmpresa.
Figura 30 – Novo Projeto no Lázarus
Expanda o form1 até ocupar a área disponível. Seu projeto
deve estar como acima.
36
Edite as propriedades do form1 conforme abaixo:
Caption
Sistema de Cadastro de Funcionários
Name
frmPrincipal
WindowState
wsMaximized
Adicionando Barra de Status
Adicione um componentes TStatusBar disponível na Paleta
Common Controls. Depois De clique duplo sobre ela, e na
tela que se abre adicione dois elementos com as seguintes
propriedades:
Figura 31 – Adicionando StatusBar no Lázarus
Item 1 da Barra de Status
Alignment
taLeftJustify
Text
Sistema de Cadastro de Funcionários
Width
300
Item 2 da Barra de Status
37
Alignment
taCenter
Text
Desenvolvido Pro <Seu Nome>
Width
0
Adicionando Menus
Adicione ao frmPrincipal um componente TMainMenu,
disponível na paleta Standard, dê um clique duplo sobre ele
deverá aparecer a tela como abaixo:
Figura 32 – Edição de Menu na Aplicação.
Dê um clique simples o elemento New Item1 e edite as suas
propriedades:
Caption
Aplicação
Clique agora com o botão direito que selecione a primeira
opção (Insert new Item (after)).
38
Figura 33 – Menu de Aplicação.
Clique agora sobre este novo item e edite as suas
propriedades como abaixo:
Caption
Cadastro
Dê um clique duplo agora sobre o item Cadastro e adicione
um novo elemento (after), editando as suas propriedades
como abaixo:
Caption
Relatórios
Adicione mais um elemento, com as propriedades:
Caption
Sobre
Após todos esses passos o Menu deve estar assim:
39
Figura 34 – Menu de Aplicação.
Adicionando Submenus
Agora vamos adicionar os SubMenus em cada menu
Principal. Para isso dê um clique duplo sobre o menu
Aplicação e selecione a opção Create SubMenu, observe
imagem abaixo.
Figura 35 – Menu de Aplicação.
40
No SubMenu que aparece edite sua propriedade Caption
para Sair. O Menu deve ficar como abaixo:
Figura 36 – Menu de Aplicação.
Agora que você já sabe criar Menu e SubMenus, termine
que fazer a árvore de Menu como detalha a tabela abaixo.
Observação: para adicionar mais elementos no SubMenu
selecione a opção Insert New Item(after).
Aplicação
Cadastro
Relatórios
Sair
Funcionários
Listagem
Sobre
de
Ajuda
Funcionários
Cargos
Listagem de Cargos
Setores
Listagem de Setores
Sobre o projeto
Evento onClick do Item Sair
Selecione o SubItem Sair no Menu Aplicação e dê um
clique duplo sobre este, isso fará com que seja exibido o
código para o evento OnClick deste elemento.
Figura 37 – Menu de Aplicação.
41
Aparecerá o Código fonte:
Digite Cl e pressione simultaneamente Ctrl + <Space>,
aparecerá uma lista de opções, nela selecione a procedure
Close. Esse procedimento tem a função de fechar a tela
atual.
Figura 38 – Código Fonte para Fechar Formulário.
Salve a aplicação (Ctrl + S), Compile (Ctrl + F9) e Execute
(F9) para testar o evento que acabamos de programar. Se
você seguiu corretamente os passos acima, assim que clicar
no submenu Sair a aplicação será finalizada.
2.3
– TELA LISTAGEM DE CARGOS
Vamos
construir
agora a
tela que lista
os
cargos
cadastrados, e disponibiliza botões para Novo, Editar e
Excluir.
Adicione um novo Form (File > New Form) e define suas
propriedades como abaixo.
Name
frmCargoLista
42
Caption
Cadastro de Cargos
Width
500
Height
380
Salve (Ctrl + S) com o nome de uniCargoLista.
Adicione dois TGroupBox, disponível na Paleta Standard.
Figura 39 – Formulário de Listagem de Cargos.
Modifique suas propriedades Caption para Opções e
Listagem respectivamente, e redimensione-os como na tela
acima.
No primeiro GroupBox adicione quatro botões(TButton) e
modifique suas propriedades como abaixo.
Caption
Novo, Editar, Excluir e Sair, repectivamente
Name
btnNovo, btnEditar, (....)
Witdh
65
Agora, da paleta Data Controls adicione um componente
TDBGrid, é último elemento da paleta.
43
Figura 40 – Componente Data Controls DBGrid.
Redimensione o DBGrid e defina a propriedade name como
gridCargos.
Seu formulário deve estar assim:
Figura 41 – Formulário de Lista de Cargos.
2.4
- TELA DE ADICIONAR NOVO CARGO
Vamos agora construir a tela para cadastro de novo cargo.
Adicione novo Form, adicione um TGroupBox e depois
TButton, edite todas as propriedades necessário dos
elementos(Form, GroupBox e Botoes) até que fique como
abaixo:
44
Figura 42 – Formulário de Cadastro de Cargo.
De o nome padronizado ao formulário (frmCargoFormulario),
bem como aos botões (btnSalvar e btnCancelar).
Salve (Ctrl + S) a Unit. Lembre da padronização dos nomes.
Adicione uma TLabel da Paleta Standard e um TDBEdit da
Paleta Data Controls. Edite todas propriedades necessárias
para o formulário ficar como abaixo.
Figura 43 – Formulário de Cadastro de Cargo.
Por enquanto, estão prontos nossas telas de Lista de Cargo
e Formulário de Cargo.
2.5
- LINKANDO AS TELAS
Como já temos algumas telas já desenhas precisamos agora
fazer com uma tela chame a outros.
45
Para que a partir de uma tela você referencie outro Form é
necessário adicionar a Unit daquele neste. Vamos entender
isso na prática.
Vá para Unit uniprincipal, use o atalho View Units.
Figura 44 – Exibindo Units.
Na uniprinciapal vá no início do código fonte, na seção uses,
e no final da lista adicione a refere para unicargolista
digitando uni depois pressione simultaneamente Ctrl +
<space>, deverá exibido uma lista com opções, nesta
selecione a unicargolista. Imagem abaixo:
Figura 45 – importanto units.
Feito isso, agora volte para o formulário (frmPrincipal), use o
atalho F12, este alterna entre Form e Unit. Vá no Menu
Cadastro e dê um clique duplo sobre o submenu Cargos,
isso fará abrir código fonte referente ao evento onClick deste
elemento.
46
Já no código fonte digite frm e pressione simultaneamente
Ctrl
+
<space>,
na
lista
que
se
abre
selecione
frmCargoLista.
Figura 46 – Invocando outro Formulário.
Depois digite .show e selecione a procedure ShowModal.
Figura 47 – Invocando outro Formulário.
Pronto. Agora salve (Ctrl + S), Compile (Ctrl + F9) e Execute
para Testar (F9). Se você tiver seguido corretamente os
passos assim que você selecionar Em Cadastro > Cargos
será exibido a tela Como abaixo.
47
Figura 48 – Invocando outro Formulário.
Clique no botão sair da tela que se abre. Verá que estão não
irá fechar. Pois você ainda não programou este evento.
Aproveite e faço isso agora.
Adicione o evento onClick no botão Editar(btnEditar) para
invocar o formulário de Cargo. Lembre-se de adicionar em
uniCargoLista
na
seção
uses
referencia
para
Unit
uniCargoFormulario.
2.6
- O COMPONENTE DATA MODULE
O Componente Data Module é um elemento muito útil em
sistemas que usam banco de dados. Com ele é possível
organizar
de
forma
Centralizada
todos
os
elementos/componente de interação com o banco de dados.
Para adicionar um Data Module no nosso projeto vá em File
> New e Selecione Data Module na seção Module, como da
imagem abaixo:
48
Figura 49 – Criando um objeto Data Module.
Altere sua propriedade Name para dmBanco. Salve e de o
nome da Unit unidmbanco.
Para acessar os componentes do Data Mudule, basta
adicionar sua Unit: unidmbanco na seção Uses do
Formulário que for necessário.
Figura 50 – Objeto Data Module.
2.7
- COMPONENTES ZEOSLIB
Estudamos na Aula 1, com instalar o pacote Zeos, que é um
a biblioteca que auxilia na construção de aplicações com
Banco de Dados.
49
Vamos iniciar agora o uso desta biblioteca para Conectar
com nossa base de dados já criada na aula passada.
Componente TZConnection
Para realizar a conexão em si, usamos o componente
TZConnection, é o primeiro componente da Paleta Zeos
Access, apresentada na primeira aula.
Certifique-se que o servidor MySQL esteja iniciado.
Após
incluir
o
componente
de
conexão
edite
sua
propriedades com na tabela abaixo:
Database
Empresa
HostName
Localhost
User
Root
Password
<a senha informada na instalação do
mySQL.>
Protocol
mysql-5
Name
conexao
Para testar a conexão, mude a propriedade Connected para
true. Se tiver seguido corretamente os passos, deve
conectar sem erros.
Em caso de erros verifique as propriedades como acima e
certifique-se que o Mysql esteja devidademtente iniciado e
que copiou o arquivo libmysql.dll, conforme expresso na aula
1.
50
O Componente TZTable
Para se trabalhar com os dados da tabelas do banco de
dados precisamos de uma componente TZTable, que se
comunica diretamente com elas. Permitindo operação de
Inserção, Listagem, Atualização etc.
Adicione um componente TZTable no Data Module e edite
suas propriedades como abaixo:
Connection
Selecione conexao
Name
tbCargo
TableName
Selecione cargo
SortedFields
nome
Após definir as propriedades acima mude a propriedade
Active para True. Após isso, dê um clique duplo sobre o
componente tbCargo e será exibido o Field Editor, onde é
possível editar propriedades de cada atributo da tabela.
Para adicionar os campos, no Edit Fields, clique com o botão
direito e selecione a opção Add Fields.
Figura 51 – Field Editor de Campos do DataSet.
51
Para que os elementos Data Controls possam se comunicar
com os atributos da tabela é necessário o uso do
componente TDataSource, da Aba Data Access.
Adicione um TDataAccess no Data Module e edite as
propriedades como abaixo.
AutoEdit
False
DataSet
Selecione tbCargo
Name
DsCargo
A propriedade AutoEdit impede que nos formulários os
campos entre em modo de Edição automaticamente,
inclusive em DBGrids. Dataset indica qual a tabela/consulta
o DataSource esta associado.
Figura 52 – Componente Data module.
Seu Data Module (dmBanco) deve estar como acima da
figura.
2.8
-
ASSOCIANDO
ELEMENTOS
DATA
CONTROLS COM DATA SOURCE
Como já citado, para poder interagir com os dados do banco
de dados os Elementos Data Controls precisar se comunicar
através de componentes Data Sources.
52
No
formulário
frmCargoLista,
selecione
o
DBGrid
gridCargos, e modifique a propriedade DataSource,
selecionando dmBanco.dsCargo.
Para adicionar os campos para serem listados no Grid
precisamos fazer isso explicitamente para cada campo. Dê
um clique duplo sobre o Grid, deve aparece a uma pequena
tela como da figura abaixo:
Figura 53 – Editor de Colunas do DBGrid.
Adicione um elemento clicando no botão Add, depois edite
suas propriedades, selecionando em FieldName a opção
cargoid, depois em Title, modifique a subpropriedade
Caption para ID.
Depois adicione outro elemento e ajustes as mesmas
propriedades acima, porém agora para o campo nome.
Altere também a propriedade width do campo nome para
300.
Seu Grid deve estar como na imagem abaixo.
53
Figura 54 – Editor de Colunas do DBGrid.
Vamos fazer a associação com TDataSource também no
formulário frmCargoFormulario.
Abra o formulário e selecione o TDBEdit correspondente ao
nome do cargo (edNome) e defina as propriedades
DataField e DataSource como na Ilustração abaixo:
Figura 55 – Propriedades do DBEdit.
DataField = nome
DataSource = dmBanco.dsCargo.
Campo com Auto Incremente
Geralmente as chaves primeiras de tabelas em banco de
dados são do tipo autoincremento, ou seja, você não precisa
se preocupar com os valores destes campos. Na nossa
54
aplicação isso ainda não está definido. Vamos abrir o
HeidiSQL e definir essa propriedade.
1) Acesse o nosso banco: empresa;
2) Clique com o botão direito sobre a tabela cargo e
selecione a opção Edit.
Deve aparecer a seguinte tela:
Figura 56 – HeidiSQL, Editando Tabela.
Clique sobre No Default, e selecione AUTO_INCREMENT.
Figura 57 – HeidiSQL, Editando Tabela.
Faça isso somente com o campo cargo_id, a chave primeira
da tabela Cargo. Depois clique em Save, no rodapé da
página para efetivar a alteração.
Repita a operação acima com as demais tabelas do nosso
banco de dados.
55
EXERCÍCIOS
1) No decorre desta aula já iniciamos a construção da nossa
aplicação. Tendo como exemplo o formulário de Cadastro
de Cargos apresentado, crie as Telas de Listagem de
Setores, e o Formulário de Cadastro de Setores.
a. Use groupbox para organizar os elementos;
b. Para os campos de dados use os componentes Data
Controls;
c. Faça toda a programação quanto a invocação de
formulário e fechamento de telas.
2) No
Data
Module
adicione
os
componentes
Zeos
necessários para conexão com a tabela setores no banco
de
dados,
adicione
também
um
componente
TDataSource;
3) Ligue os elementos DataControls dos formulários aos
seus respectivos campos através do DataSource.
4) Altere no banco de dados o campo setor_id para ser
Auto-Incremento.
RESUMO DA AULA
Nesta aula conhecemos e aprendemos a usar alguns
componentes do pacote ZeosLib. Foi também demonstrado
como criar formulário de cadastro, com campos que se
associam com atributos de tabelas do banco de dados.
NA PRÓXIMA AULA
Veremos com realizar operações básicas de cadastro, tais
como inserir, editar, gravar e apagar registros.
Operações
básicas
com
registros
de
bancos de dados
3
56
Aula
Meta da Aula
Demonstrar as operações básicas
com registros de bancos de dados:
Inserir, Editar, Salvar e Deletar.
Objetivos
Ao final desta aula, você deverá ser
capaz de:
1. Inserir novos registros no banco de dados
usando a biblioteca Zeos;
2. Editar e Excluir registros já existentes na
base de dados;
3. Usar o componente MessageDlg do
Lázarus.
57
3.1
- OPERAÇÕES INSERT E POST DO DATASET.
Como já foi dito, com o componente Dataset TZTabel é possível
realizar operações no banco de dados, como por exemplo
adicionar registros.
Essas operações estão disponibilizadas através de alguns
procedures. As principais são: insert, post, cancel, edit e delete.
Iniciando Inserção com Insert
Para inserir um novo registro no banco de dados, precisamos
primeira botar o Dataset em modo de inserção, para isso
invocamos o procedure insert da tbCargo. Vamos fazer isso no
evento onClick do botão Novo do formulário frmCargoLista.
Lembre-se: Para acessar os elementos da unit do DataModule é
necessário adicionar
a unidmbanco na seção uses da
unicargolista, assim como nas demais Unit onde será feito
referencia para algum elemento do Data Module.
No frmCargoLista, dê um clique duplo sobre o botão Novo, isso
fará aparecer o código fonte para o evento onClick deste botão,
dentro dele coloque o código a seguir, antes do código que faz
invocar o formulário para novo cargo
Figura 58 – Procedimento Insert do DataSet.
58
.
Lembre-se: Use o atalho Ctrl + <space> para usar o recurso de
Auto Completar do Lazarus.
Confirmar inclusão com Post
No código acima colocamos a Tabela Cargo em modo de edição
e exibimos o formulário para captura dos dados.
Agora é momento de programar a confirmação dessa inclusão.
Para isso, abra o frmCargoFormulario e de um clique duplo sobre
o botão Salvar.
Dentro do procedimento coloque o código como abaixo:
Figura 59 – Procedimento Post do DataSet.
Lembre-se: Adicione a Unit do Data Module e use o recurso autocompletar do Lazarus.
Pronto com isso já é possível adicionar um Novo Cargo na nossa
aplicação.
Obs.: Observe no Data Module se a Conexão está com
Connected = True e se na tbCargo está Active = true.
Salve Tudo (Ctrl + S), Compile (Ctrl + F9) e Execute (F9) para
testar.
59
3.2
– OPERAÇÃO EDIT DO DATASET
Uma vez já cadastro registros no banco de dados, é necessário
permitir ao usuário rever algum dos dados referente a este
registro. Para realizar essa operação O Zeos disponibiliza para o
desenvolvedor através dos componentes da DataSet, aqui em
específico o componente TZTable, o procedimento edit, que bota
o registro corrente em modo de edição.
Após
o
usuário
realizar
as
modificações
desejadas
o
desenvolvedor deve invocar o procedimento post, para efetivá-las
no banco de dados.
Editando um registro do banco de dados
Vá ao formulário frmCargoLista e edite o evento onClick do botão
btnEditar, de tal forma a por o dataSet tbCargo do data module
em modo de edição e posteriormente exibir o formulário
frmCargoFormulario, conforme ilustrações a seguir:
Figura 60 – Formulário Lista de Cargos.
Dê um clique duplo para gerar o procedimento, após isso coloque
o código fonte como abaixo:
60
Figura 61 – Procedimento Edit do DataSet.
Pronto isso é suficiente para que o usuário edite os dados de
qualquer registro da tabela cargo no banco de dados.
Rode a aplicação, vá em Cadastro > Cargos, na tela que se abre
selecione alguma registro já cadastro, se não houver cadastre um,
e clique n botão editar.
Verá que será exibido o mesmo formulário usado para inserir
registro, porém agora com os dados do registro selecionado.
Figura 62 – Editando Cargo.
Após modificar o registro clique em Salvar. Lembrando que este
método você já programou antes para chamar o procedimento
post que confirma alteração no banco de dados.
61
Figura 63 – Editando Cargo.
De volta ao grid você verá que o registro foi realmente alterado.
Cancelando o modo de edição
Observando o formulário de cargo frmCargoFormulario, temos o
botão btnCancelar que ainda não programamos, vamos fazer
isso agora.
Lembrando que programamos que assim que for clicado o botão
Editar, o dataset tbCargo entra em modo Edit, modo de edição, e
após será alterar e confirmado com o post, o componente
tbCargo sai do modo de edição, entrado no modo Browse, ou
seja, modo de visualização.
Após entrar em modo de edição, caso o usuário não deseja mas
fazer a alteração no registro, para você desenvolvedor botar
novamente o dataSet em modo de edição (Edit mode), é
necessário chamar o procedimento cancel do dataset.
Vamos
então
ao
método
onClick
frmCargoFormulario e colocar o seguinte código:
do
formulário
62
Figura 64 – Procedimento Cancel do DataSet.
O Código acima aciona o método Cancel do Dataset retornando-a
para modo browse e fechar o formulário retornando para o
frmCargoLista.
3.3
– OPERAÇÃO DELETE DO DATASET
Outra operação importante em qualquer aplicação comercial, é a
possibilidade apagar do banco de dados um determinado registro,
seja por ter sido indevidamente cadastro ou por outro motivo
qualquer.
O
Zeos através dos seus
Datasets nos disponibiliza o
procedimento delete, que encapsula a operação de delete lá no
banco de dados. Para invocar o procedimento delete é
necessário que o DataSet esteja em modo browse.
Vamos para o frmCargoLista e programar para apagar o registro
corrente do banco de dados assim que o usuário clicar no botão
btnExcluir.
Coloque o seguinte código no procedimento que aparece para o
evento onClick do botão Excluir.
Figura 65 – Procedimento Delete do DataSet.
63
A partir de agora, assim que o usuário clicar no botão Excluir o
registro corrente será apagado, após isso será exibida a
mensagem confirmando que o registro foi realmente deletado.
3.4
– O COMPONENTE LÁZARUS MESSAGEDLG
No desenvolvimento de aplicações comerciais temos algumas
operações irreversíveis ou de difícil reversão, por parte do
usuário, tais como: deleção de um registro, fechamento de caixa
ao final do dia, processamento de folha de pagamento, realização
de renovação de matrícula em lote etc.
Neste tipo de situação, para evitar transtornos ao usuário é
importante informá-lo, ou questioná-lo, sobre a operação que ele
estar prestes a realizar. Apagar um registro, por exemplo,
necessita de uma confirmação do usuário.
O Lázarus nos disponibiliza o componente MessageDlg para
realizar esses alertas e questionamentos ao usuário.
O componente recebe vários parâmetros, que definem como este
será exibido, as mensagens, botões etc.
Vamos adicionar na nossa aplicação uma solicitação antes de
efetivar a deleção de um registro de cargo, veja o código abaixo
modificado do evento onClick no botão Excluir.
Figura 66 – Procedimento Delete do DataSet com MessageDlg.
Parâmetros do MessageDlg
64
aCaption = Primeiro parâmetro, é o título da caixa de diálog, no
exemplo acima é “Deleção de Cargo”;
aMsg = Segunda parâmetros, é a messagem que aparece no
corpo da caixa de diálogo, geralmente alguma pergunta ao
usuário ou informação. No exemplo: “Tem certeza que deseja
apagar este cargo?”;
DlgType = O tipo de diálog que será exibida, inicia geralmente
por mt. No exemplo é usado o mtConfirmation, fazendo com que
seja exibido um ícone adequado. Além de mtConfirmation, temos
disponível os tipos: mtError, mtInformation, mtWarning.
Buttons = Quarto parâmetro, deve ser informado que botões
serão exibidos na dialog. O Lazarus permite você configurar a
vontade quais botões aparecerão. No exemplo acima, foi
informado mbYesNo, que informa ao Lazarus para exibir os
botões Yes e No. Além mbYesNo, temos: mbYes, mbOK,
mbClose, mbClose, mbAbor mbYesNoCancel, etc.
HelpCtx = último parâmetros, informa para onde deve ir caso se
use botão de ajuda. Como não usamos help, botão 0.
Veja como ficou a Mensagem de confirmação de exclusão de
usuário.
Figura 67 – Mensagem de Confirmação com MessageDlg.
65
Observe apareceu o ícone de uma interrogação, pois usamos
mtConfirmation, e também os botões Selecionados Yes e No,
mbYesNo.
Para decidirmos o que vamos fazer, comparamos o resultado
através de algumas constantes que nos ajudam a identificar qual
botão foi selecionado. No caso somente será apagado o registro
de cargo, caso o botão clicado seja o Yes.
Para cada tipo de botão temos um mr correspondente. mrYes,
mrNo, mrCancel, mrAbort etc.
EXERCÍCIOS
1) Nos exercícios da Aula 2, construímos os formulários de
cadastro de setores. Agora que você já sabe os procedimento
o para inserir/editar/deletar registro complete o cadastro dos
setores. Cadastre pelo menos 3 setores de exemplo;
2) Refatore o código dos cadastros adicionado Confirmações e
Mensagens com o componente MessageDlg do Lázarus.
Substitua todos
os
ShowMessage`s
da aplicação por
MessageDlg.
RESUMO DA AULA
Aprendemos nesta aula a parte de maior importância numa
aplicação comercial, as operações com registros no banco de
dados, com o conhecimento adquirido até aqui já temos pelo
menos 75% da maioria das aplicações comuns de mercado.
NA PRÓXIMA AULA
Na aula 4, a última da nossa disciplina, veremos como adicionar
registro de tabela que tem campos que se relacionam com
atributos de outra tabelas.
Associação entre registros
4
66
de tabelas, e Geração de
Aula
Relatórios.
Meta da Aula
Demonstrar como é feito a associação entre
registros
de
tabelas,
e
Implementar
mecanismos de geração de relatórios.
Objetivos
Ao final desta aula, você deverá ser
capaz de:
1. Usar
o
componente
DBlookupCombobox da paleta Data
Controls;
2. Instalar e Criar relatórios usando os
componentes
Report.
do
pacote
Fortes
67
4.1 - O COMPONENTE DBLOOKUPCOMBOBOX
Vimos até agora em nossas aulas como fazer formulário que
contém campos que se associam a uma tabela no banco de
dados através dos diversos componentes do Lazarus.
Como atividade da nossa última aula ficou para ser feito o
cadastro de setores. Para prosseguirmos plenamente com esta
aula e de extrema importância já estar com os dois cadastros
anteriores devidamente funcionais, tanto o de cargos quanto do
de Setores.
Como etapa final dos cadastros propostos na primeira aula, temos
agora que cadastrar os funcionários, que por sua vez se ligam
tanto com Setores quanto com Cargos.
Siga todos os passos já conhecidos na criação de:
1) Uma TZTable do Zeos ligando a tabela funcionário no
banco de dados;
2) Crie um TDataSource da aba Data Access para a tabela
acima;
3) Crie o formulário para Lista de Funcionário, da mesma
forma como foi feito para Cargo, por exemplo.
4) Ponha um Grid, associado com DataSource de funcionário.
5) Crie o formulário para Cadastro de Novos Funcionários,
adicionado
todos
os
componentes
Data
Controls
necessários.
6) Adicionar todos os códigos necessários para essas
funcionalidades.
O Formulário para Lista de Funcionários deve estar parecido
como abaixo:
68
Figura 68 – Formulário de Listagem de Funcionários
Já na criação do formulário para funcionários surgiu uma nova
dificuldade: Como relacionar funcionário com Cargo e com Setor?
Para
isso
vamos
usar
DBLookupComboBox
.
o
componente
Data
Control
Como este componente podemos fazer com apareça uma lista
com elementos de uma tabela que devem se associam com
cadastro atual. Ou seja, justamente o que estamos precisando.
Figura 68 – Formulário de Listagem de Funcionários
69
A figura acima demonstra o DBLookupComboBox já configurado
para exibir a lista de nome dos cargos cadastros, possibilitando
que o usuários associe um funcionário a um cargo sem saber qual
o código do cargo. Da mesma forma faremos para pode
selecionar o Setor onde funcionário será lotado.
Figura 69 – Formulário de Cadastro de Funcionários com
DBLookupCombobox.
Configurando o DBLookupComboBox
Além das propriedades comuns dos componentes Lazarus, e das
propriedades do comuns aos componentes Data Controls, ou
seja, DataSource e DataField, o DBLookupCombobox requer que
outras propriedades sejam devidamente configuradas, veja
detalhamento na tabela abaixo:
ListSource
O DataSource da lista que se deseja exibir
do ComboBox
ListField
Define qual campo da tabela será exibido
no Combobox
70
KeyField
Define qual é o campos chave da tabela
associada se relaciona com o campo que
se estar cadastrando.
As propriedades do DBLookupComboBox que se relacionar com
cargo no nosso cadastro de funcionários ficaram desta forma:
Além das propriedades já conhecidas:
4.2 – PACOTE DE COMPONENTES FORTES
REPORT
Um uma importante característica que agrega valor a qualquer
Aplicação Comercial é sua capacidade de gerar relatórios para os
seus usuários.
Sejam eles listagem, resumo de movimentações financeiras,
listagem por agrupamentos em fim, relatórios em geral.
Para adicionar essas funcionalidades vamos usar neste curso o
Componentes FortesReport, com qual não teremos muitas
dificuldades para gerar nossos relatórios, com as informações já
cadastradas no banco de dados.
Primeiro
baixo
o
pacote
disponível
em
http://sourceforge.net/projects/fortes4lazarus/
Após fazer download descompacte e proceda com a instalação da
mesma forma como realizado para pacote Zeos.
71
Copie o arquivo rlreportshared.dll, da pasta do FortesReport
..\fortes324forlaz\ rlreportdll para ..\Windows\System32.
Como FortesReport devidamente instalado aparecer uma nova
aba no Lázarus chamada Fortes Report.
Figura 70 – Paleta de componentes do Fortes Report.
Vamos usar alguns componentes desta aba para construir alguns
relatórios simples.
Os principais componentes do Pacote Fortes Report são:
TRLReport – Componente principal, é o primeiro que
deve ser adicionado no formulário no qual será
construído o relatório.
TRLBand – Permite adicionar seções no formulário, tais
como Cabeçalho, Detalhes, Sumário, Rodapé etc.
TRLLabel e TRLAngleLabel – Permite adicionar texto
estático ao relatório tais como títulos e nomes de
colunas.O TRLAngleLabel permite colocar texto em
direções diferentes da horizontal.
TRLDBText – permite adicionar informações oriundas
do banco de dados, semelhante aos componentes
DataControls.
TRLSystemInfo – permite adicionar informações de
sistema ao relatório, tais como data, hora,quantidade de
registros etc.
Tabela 3 – Componentes da Paleta Fortes Report.
O Fortes Report tem diversos outros componentes que permitem,
por exemplo, gerar relatório em PDF, HTML, Gerar códigos de
barras estáticos ou dinâmicos, exibir imagens, Textos Longos etc.
72
Relatório – Listagem de Setores Cadastrados
Crie um novo formulário para o nosso projeto no Lázarus, como
nome
frmListagemSetores,
salve
a
unit
com
nome
uniRelatorioSetores e adicione um componente TRLReport.
Após adicioná-lo verá que ele funciona como uma folha de papel,
toda em quadrinho para facilitar o posicionamento dos outros
elementos.
Nas
propriedades do TRLReport
expanda a propriedade
AllowedBands e coloque em True as opções btColumnHeader,
btDetail e btHeader.
Vamos adicionar os segmentos do nosso relatório, que já
definimos terá: Cabeçalho, Cabeçalho de Coluna e uma seção de
detalhes. Adicionar três componentes TRLBand um para cada
seção.
Gerando a consulta para o relatório
O nosso relatório necessita de uma consulta no banco de dados
que fornecerá os dados para serem exibidos.
Para isso, adicionar ao Data Module um componete Zeos
TZReadOnlyQuery, um nome de QryListagemSetores, na
proprieadades SQL, digite: select * from Setor, adicione também
um DataSource de nome dsListagemSetores e como dataset
coloque da QryListagemSetores. Selecione a conexão na
QryListagemCargos e torne a propriedade Active para True.
Continuando relatório
Para o componente TRLReport na sua propriedade DataSource
selecione o dsListagemSetores, recém criado.
Nas três TRLBands adicionadas modifique a propriedade
BandType da primeira para btHeader, da segunda para
73
btColumnHeader e da última para btDetail. Modifique a altura
das Bands para facilitar seu trabalho, deixe-as parecido como a
imagem abaixo:
Figura 71 – Componente TRLReport do Fortes Report.
Na Seção de cabeçalho adicione dois TRLLabel, para o primeira
bote a identificação de uma empresa fictícia na propriedade
Caption, GRUPO EMPRESARIAL SÃO JOSÉ DA SILVA, para o
a segunda bote Listagem de Setores, edite as suas propriedades
de fonte para ficam com abaixo:
Figura 72 – Componente TRLReport do Fortes Report.
Na seção de cabeçalho de coluna, adicionar mais dois TRLLabel,
um com Caption com ID e outro com NOME DO SETOR.
Já na seção Detalhes, adicione dois componente TRLDBText,
para rebecer os dados dinâmicos do banco de dados. Edite as
propriedades
DataSource
e
DataField,
para
apontar,
74
dsListagemSetores e os campos para setor_id e nome,
respectivamente.
Adicione um componente TRLSystemInfo, ao lado direitro do
Label Listagem de Setores, e modifique a propriedade info para
ifFullDate.
O relatório deve estar como abaixo:
Figura 73 – Componente TRLReport do Fortes Report.
Pronto nosso relatório já estar pronto.
Agora vá ao formulário frmPrincipal e de um clique no Menu
Relatório > Listagem de Setores, o lazarus exibirá o código da
uniPrincipal, com o procedure do item de menu que foi clicado.
75
Figura 74 – Código Fonte uniRelatorioSetores.
Antes de adicionar o código de invocar o relatório, vá na seção
uses desta Unit e adicionar a uniRelatorioSetores. Volte ao
procedure que foi gerar anteriormente e adicione o código que
executará o relatório que acabamos de desenhar.
No código acima, chamamos o formulário, depois o componete
TRLReport, e chamamos procedure PreviewModal dele.
Pronto, agora Salve, Compile e Execute para testar.
Com a aplicação rodando acesse o Menu Relatórios > Listagem
Setor:
Figura 75 – Tela Menu Listagem de Setores.
76
Certifique-se que há setores cadastrados, e será exibido um
relatório como abaixo:
Figura 76 – Tela Relatório Listagem de Setores.
EXERCÍCIOS
1) Crie todos os formulários necessários para o cadastro de
funcionários, usando os componentes Data Controls.
a. Use DBLookupCombobox para os atributos que se
relacionam com outras tabelas.
b. Use componente MessageDlg para confirmações e
Informações.
2) Adicione o pacote Fortes Reports à sua instalação do
Lázarus. Siga os passos descritos na aula.
3) Seguindo os mesmo procedimentos que relatório feito na
aula, crie o relatório de todos os Cargos Cadastrados.
4) Crie o relatório de Listagem de Todos os funcionários
ordenados por nome, Listando ao além dos dados pessoais
o setor ao qual estar vinculado, e o cargo.
5) Desafio: Crie um relatório listando os funcionários por
setor, usando o Fortes Report.
Download

PROGRAMAÇÃO COMERCIAL - escola técnica aberta do piauí