IX10-Programacao-Aula004

Transcrição

IX10-Programacao-Aula004
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
Introdução à Programação em Delphi
(versão 0.2)
Usando Banco de Dados
Texto adaptado da apostila Delphi 7 para Desenvolvimento de Sistemas,
desenvolvida por Ronaldo Lavestein – Casa Branca - SP].
Para cada comando a ser executado nesta apostila será utilizada a barra de
menu do Delphi, ou, quando existir, ou for mais conveniente, uma combinação de
teclas, ou ainda, uma tecla de função. Por exemplo: para visualizar a tela Object
Inspector, pode-se utilizar a barra de menus View -> Object Inspector ou
simplesmente teclar [F11].
Em alguns casos, quando não for utilizada nem a barra de menus, ou uma
tecla de função, ou combinação de teclas, o procedimento será solicitado através de
uma linha de texto, como, por exemplo:
9 “Selecione a guia Additional na paleta de componentes do Delphi e insira
um componente Image“
Antes de dar prosseguimento, verifique se você já instalou o SGBD
PostgreSQL e o Driver ODBC para ele.
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
Roteiro
1. INTRODUÇÃO AO POSTGRESQL.................................................................................. 3 2. CRIANDO UM DATA SOURCE PARA O BANCO DE DADOS ............................................... 5 3. COMO PREPARAR O BANCO DE DADOS PARA SER USADO NO SISTEMA? .......................... 7 4. COMO CRIAR UMA TELA PADRÃO? ............................................................................. 11 5. COMO UTILIZAR UMA TELA PADRÃO DO SISTEMA? ...................................................... 13 6. COMO UTILIZAR UM DBGRID? .................................................................................. 14 7. COMO UTILIZAR UM DBNAVIGATOR? ......................................................................... 16 8. COMO CRIAR CAMPOS LOOKUP? ............................................................................... 18 9. COMO INSERIR CAMPOS DE UMA TABELA NA TELA? .................................................... 20 10. COMO CRIAR UMA TELA DE LOGIN DO SISTEMA? ....................................................... 21 11. COMO CRIAR RELACIONAMENTO MASTER/DETAIL NA APLICAÇÃO? ............................ 23 INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
1. Introdução ao PostgreSQL
Este tópico apresenta algumas informações iniciais para o uso do
PostgreSQL nas atividades da disciplina.
Procedimentos a serem executados:
Faça
o
download
e
instale
a
última
versão
do
PostgreSQL
(http://www.postgreSQL.org.br). Siga as instruções do instalador;
Após a instalação do SGBD, aparecerá o Application Stack Builder. Na tela
desse sistema, marque para fazer a instalação do driver ODBC. Siga as instruções
do instalador;
Figura 1 – Selecionando o driver ODBC no Application Stack Builder
Nas aulas, será utilizada apenas a interface texto do terminal do PostgreSQL.
Opcionalmente, os alunos poderão utilizar a interface gráfica PGAdmin III que
acompanha o SGBD.
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
Procure saber que há uma diferença entre o terminal do Prompt de Comando
e do terminal do PostgreSQL. A dica é observar a linha em que está o cursor do
mouse para diferenciar.
a
)
b
)
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
2. Criando um Data Source para o Banco de Dados
Este tópico deverá ser realizado uma única vez para preparar a conexão do
Banco de Dados a ser utilizada no sistema a ser criado.
Procedimentos a serem executados:
9 Vá em Painel de controle -> Ferramentas administrativas -> Fontes de
Dados (ODBC)
9 Na tela que abrir, selecione a aba DSN de Sistema (System DSN)
Figura 2 – Adicionando um DSN de Sistema
9 Selecione o botão Novo (Add...)
9 Escolha PostgreSQL ODBC Driver (UNICODE). Pressione Fim (Finish)
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
Figura 3 – Configurando um DSN de Sistema
9 Preencha os campos com os dados para conexão com o Banco de Dados:
o
Data Source – é um nome que vai identificar a conexão;
o
Database – é o nome do banco de dados;
o
Server – é o nome do servidor do banco de dados;
o
User Name - é o nome do usuário do banco de dados;
o
Port – é 5432 por padrão para o PostgreSQL;
o
Password – é a senha do usuário do banco de dados;
9 Pressione o botão Teste para verificar se há conexão com o banco de
dados. Se não conectar, revise as informações acima
9 Pressione o botão Salvar
9 Pressione o botão OK
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
3. Como preparar o banco de dados para ser usado no
sistema?
Este tópico tem o propósito de ensinar como preparar o banco de dados e
suas tabelas para serem utilizados pelo sistema. Para tanto, utilize o backup do
banco para o sistema VideoLocadora, fornecido pelo professor.
Procedimentos a serem executados:
9 File -> New -> DataModule (tipo especial de tela para agrupar os objetos
de banco de dados). Salve a Unit da tela como U_DM.pas
9 Altere a propriedade Name para dm e salve a Unit
9 Selecione a guia ADO na paleta de componentes do Delphi e insira um
componente ADOConnection (conexão com o banco de dados)
9 Insira um componente ADOTable (tabela) para cada tabela do banco de
dados (para o nosso exemplo devem ser inseridos 17 ADOTable)
9 Selecione a guia DataAccess na paleta de componentes do Delphi e
insira um componente DataSource (origem dos dados) para cada tabela
do banco de dados (para o nosso exemplo devem ser inseridos 17
DataSource)
Figura 4 - Componentes da tela DataModule (DM) do sistema
9 Altere as propriedades de cada componente conforme as tabelas a seguir:
ADOConnection1
Conteúdo
LoginPrompt
False
Name
adoConexao
Clique em ... e siga as
instruções a seguir
ConnectionString...
Significado
Desabilita tela de login (não pede usuário e
senha) ao fazer conexão com o banco de dados.
Nome do componente AdoConnection
String para conexão ao banco de dados
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
Clique em
Figura 5 – configurando o ADOConnection (01)
Escolha Microsoft OLE
DB Provider for ODBC
Drivers e clique em
Avançar>>.
Figura 6 – configurando o ADOConnection (02)
Figura 7 – configurando o ADOConnection (02)
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
9 Selecione o banco de dados (VideoLocadora)
9 Remova o Nome do usuário e desmarque Senha em branco
9 Clique no botão Testar Conexão para testar se a conexão foi bem
sucedida
9 Clique Ok nesta e nas próximas, até retornar à Unit dm
9 Selecione o primeiro componente ADOTable
ADOTable1
Conteúdo
Connection
adoConexao
Name
TableName
adotPais
Escolha paises
Significado
Conexão ao Banco de dados em que se encontra
a tabela desejada
Nome do componente ADOTable
Nome da tabela no banco de dados
9 Dê duplo-clique no componente adotPais. Tecle [Ctrl] + [F] para inserir os
campos da tabela. O resultado deverá ficar como o da figura a seguir:
Figura 8 – configurando o ADOTable
9 Selecione cada campo e altere suas propriedades, quando necessário.
Por exemplo, altere a propriedade DisplayLabel do campo id_pais para
Código do País. Isto fará com que em todas as telas que usarem este
campo apareça como Código do Cliente em seu rótulo e não mais
id_pais. Outra propriedade é a EditMask, usada com campos do tipo
Texto e Data/Hora, que define a máscara do campo (Ex.: cep = 99.999999). Para campos do tipo Moeda, altere a propriedade Currency para
True, para que lhe seja aplicado o formato monetário. Quando precisar
acessar informações de um campo em uma tabela, use a sintaxe:
DataModule.TabelaCampo.Propriedade. Assim, para atribuir o conteúdo
do
campo
pais
à
variável
nomeDoPais,
use
nomeDoPais := dm.tbPaispais.Value; (não precisa fazer isso agora);
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
9 Selecione o componente DataSource1 e escolha adotPais na
propriedade DataSet. Altere a propriedade AutoEdit (edição automática
nos dados) para False. Altere a propriedade Name para dsPais. O
resultado final deverá ser como o mostrado na tela a seguir:
Figura 9 – configurando o DataSource
9 Faça o mesmo para as demais tabelas.
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
4. Como criar uma tela padrão?
O uso de uma tela padrão além de deixar as telas do sistema com um layout
padronizado, agiliza o processo de criação das mesmas, pois, todos os objetos,
propriedades e eventos, comuns a todas as telas, não são criados novamente, e
sim, herdados da tela padrão, através do conceito de herança de formulários.
Procedimentos a serem executados:
9 Crie um novo form (File -> New -> Form), altere sua propriedade Name
para frmCadastroPadrao. Altere as demais propriedades, conforme
tabela vista na seção “Como alterar as propriedades da tela” da
apostila. Salve a Unit como U_CadastroPadrao
9 Observe o layout da tela na figura a seguir e acrescente os objetos, na
ordem em que são citados na lista de objetos abaixo:
1º
2º
Close;
3º
4º
Figura 10 – Layout da tela padrão
Lista de objetos: (Deixe os tamanhos dos GroupBox proporcionais aos da figura)
9 Acrescente 04 GroupBox (guia Standard) com Align = alTop e a
propriedade Caption fica em branco
9 1º GroupBox com 01 Label, 01 Edit (Name=edPesquisar), 03
SpeedButton (aba Additional)
9 2º GroupBox com 01 DBGrid (Data Controls) com Align = alClient e a
propriedade Name = dbgTabela
9 3º GroupBox com 03 DBNavigator (Data Controls) com Align = alLeft,
um ao lado do outro. Use a propriedade +VisibleButtons para exibir/ocultar
os botões do DBNavigator, pois o primeiro DBNavigator (Name =
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
dbnNavegador) deverá conter apenas os botões nbFirst, nbPrior, nbNext,
nbLast; o segundo (Name = dbnOperacao) deverá conter apenas os
botões nbInsert, nbDelete e nbEdit; e o terceiro (Name =
dbnConfirmacao) deverá conter apenas os botões nbPost e nbCancel
9 4º GroupBox vazio
9 01 StatusBar (Win32) com 03 paineis com propriedade Name = sbStatus
e Width = 150
9 Pronto…. Esse formulário padrão sera usado nas principais telas de
cadastro do sistema;
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
5. Como utilizar uma tela padrão do sistema?
Utilize este procedimento sempre que for criar uma tela baseada na tela
padrão do sistema. Em nosso exemplo será utilizada uma tela padrão para criação
das telas do menu de Cadastros.
Procedimentos a serem executados:
9 File -> New -> Other
9 Selecione a guia que tenha o nome do sistema atual (VideoLocadora)
9 Selecione o nome da tela padrão (frmCadastroPadrao, em nosso
exemplo)
9 Altere a propriedade Caption para Cadastro de Paises
9 Altere a propriedade Name para FrmCadastroPais
9 Salve a tela como U_CadastroPais
9 Ajuste as propriedades e eventos dos objetos que compõe a tela
OBS:
Os componentes DBGrid e DBNavigator serão explanados no próximo tópico.
Figura 11 – Usando a tela padrão
9 No evento OnShow da tela digite:
dm.tbPais.Open; // abre a tabela de paises
9 No evento OnClose da tela digite:
dm.tbPais.Close; // fecha a tabela de clientes
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
6. Como utilizar um DBGrid?
Utilize este procedimento para apresentar os dados de um banco de dados
em formato de grade, em linhas e colunas.
Procedimentos a serem executados:
9 Abra a tela de Cadastro de Paises
9 No menu, vá em File->Use Unit e escolha a tela em que se encontram as
tabelas (dm)
9 Selecione o componente DBGrid e altere a propriedade DataSource
(origem dos dados) de acordo com a tabela a ser apresentada na grade.
Escolha para este exemplo dsPais
9 Dê um duplo-clique sobre o DBGrid e clique no botão Add all Fields
9 Se for o caso, selecione os campos que não farão parte da grade e clique
no botão Delete Selected
para removê-los. Caso a grade faça parte de
uma tela padrão, só será possível remover o campo através da janela
Object Treeview.
Para deixar o DBGrid zebrado:
9 No evento OnDrawColumnCell do DBGrid digite os seguintes comandos:
if Odd(dm.tab_Clientes.RecNo) and (dm.tab_Clientes.State <>
dsInsert) then
begin
//Lembre-se de colocar a Unit DB na cláusula uses na Unit da tela.
// muda a cor do pincel
DBGrid1.Canvas.Brush.Color := clMoneyGreen;
// Preenche o fundo com a cor especificada
DBGrid1.Canvas.FillRect(Rect);
// desenha as células da grade
DBGrid1.DefaultDrawDataCell(Rect,Column.Field,State);
end;
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
Para ordenar os dados da grade ao clicar no título do campo:
9 A ordenação será feita através da propriedade de tabela
IndexFieldNames, que define o nome do índice para a classificação,
conforme o campo clicado na grade (Column.FieldName)
9 Crie na tela padrão uma variável global chamada ascendente do tipo
Boolean para que todas as telas de cadastro passem a utilizá-la
9 No evento OnShow, da tela padrão, digite: Ascendente := False;
9 Em frmCadastroPais, no evento OnTitleClick do DBGrid digite:
ascendente:= not ascendente;
if (ascendente) then
begin
dm.tbPais.IndexFieldNames := Column.FieldName + '
end
else begin
dm.tbPais.IndexFieldNames := Column.FieldName + '
end;
ASC'
DESC';
OBS:
Não digite os comandos na Unit da tela padrão, somente na de cadastro.
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
7. Como utilizar um DBNavigator?
Utilize este procedimento para navegar entre os registros da tabela.
Procedimentos a serem executados:
9 Selecione os componentes DBNavigator e altere a propriedade
DataSource (origem dos dados) de acordo com a tabela a ser utilizada na
tela. No exemplo anterior foi usado o datasource dsPais
9 Para exibir / ocultar qualquer botão utilize a propriedade VisibleButtons:
Figura 12 – Configurando os botões do DBNavigator
9 VisibleButtons = True exibe o botão. VisibleButton = False oculta.
Significado dos botões do DBNavigator e seus comandos equivalentes:
9 Utilize os comandos indicados abaixo, caso queira utilizar botões comuns
ao invés do DBNavigator:
o
= equivale ao comando <Tabela>.First, ou seja, vai para o
primeiro registro
o
= equivale ao comando <Tabela>.Prior, ou seja, vai para o
registro anterior
o
= equivale ao comando <Tabela>.Next, ou seja, vai para o
próximo registro
o
= equivale ao comando <Tabela>.Last, ou seja, vai para o
último registro
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
o
= equivale ao comando <Tabela>.Insert, ou seja, insere um
registro em branco
o
= equivale ao comando <Tabela>.Delete, ou seja, apaga um
registro
o
= equivale ao comando <Tabela>.Edit, ou seja, edita um
registro para alteração
o
= equivale ao comando <Tabela>.Post, ou seja, grava dados no
registro
o
= equivale ao comando <Tabela>.Cancel, ou seja, cancela
alteração no registro
o
= equivale ao comando <Tabela>.Refresh, ou seja, atualiza
dados nos controles
<Tabela> deve ser o nome da tabela para a qual se deseja manipular os
registros.
OBS:
Repita a execução dos tópicos das páginas 11 – 15 para criar as demais telas do
menu Cadastros (Tipos, Produtoras, ...) e do menu Movimentos (Locação),
fazendo as devidas adaptações, de acordo com a tabela utilizada, pois nos
exemplos está sendo utilizada apena a tabela de Países.
A tela Cópias deverá ser chamada por um botão na tela de Locação.
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
8. Como criar campos Lookup?
Este tópico vai ensinar os procedimentos para criar campos lookup, que
exibem valores de campos de registros de tabelas primárias de um relacionamento.
Aplique este tópico toda vez que desejar associar o campo que é chaveestrangeira à tabela relacionada. Como exemplo, na figura 13, o campo id_uf da
tabela Cidades é um bom exemplo para receber um campo LookUp, assim como o
campo id_pais, na tabela Estados.
Figura 13 – Exemplo de aplicação do campo LookUp na tabela Cidades
Procedimentos a serem executados:
9 Visualize a tela de DataModule (dm) do Sistema, ou qualquer tela que
possua um objeto ADOTable. Para isto tecle [Shift] + [F12]
9 Dê duplo-clique sobre o objeto ADOTable desejado. Para nosso exemplo,
escolha adotEstados
9 Tecle [Ctrl] + [N] para inserir um novo campo
o Em Fields Properties digite o nome do campo na caixa de texto
Name, escolha o tipo do mesmo em Type e digite o tamanho em
Size
o Em Field Type marque o tipo do campo como Lookup
o Em Lookup Definition escolha em Key Fields a chave estrangeira.
Em Dataset escolha o nome da tabela primária. Escolha o nome da
chave primária da tabela escolhida anteriormente em Lookup
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
Keys. E, finalmente, escolha o campo que aparecerá como
resultado em Result Field.
o Para que seja exibido o nome do País na tabela de Estados deixe
sua tela conforme o modelo a seguir:
Figura 14 – Configurando um campo LookUp
9 Clique sobre o botão [OK]
9 Acrescente o campo criado ao DBGrid da tela de Cadastro de Estados,
ou, arraste-o junto aos demais campos na tela, como já foi feito com os
outros campos da mesma
9 Crie campos Lookup nas demais tabelas em que for necessário e
adicione-os aos respectivos DBGrids e telas
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
9. Como inserir campos de uma tabela na tela?
Execute este tópico sempre que for apresentar campos da tabela na tela,
utilizando controles Data Controls (DBEdit, DBComboBox etc).
Procedimentos a serem executados: (Utilize apenas um dos procedimentos)
a) Automático:
9 Selecione o DataModule em que estão os componentes de banco de
dados. Logo em seguida dê um duplo-clique sobre o objeto AdoTable
correspondente à tabela que deseja pegar os campos. Selecione todos os
campos que deseja incluir na tela e arraste-os para dentro da tela em que
eles ficarão;
9 Como exemplo, selecione a tela DataModule dm e o objeto AdoTable
adotFilmes, selecione os seus campos e arraste-os para a tela
frmCadastroFilmes. Neste caso são utilizados controles DBEdit;
b) Manual:
9 Selecione o objeto Data Control desejado, um DBEdit, por exemplo, e
altere as propriedades DataSource (origem dos dados) e DataField
(campo) de acordo com a informação a ser exibida ou editada da tabela;
Figura 15 – Exemplo de Tela para Cadastro de Filmes
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
10. Como criar uma tela de login do sistema?
Este tópico tem o propósito de ensinar como criar uma tela de login para o
seu sistema.
Figura 16 – Layout da tela de Login
Procedimentos a serem executados:
9 File -> New -> Form (cria uma nova tela);
9 File -> Save All (Salve a Unit como U_Login na pasta Programas);
9 Altere as propriedades da tela frmLogin, conforme tabela a seguir:
Name
Height
Width
frmLogin
225
400
BorderStyle
Position
Caption
bsDialog
poScreenCenter
Login
9 Acrescente um objeto Image e altere suas propriedades:
Height
Width
Stretch
84
113
True
Left
Top
Picture...
4
4
HandShak.bmp
9 Acrescente um objeto GroupBox e altere suas propriedades:
Caption
Left
Height
Logando no Sistema Name
4
Top
88
Width
GrpBxLogin
96
382
9 Acrescente três Labels (01 à tela e 02 ao GrpBxLogin) e mude as
propriedades:
Label1
Caption
Alignment
AutoSize
WordWrap
Font...
Left, Top, Width, Height
SISTEMA COMERCIAL Versão 1.0
taCenter
False
True
Comic Sans Ms, 14, Bordô
140, 4, 208, 50
Label2
Usuário
taLeftJustify
True
False
18, 20,-,-
Label 3
Senha
taLeftJustify
True
False
18, 54,-,-
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
9 Acrescente ao GroupBox dois objetos Edit e altere suas propriedades:
Text
Name
PassWordChar
CharCase
Left, Top, Heigth, Width
Edit1
(em branco)
edApelido
#0
ecUpperCase
64, 19, 21, 177
Edit2
(em branco)
edSenha
*
ecLowerCase
64, 53, 21, 177
9 Acrescente ao GroupBox dois objetos BitBtn (Additional) e altere suas
propriedades:
Kind
Caption
Name
Left, Top, Heigth, Width
BitBtn1
bkOk
&OK
BtnOk
272, 18, 25, 89
BitBtn2
bkCancel
&Cancelar
BtnCancelar
272, 49, 25, 89
9 No evento OnClick do botão BtnCancelar, digite Application.Terminate;
9 No evento OnClick do botão BtnOk, digite:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dm.tbUsuarios.Open; // abre a tabela tab_Usuarios
frmPrincipal.StatusBar1.Panels[2].Text := ' Usuário:' +
frmLogin.edApelido.Text + ' - '+ dm.tbUsuariosUsuDepto.AsSTring;
if not (dm.tbUsuarios.Locate('UsuApelido', frmLogin.edApelido.Text,
[loPartialKey ])) or (dm.tbUsuariosUsuSenha.Value <>
frmLogin.edSenha.Text) then
begin
MessageDlg('Nome ou senha do usuário inválidos.'+#13+#13
+ 'Se você esqueceu sua senha, consulte '+ #13
+ 'o administrador do sistema', mtError, [mbOK], 0);
edSenha.Clear; // limpa o objeto edSenha
edSenha.SetFocus; //Ajusta o foco para o objeto edSenha
end
else begin
frmLogin.Hide; //Esconde a tela
frmPrincipal.ShowModal; //chama a tela frmPrincipal no modo modal
frmLogin.Release; // Remove a tela da memória
frmLogin := Nil; // Atribui conteúdo nulo para a variável
// de tela frmLogin
end;
OBS.:
Se, ao tentar compilar o programa, for exibido um erro dizendo que loPartialKey não
foi declarado, tecle [F1] e peça ajuda sobre loPartialKey.
Quando o Delphi exibir a ajuda, anote o nome da Unit à qual pertence este
parâmetro e inclua o nome da mesma (no caso, DB) na cláusula Uses do formulário
em questão.
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
11. Como criar relacionamento Master/Detail na aplicação?
Este tópico vai ensinar os procedimentos para criar um relacionamento
Master/Detail na aplicação.
Esse tipo de relacionamento se aplica sempre que temos um relacionamento
1:n. Como exemplo utilizaremos as tabelas adotPessoas e adotLocacoes, sendo
que, adotPessoas será Master, e adotLocacoes será Detail.
Figura 17 – Exemplo de relacionamento Master/Detail
Em um relacionamento Master/Detail, para cada registro da tabela Master,
são relacionados apenas os registros da tabela Detail que tiverem os mesmos
valores de chaves primária e estrangeira, respectivamente (adotPessoas.codigo =
adotLocacoes.codigo).
Procedimentos a serem executados:
9 Selecione a tela dm ([Shift] + [F12]);
9 Selecione a propriedade MasterSource da tabela detail adotLocacoes, e
escolha o nome do DataSource da tabela master, dsPessoas;
9 Selecione a propriedade MasterFields (chave primária da tabela master)
na tabela adotLocacoes e digite codigo, que é o campo que fará a
ligação entre as tabelas (chave-strangeira);
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
9 Opcional - configuração da tela locações:
o
Crie o formulário Locações, a partir de um formulário padrão;
o
No grid inclua apenas as principais informações sobre as locações.
Altere a propriedade Options -> dgRowSelect para True;
o
Inclua uma área com os campos para digitar os dados das locações;
o
Altere os campos que são chave-estrangeira (codigo e codigo_barra)
por campos DBLookUpComboBox. Configure as propriedades
DataSource e DataField com os dados da tabela que vai ser salva
(Locacao) e as propriedades ListSource, ListField e KeyField com os
dados da tabela LookUp (Pessoas e Copias, respectivamente).
OBS.:
No campo ListField podem ser acrescentados mais de um
campo do BD, separados por ponto-e-virgula;
o
Marque a propriedade ReadOnly do grid como True;
o
Adicione no primeiro GroupBox um DBLookUpComboBox para
pesquisar o nome do cliente. Configure as propriedades DataSource e
DataField com os dados da tabela que vai ser salva (Locacao) e as
propriedades ListSource, ListField e KeyField com os dados da tabela
LookUp (Pessoas);
o
Para que o nome do cliente apareça no ComboBox de pesquisa na
primeira vez que acessar a tela, inclua no evento OnShow o código:
dblcbLocacao.KeyValue :=
dm.adotPessoas.Fields[0].value;
o
Nos eventos OnShow e OnClose do form insira o código para abrir e
fechar as tabelas Locacao, Pessoas e Copias;
9 Execute a aplicação e chame a tela de Locações. A partir de agora,
quando um cliente for escolhido, só serão exibidos os registros das
locações correspondentes ao cadastro do cliente selecionado;
9 Dê duplo-clique na propriedade MasterField para ver a janela de
designer do relacionamento. O relacionamento também poderia ter sido
feito selecionando-se as chaves primária e estrangeira e clicando no botão
Add. Faça isto apenas se você não se lembrar do nome da chave primária;
INSTITUTO FEDERAL CATARINENSE
CURSO TÉCNICO EM INFORMÁTICA
Disciplina: Programação
Prof. Angelo Augusto Frozza
Figura 18 – Janela Designer do relacionamento