Escolar Documentos
Profissional Documentos
Cultura Documentos
4 - Delphi 7 - Projeto - Locadora PDF
4 - Delphi 7 - Projeto - Locadora PDF
Estrutura de diretrios
D:\fernando\fito\delphi\locadora\sistema
D:\fernando\fito\delphi\locadora\dados
Abra o BDE (Borland Database Engine). Esse o software da Borland que permite voc
fazer uma conexo com qualquer tipo de banco de dados (Oracle, SQL Server, Access,
Sybase, Paradox etc). O BDE um software similar ao ODBC da Microsoft (localizado
no Painel de Controle do Windows).
Na tela que se abre, clique com o boto direito em Databases e selecione depois em
New,
Sero listados todos os bancos de dados para os quais voc pode fazer uma conexo.
Selecione a opo STANDARD (que corresponde ao banco de dados Paradox) e clique
em OK.
Do lado direito da tela, clique na linha Path e em seguida no boto identificado com
.... Selecione o caminho da pasta dados criado na etapa anterior (em meu caso foi
D:\fernando\fito\delphi\locadora\dados).
Para a criao das tabelas no banco de dados Paradox, vamos utilizar o Database
Desktop, disponibilizado na instalao do Delphi.
A primeira coisa que devemos fazer definir que as tabelas criadas ficaro disponveis
dentro do banco de dados criado anteriormente (locadora_3infoX).
Clique no menu File e selecione Working Directory. Na opo Aliases, selecione o seu
banco de dados e depois clique em Ok.
Para cada tabela do sistema, clique em File New Table. Selecione o banco de dados
Paradox 7 e clique em Ok.
Crie os campos da tabela conforme abaixo. Para escolher o tipo de dados aceito pelo
campo, clique com o boto direito na clula TYPE. Para definir a chave primria da
tabela (campo que no ser repetido em mais de uma linha da tabela) d um duplo
clique na clula Key.
TB_GENERO
TB_CLIENTE
TB_FILME
Para finalizar, na parte inferior da janela, clique na opo Prohibit. Dessa forma voc
est dizendo que no pode ser excludo um registro da tabela de Gneros, se esse
gnero possuir um filme relacionado a ele.
Unit: unitMenu
Project: Locadora
Tela de Menu
Name: frmMenu
Caption: Sistema de Locadora
WindowState: wsMaximized (inicia com a tela maximizada)
Barra de menu
Name: mnuLocadora
Name: mniArquivo
Caption: &Arquivo
Name: mniArquivoSair
Caption: &Sair
Shortcut: Ctrl + S
Name: mniCadastro
Caption: &Cadastro
Name: mniCadastroFilme
Caption: &Filme
Shortcut: Ctrl + F
Name: mniCadastroCliente
Caption: &Cliente
Shortcut: Ctrl + C
Barra de Ferramentas
Sistema de Locadora Ano 2005
Name: imlLocadora
D um duplo clique sobre o image list para adicionar as figuras na lista. Para cada
figura, clique no boto Add e selecione o arquivo desejado. As figuras do Delphi ficam
armazenadas em C:\Arquivos de programas\Arquivos comuns\Borland
Shared\Images, porm voc poder utilizar qualquer figura com a extenso ico ou
bmp. Acrescente uma figura para a opo Sair,uma para Cliente, uma para Filme e
outra para Gnero.
Name: tbrLocadora
Images: imlLocadora
Para adicionar um boto na barra de ferramentas, clique com o boto direito sobre ela
e selecione a opo New Button. Caso queira colocar uma distncia entre os botes,
clique com o boto direito e selecione New Separator.
Data Module
O data module o local onde podemos centralizar todos os objetos que faro a ligao
entre o seu sistema e o banco de dados.
Na guia New, selecione a opo Data Module e clique Ok. Altere as propriedades para:
Name: dmLocadora
Database
O objeto database faz a ligao do seu projeto com um banco de dados criado
anteriormente.
Selecione a guia BDE e insira o objeto Database dentro do Data Module. Altere as
propriedades:
Name: dbLocadora
DatabaseName: dbLocadora
AliasName: locadora_3infoX (o nome do banco de dados que voc criou no BDE
Administrator).
Tables
Cada tabela do seu sistema ser representada por um objeto Tables. Para isso,
adicione no Data Module 3 objetos Table localizados na guia BDE. Altere as
propriedades como abaixo:
Name: TB_Genero
DatabaseName: dbLocadora (selecione)
TableName: TB_GENERO.db (selecione)
Active: TRUE
D um duplo clique sobre o objeto Table. Na janela que se abre, clique com o boto
direito do mouse e selecione add All Fields.
Name: TB_Filme
DatabaseName: dbLocadora (selecione)
TableName: TB_FILME.db (selecione)
Active: TRUE
D um duplo clique sobre o objeto Table. Na janela que se abre, clique com o boto
direito do mouse e selecione add All Fields.
Sistema de Locadora Ano 2005
Name: TB_Cliente
DatabaseName: dbLocadora (selecione)
TableName: TB_CLIENTE (selecione)
Active: TRUE
D um duplo clique sobre o objeto Table. Na janela que se abre, clique com o boto
direito do mouse e selecione add All Fields.
Altere as propriedades:
Name: frmGenero
Caption: Cadastro de Gnero
BorderStyle: bsSingle
Vamos dividir a tela em duas partes, uma para o grid de exibio dos dados e outra
para a barra de navegao dos registros. Para isso, insira no formulrio o objeto Panel
localizado na guia Standard. Altere as propriedades:
Name: panGenero
Align: alBottom
Caption: deixar em branco
Sistema de Locadora Ano 2005
Na guia Data Access, selecione e insira no formulrio de gnero o objeto Data Source.
Esse objeto vai trazer os dados da tabela de gnero para a memria do seu programa.
Altere as propriedades para:
Name: dsGenero
DataSet: dmLocadora.TB_Genero (selecione)
Agora que os dados esto em memria, precisamos traz-los para dentro de nosso
formulrio. Para isso vamos utilizar o objeto DBGrid. Na guia Data Controls, selecione
e insira o objeto DBGrid. Altere as propriedades.
Name: dbgGenero
DataSource: dsGenero
Align: alClient
Name: dbnGenero
DataSource: dsGenero
Agora que o nosso cadastro de Gneros est pronto, vamos cham-lo a partir da tela
de menu. Para isso, abra o formulrio de menu: View Forms frmMenu Ok.
Sistema de Locadora Ano 2005
A tela de menu precisa visualizar o cadastro de gnero para poder abri-lo. Para isso,
clique no menu File, selecione a opo Use Unit, clique em Genero e em Ok.
Vamos aproveitar para programar o boto Sair. Na tela de menu clique em Arquivo e
Sair.
Altere as propriedades:
Name: frmCliente
Caption: Cadastro de Clientes
BorderStyle: bsSingle
Image Lista
Insira um Image List (name: imlCliente) e adicione trs figuras que representaro as
opes de incluir, alterar e excluir clientes. Se tiver dvidas de como fazer, veja a tela
de menu.
ToolBar
Name: tbrCliente
Images: imlCliente
Adicione trs botes (clique com o boto direito no tollbar e selecione New Button).
Selecione cada um dos botes e altere a propriedade name para btnInserir, btnAlterar
e btnExcluir.
DataSource
Name: dsCliente
Dataset: dmLocadora.TB_CLIENTE (selecione)
DBGrid
Name: dbgCliente
DataSource: dsCliente
Align: alClient
ReadOnly: True (significa que o grid est disponvel apenas para leitura, ou seja,
voc no poder inserir, alterar ou excluir linhas diretamente no grid).
Clique com o boto direito sobre o grid e selecione a opo Columns Editor. Na janela
que se abre, clique com o boto direito e selecione Add. Para o campo adicionado,
selecione a opo codCliente na propriedade FieldName; Repita essa operao e
adicione o campo Nome.
Abra o formulrio de menu para codificarmos a chamada a tela de clientes (menu View
Forms frmMenu).
Clique em File Save all e depois execute o sistema (F9). Note que o grid est em
modo de leitura (readonly). Para inserir, alterar e excluir cliente vamos construir a
tela de detalhes do cliente.
Name: frmDetCliente
Caption: Detalhe do Cliente
Data Source
Name: dsDetCliente
Dataset: dmLocadora.TB_Cliente
Name: btnOk
Kind: bkOk
Name: btnCancelar
Kind: bkCancel
Entre na unit detClientes (menu View Units detCliente Ok). Localize o cdigo {
Public declarations }. Insira o texto logo abaixo dele:
{ Public declarations }
procedure Inserir;
procedure Alterar;
Digite o cdigo abaixo aps a rea {$R *.dfm}. Voc dever digitar todo o cdigo,
inclusive as procedures.
{$R *.dfm}
Procedure TfrmDetCliente.Inserir ;
begin
// Coloca a tabela no modo de insero
dmLocadora.TB_Cliente.Insert;
// exibe o formulrio de detalhe do cliente
showmodal;
end;
Procedure TfrmDetCliente.Alterar;
begin
// Coloca a tabela no modo de alterao
dmLocadora.TB_Cliente.Edit;
// exibe o formulrio de detalhe do cliente
showmodal;
end;
dmlocadora.TB_Cliente.Post;
Sistema de Locadora Ano 2005
dmlocadora.TB_Cliente.Cancel;
frmDetCliente.Inserir ;
frmDetCliente.Alterar;
dmlocadora.TB_Cliente.Delete ;
Salve o projeto (File Save All) e execute-o (F9). Teste o cadastro de clientes.
Sistema de Locadora Ano 2005
O cadastro de filmes tambm ser dividido em duas telas: uma para listar apenas o
cdigo e o nome do filme (sem a opo de alterao de dados) e outra no formato de
formulrio, onde sero apresentados todos os campos da tabela para a incluso ou
alterao.
Altere as propriedades:
Name: frmFilme
Caption: Cadastro de Filmes
BorderStyle: bsSingle
Image Lista
Insira um Image List (name: imlFilme) e adicione trs figuras que representaro as
opes de incluir, alterar e excluir clientes. Se tiver dvidas de como fazer, veja a tela
de menu.
Sistema de Locadora Ano 2005
ToolBar
Name: tbrFilme
Images: imlFilme
Adicione trs botes (clique com o boto direito no tollbar e selecione New Button).
Selecione cada um dos botes e altere a propriedade name para btnInserir, btnAlterar
e btnExcluir.
DataSource
Name: dsFillme
Dataset: dmLocadora.TB_FILME (selecione)
DBGrid
Name: dbgFilme
DataSource: dsFilme
Align: alClient
ReadOnly: True (significa que o grid est disponvel apenas para leitura, ou seja,
voc no poder inserir, alterar ou excluir linhas diretamente no grid).
Clique com o boto direito sobre o grid e selecione a opo Columns Editor. Na janela
que se abre, clique com o boto direito e selecione Add. Para o campo adicionado,
selecione a opo codFilme na propriedade FieldName; Repita essa operao e adicione
o campo Filme.
Abra o formulrio de menu para codificarmos a chamada a tela de filmes (menu View
Forms frmMenu).
Clique em File Save all e depois execute o sistema (F9). Note que o grid est em
modo de leitura (readonly). Para inserir, alterar e excluir filmes vamos construir a tela
de detalhes do filme.
Sistema de Locadora Ano 2005
Name: frmDetFilme
Caption: Detalhe do Filme
BorderStyle: bsSingle
Data Source
Name: dsDetFilme
Dataset: dmLocadora.TB_Filme
Name: btnOk
Kind: bkOk
Name: btnCancelar
Kind: bkCancel
Entre na unit detFilme (menu View Units detFilme Ok). Localize o cdigo { Public
declarations }. Insira o texto logo abaixo dele:
{ Public declarations }
procedure Inserir;
procedure Alterar;
Digite o cdigo abaixo aps a rea {$R *.dfm}. Voc dever digitar todo o cdigo,
inclusive as procedures.
{$R *.dfm}
Procedure TfrmDetFilme.Inserir ;
begin
// Coloca a tabela no modo de insero
dmLocadora.TB_Filme.Insert;
// exibe o formulrio de detalhe do filme
showmodal;
end;
Sistema de Locadora Ano 2005
Procedure TfrmDetFilme.Alterar;
begin
// Coloca a tabela no modo de alterao
dmLocadora.TB_Filme.Edit;
// exibe o formulrio de detalhe do filme
showmodal;
end;
dmlocadora.TB_Filme.Post;
dmlocadora.TB_Filme.Cancel;
frmDetFilme.Inserir ;
frmDetFilme.Alterar;
dmlocadora.TB_Filme.Delete ;
Entre no cadastro de filme (menu Cadastro Filme). Clique no boto de inserir filme.
Sistema de Locadora Ano 2005
Precisaremos acessar a tabela de gnero para listarmos os registros. Para isso insira
mais um objeto Data Source e altere as propriedades conforme abaixo:
Name: dsGenero
DataSet: dmLocadora.TB_Genero
Selecione o label codGenero e altere o seu caption para Gnero. Selecione o edit do
cdigo do gnero (DBEdit3) e delete-o.
Name: dblGenero
DataSource: dsDetFilme (local onde vamos gravar o gnero selecionado)
DataField: CodGenero (o campo da tabela onde vamos salvar o gnero escolhido para
o filme)
ListSource: dsGenero (Local que possui os gneros que sero listados no combobox)
ListField: Gnero (nome do campo da tabela de gnero que ser exibido na lista)
KeyField: CodGenero (nome do campo que chave primria no cadastro de gnero)
Salve e execute o programa. Agora ao cadastrar um filme, teremos uma lista com
todos os gneros disponveis.
Sistema de Locadora Ano 2005
Sistema de Locadora Ano 2005
Consultas e Pesquisas
Para localizarmos o nosso banco de dados, clique no menu File Working Directory.
Em Aliases, selecione o seu banco de dados. Clique em Ok.
Para abrir a tabela de clientes, clique em File Open Table. Selecione o arquivo
TB_Cliente e clique em Abrir.
Align: alBottom
Caption: deixar o caption em branco
Name: edtNome
Text: deixar em branco
Dessa forma poderemos, a cada letra digitada, pesquisar e localizar dentro do grid o
cliente desejado.
end;
Com alguns cliente cadastrados, digite o nome de um dos cliente no caixa de pesquisa.
Conforme voc vai digitando o nome, o grid vai posicionando no cliente encontrado.
Se desejar deixar o seu grid ordenado pelo nome do cliente, abra o Data Module e
selecione a tabela TB_Cliente. Altere a propriedade IndexName para
index_nome_cliente,
Execute o programa e abra o cadastro de cliente. O grid agora estar ordenado pelo
Nome do cliente e no mais pelo seu cdigo.
Repita os mesmos procedimentos para pesquisar os filmes cadastrados pelo seu nome.
No esquea que para criar o ndice pelo nome do filme no Database Desktop, o seu
projeto no Delphi dever estar fechado.
Sistema de Locadora Ano 2005
Selecione o label com o texto Informe o nome do cliente e altere o seu caption para
Informe o nome do cliente ou selecione-o na lista.
Name: dblNome
ListSource: dsCliente
ListField: Nome
KeyField: CodCliente
Salve o projeto e execute-o. Teste a pesquisa de cliente por parte do nome ou pelo
combo Box.
Sistema de Locadora Ano 2005
Name: frmPesFilmeGenero
Caption: Pesquisa de Filmes por Gnero
BorderStyle: bsSingle
Name: dsGenero
Dataset: dmLocadora.TB_Genero
Align: alTop
Caption: deixar em branco
Name: dblGenero
ListSource: dsGenero
ListField: Gnero
KeyField: CodGenero
Caption: &Pesquisar
Name: btnPesquisar
Name: qryFilmeGenero
DatabaseName: dbLocadora
Name: dsFilmeGenero
DataSet: qryFilmeGenero
Align: alClient
Name: dbgFilmeGenero
DataSource: dsFilmeGenero
// Caso a consulta no retorne nenhum valor (eof - end of file - final do arquivo)
// apresenta mensagem
if qryFilmeGenero.Eof then
begin
showmessage('No foi encontrado nenhum filme para o gnero selecionado.');
dblgenero.SetFocus ;
end
;
end;
Salve o projeto.
Name: mniConsulta
Caption: &Consulta
Name: mniConsultaFilmeporGenero
Caption: &Filmes por Gnero
Feche a caixa de menu. No menu File do Delphi, selecione a opo Use Unit. Marque a
opo pesFilmeGenero e clique em Ok.
No menu do seu sistema, clique em Consulta e depois em Filmes por Gnero. Deixe a
procedure conforme abaixo:
Name: frmPesClienteCidade
Caption: Pesquisa de Clientes por Cidade
BorderStyle: bsSingle
Align: alTop
Caption: deixar em branco
Name: edtCidade
Text: deixar em branco
Caption: &Pesquisar
Name: btnPesquisar
Sistema de Locadora Ano 2005
Name: qryClienteCidade
DatabaseName: dbLocadora
SQL: d um clique dentro do campo e depois no boto ...
Acrescente o texto:
Locadora takeshi:
select codCliente, nome, endereco, bairro, cidade, telefone, dt_nasc
from tb_cliente
where trim(upper(cidade)) = :pCidade
Esse texto vai pesquisar os dados da cidade na tabela de cidade, onde o nome da
cidade em maisculo upper(cidade) seja igual ao parmetro cidade --
:NomeCidade. Esse parmetro ser informado no clique do boto pesquisar.
Name: dsClienteCidade
DataSet: qryClienteCidade
Align: alClient
Name: dbgClienteCidade
DataSource: dsClienteCidade
// executa a consulta
qryClienteCidade.Open ;
// Caso a consulta nao retorne nenhum valor (eof - end of file - final do arquivo)
// apresenta mensagem
if qryClienteCidade.Eof then
begin
showmessage('No foi encontrado nenhum cliente para a cidade informada.');
edtcidade.SetFocus ;
end
;
end;
Cadastro de Locaes
Criando as tabelas
Tabela de Locao:
Paradox 7 Ok.
Em update rule (regra de atualizao) marque a opo Prohibit. Clique em Ok. Informe
o nome fk_locacao_cliente.
Paradox 7 Ok.
ValorFilme Money
Em update rule (regra de atualizao) marque a opo Prohibit. Clique em Ok. Informe
o nome fk_locacao_filme.
Em update rule (regra de atualizao) marque a opo Prohibit. Clique em Ok. Informe
o nome fk_filme_locacao.
Name: TB_Locacao
DatabaseName: dbLocadora
TableName: TB_LOCACAO.db
Active: True
Suba at a parte superior da sua unit e veja se a biblioteca DBIProcs est inserida. Se
no estiver, deixe as linhas conforme abaixo:
interface
uses
Sistema de Locadora Ano 2005
Name: dsLocacao
DataSet: TB_Locacao
Name: TB_Locacao_Filme
DatabaseName: dbLocadora
TableName: TB_LOCACAO_FILME.DB
MasterSource: dsLocacao
MasterFields: clique em ...
Marque os campos NumLocacao e clique em Add. Clique em Ok.
Active: True
Como a tela de locao e filmes da locao estaro juntas (sero a mesma tela)
utilizamos o campo MasterSource para ligarmos a tabela de Locao_Filme com a
tabela de Locao. Essa ligao feita atravs do campo NumLocacao. Dessa forma,
sempre que posicionarmos a tabela de locao em um registro, a tabela de
Locao_Filme ser posicionada automaticamente na mesma locao exibindo assim os
filmes nela alugados.
Name: frmLocacao
Caption: Cadastro de Locaes
BorderStyle: bsSingle
Adicione um objeto GroupBox na parte de cima da tela. Altere o caption para Locao.
Name: dsLocacao
DataSet: dmLocadora.TB_Locacao
Abra o data module. D um duplo clique na tabela TB_Locacao. Na janela que se abre,
clique com o boto direito dentro dela e selecione a opo Add All Fields.
Name: dbnLocacao
DataSource: dsLocacao
Na parte de baixo da tela, adicione um outro objeto GroupBox. Altere o caption para:
Filmes da Locao.
Name: dsLocacaoFilme
DataSet: dmLocadora.TB_Locacao_Filme
Name: dbgLocacao
DataSource: dsLocacaoFilme
D um duplo clique sobre o DBGrid. Na janela que se abre, clique com o boto direito e
selecione a opo Add All Fields. Exclua o campo NumLocacao (o nmero da locao j
estar aparecendo na parte de cima da tela de locaes).
Como estamos em uma tela automtica, no temos muitos recursos. Voc dever
informar todos os dados da locao (a data da locao, o valor total, o valor total pago
etc).