Buscar

Delphi Aplicado Módulo 3A

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 150 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 150 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 150 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 325 
 ���� Procurando registros com “Dbgrid e SetRange” ? 
No exemplo a seguir veremos com filtrar registros em uma tabela usando componentes DBGrid e SetRange. 
 
� Insira um Form, File, New Form. 
� Insira um Label1, clique no label1, pressione F11 e digite Código Inicial: 
� Insira um Label2, clique no label2, pressione F11 e digite Código Final: 
� Insira um componente Edit1 (aba Standard). 
� Insira um componente Edit2 (aba Standard). 
� Insira um Bitbtn (aba Additional), tecle F11, na propriedade Caption digite Procurar, 
na propriedade Name, mude o nome BitBtn1 para Bit_Procura 
� Selecione o formulário, tecle ESC 3 vezes para cancelar possíveis objetos selecionados, na propriedade 
Name digite Pequisa_Frm. 
	 Insira um componente Table ( aba DataAccess). 
 Insira um DBGrid ( aba DataControls ), clique no DBGrid, File, Use Unit e selecione Clientes, na 
 propriedade DataSource informe DataSource1 
 
 
 
 
 
 
 
 
 
 
 
 
Clique duplo sobre o botão Procurar e digite as seguintes linhas de código: 
 
 
 
Como padrão o Delphi executa sempre o primeiro formulário (formulário pai), para executar o form do Grid 
por primeiro selecione opção que está na barra de títulos, Project – Options – selecione o formulário 
Pesquisa_Frm ( nosso formulário ) e arraste-o posicionando-o por primeiro, clique OK, finalmente tecle F9 
para executar o programa. 
 
 
 
 
 
 
 
 
 
 
 
 
	 Clique na propriedade DatabaseName e 
defina o Alias, defina propriedade 
TableName = Clientes.db, clique em 
Table1, clique no botão direito ���� Fields 
Editor ���� Add Fields ���� Ok 
( para adicionar os campos ) 
 
Clique no Datasource1 e na propriedade 
Dataset defina Table1. 
 
 
Como padrão o Delphi mostra no Edit1 e 
Edit2 o texto Edit1 e Edit2, para apagar 
pressione F11, clique na propriedade na 
propriedade Text apague o texto Edit1. 
Outra maneira SEM usar “With … do” 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 326 
 ���� Como procurar registros em um DBGrid ? 
 
No exemplo a seguir estamos fazendo a procura pela coluna “Nome”, ou seja, basta digitar as letras iniciais do 
nome que desejar localizar na coluna Nome, a medida que for localizado algum nome, este será exibido no 
Label1, para apagar conteúdo campo use “backspace”. 
 
Crie um índice secundário para o campo Nome, visto que a pesquisa será feita pelo Nome. 
 
 
 
 
 
 
 
 
 
� Clique no DBGrid e no evento OnKeyPress digite o código abaixo: 
 
 
 
 
 
 
 
 
� Crie uma tabela com 
os campos DBGrid. 
� Abaixo da seção Private digite a 
ProcuraX: string; 
 
Clique no DBGrid, clique Options, 
clique na sub-opção dgEditing = 
False, e na propriedade 
ReadOnly = True. 
Insira um Label1 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 327 
 ���� Como ler / buscar “valores” da tabela para Edit ? 
 
Veja abaixo maneiras para ler ( mostrar ) campos em um Edit. No campo Table1Codigo.AsString; usamos o conversor 
AsString porque o conteúdo a ser exibido no Edit deve ser texto. Todos os códigos abaixo foram definidos no evento 
OnClick do botão Bitbtn. 
 
 
 
 
1ª forma: 
 
 
2ª forma: 
 
 
3ª forma: 
 
 
O número seis [6] indica que é o sexto campo da tabela. Estes números devem estar de acordo com a criação dos campos 
do DataBase Desktop. Vamos ler o campo o conteúdo do campo Nome e mostrá-lo na tela, em um Edit. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
� Para associar outros tipos de campos que não são texto a uma caixa de edição ( campo que aceita somente strings ), 
devemos utilizar as propriedades de conversão do componente TField : 
AsBoolean, AdDateTime, AsFloat, AsInteger e AsString: 
 
 
 
 
 
Table1 = tabela. 
Codigo = nome do campo. 
Table1Codigo.AsString 
AsString ( converte para string – texto ) 
 
 
� Insira um 
componente Edit e 
um Bitbtn, na 
propriedade Name 
digite Bit_Le_Nome. 
 
Apo clicar OK o 
nome será 
mostrado no Edit 
Box. 
 
Value: pega o “valor” ou “conteúdo” 
do campo e mostra no Edit2. 
Vamos ler um valor e mostrá-lo em 
um Edit ( em uma string ). Lembre-
se, antes devemos converte-lo para 
texto – string. 
 
Para mostrar o código / número 
que esta armazenado na tabela 
em um Edit é preciso antes 
converter o NÚMERO para 
TEXTO ( AsString ) 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 328 
 ���� Lendo conteúdo do campo 
 
No exemplo a seguir leremos o conteúdo do campo Estado Civil, se o conteúdo for a letra ”C”, será mostrada 
a palavra “Casado” caso contrário “Solteiro”. 
 
� Crie a tabela abaixo ( use o Database Desktop ) 
 
 
 
� Crie o formulário de cadastro. 
 
 
 
� Clique no componente DataSource1, clique no evento OnDataChange e digite o código abaixo: 
 
 
Serão aceitas somente 
as letras C e S. 
Se for digitada a letra C será 
mostrada a palavra Casado em azul 
com o tamanho da fonte de 15 
Se for digitada a letra S será mostrada 
a palavra Solteiro em vermelho com 
o tamanho da fonte de 20 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 329 
 
 ���� Maneiras de ler campos 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Insira 5 
componentes 
Labels e 5 Bitbtn. 
Insira um componente 
DBGrid, Table e um 
DataSource. Defina as 
propriedades de cada um 
destes componentes, já 
aprendemos anteriormente 
☺ 
Insira 5 labels, na propriedade 
Caption de cada um digite o 
texto que esta em amarelo. 
Foi inserido um 
DBGrid para mostrar 
os registros que estão na 
tabela. 
Se o salário que contiver na 
tabela for igual a 100, será 
mostrada a mensagem 
Salário OK ! em verde com 
o tamanho da fonte de 12. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 330 
Digite o código abaixo no evento OnClick do botão OK. 
 
 
Selecione o formulário e no evento OnShow digite o código abaixo: 
 
 
 
 ���� Como “editar / alterar” um registro ? 
O Dataset precisa estar em modo de edição para possibilitar a atualização dos dados. Para isso você precisa 
utilizar o método Edit e ao final utilize o método Post para gravar o registro alterado. As linhas de código 
abaixo podem ser digitadas no evento OnClick de um BitBtn. 
 
 
 
Verificando o estado da tabela, se estiver no modo de “edição” ou “inserção” gravará o registro. O código 
abaixo foi definido no evento OnClick de um botão Bitbtn: 
 
 
 ���� Como criar atalho com a combinação “Ctrl + A” ? 
 
Selecione o formulário corrente e defina a propriedade KeyPreview para o valor True e no evento 
OnKeyDown digite o código abaixo: 
 
 
 
 
 
 
 
 
 
 
 
 
Na propriedade Caption 
de cada botão serão 
mostradas as 5 maneiras 
de como ler o conteúdo 
de um campo. 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 331 
 ���� Destacando opção selecionada no RadioGroup 
Veja como destacar um item selecionado em um DBGrid. 
 
 
 
 
 
 ���� Como desabilitar opções do RadioGroup ? 
 
 
 
 
 
 
 
 
 
 
 
Digite o código abaixo no 
evento OnClick do 
RadioGroup. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 332 
 ���� Pesquisando registro com DBEdit ou Edit 
Um truque para pesquisar registro no campo Código. 
 
� Crie a tabela abaixo com o Database Desktop 
 
 
� Crie o formulário abaixo. Analise a seguinte situação: No campo Código não é possível “efetuar pesquisa”, 
visto que o componente DBEdit não permite tal ação. Para pesquisarum código terá que inserir um 
componente Edit. 
 
 
 
� Mova o componente DBEdit para o lado direito do formulário, apenas para não removê-lo do projeto, ao 
lado da label Código insira um componente Edit. 
 
 
 
 
 
 
 
 
Observe atentamente o código fonte do formulário acima, e cada um dos seus eventos. 
 
 
 
 
Componente 
EDIT que foi 
inserido. 
Componente movido. No momento 
não precisamos apagá-lo. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 333 
 
 
 
 
 
 
 
 
Consulta_Frm é a tela de pesquisa 
rápida que faremos adiante. 
Criando código 
automaticamente, 
autoincrement 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 334 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 335 
 
 
 
 
 
Agora, criaremos uma segunda tela para facilitar a pesquisa dos registros. 
 
 
 
 
 
 
 
 
Neste campo você poderá digitar um código 
para realizar pesquisa, porém se fosse no 
componente ao lado ( setinha vermelha ), isto 
não seria possível. 
 
 
Clique no componente 
RadioGroup, clique na 
propriedade Items, será aberta 
uma tela, digite Código e 
Nome um abaixo do outro 
como no exemplo acima, após 
clique Ok. Clique no botão, 
clique nan 
propriedade 
ModalResult e 
defina mrOK 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 336 
 
 
 
 
 
 
 
 
 
Clique duplo no registro selecionado transportará 
do Grid para a tela de Cadastro. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 337 
 ���� Relacionamento ( N – N ) - ( Ex: 1 ) 
O exemplo a seguir mostra como cadastrar um funcionário que trabalha em várias empresas. 
 
Crie as tabelas abaixo: 
 
 Funcionários.db Empresas.db 
 
 
 
 
 
 
 
 
 Func_Empresa.db 
 
 
 
 
 
 
���� File – New Application – remove file from Project – yes (remova o formulário em branco que o Delphi 
abriu ). 
 
���� Crie um Alias chamado de Relacionamento ( Database – Explore – Object – New – Standard – Ok – 
digite o nome Relacionamento – no lado direito , opção Path digite o caminho onde estão armazenadas as 
tabelas (C:\Delphi Madruga\Sys 2\dados ) – Apply e Ok para gravar. 
 
���� Crie o formulário de entrada de dados, use o Database - FormWizard para criar a tabela de Funcionários 
e Empresas. Clique o Formulário e defina as propriedades básicas: Caption = Cadastro de Funcionários, 
Name = Func_Frm, clique no componente Table1, pressione F11, na propriedade DataBaseName defina o 
alias Relacionamento, Name para Funcionarios_TB, clique no DataSource1, pressione F11, mude a 
propriedade Name para Funcionarios_DS 
Veja o cadastro de Funcionários abaixo: 
 
 
 
 
 
 
 
 
 
 
���� Insira um componente Label e altere a propriedade Caption para Empresas. 
 
���� Insira dois componentes Table e dois DataSource. Clique em Table1 defina a propriedade Databasename 
= Relacionamento ( alias ), a propriedade Name para Empresas_TB, defina a propriedade TableName = 
Empresas.db, clique no DataSource1 e mude a propriedade Name para Empresas_DS. 
 
Clique em Table2, defina a propriedade Databasename = Relacionamento ( alias ), a propriedade Name para 
Func_Empresas_TB, TableName = Func_Empresas.db, clique no DataSource2 e mude a propriedade 
Name para Func_Empresas_DS, clique duplo em Func_Empresas, será aberta uma pequena tela mostrando 
os campos, clique botão direito, clique em Add Fields e OK, clique novamente botão direito, clique em New 
 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 338 
Field ( vamos criar um campo temporário para mostrar o nome da empresa em um drop-down. Com drop-
down será mais prático), será aberta uma tela para definir nome e tamanho do campo, preencha campos como 
tela abaixo: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
���� Insira um DBGrid ( aba DataControls ), na propriedade DataSource defina Func_Empresas_DS, clique 
duplo sobre o DbGrid, será abeta uma tela onde definiremos as colunas dos dados que serão exibidos: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Clique no 
primeiro ícone 
amarelo ( Add 
New – Ins ), 
clique duas vezes 
para criar duas 
colunas, clique 
em FieldName e 
defina o nome do 
campo a ser 
mostrado, clique 
no + da opção 
Title para alterar 
o Caption para 
Código 
Empresa. 
O campo temporário é 
relacionado com o 
campo da tabela ( veja 
ao lado ). 
DBGRid 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 339 
� Defina os relacionamentos, clique Func_Empresas_TB, clique em MasterSource e defina 
Funcionarios_DS, clique em MasterFields para definir o relacionamento, veja abaixo: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1 
2 
Veja o 
relacionamento. 
Func_Cod é o 
campo do Código 
do Funcionário 
que que foi criado 
na tabela 
Fun_Empresa.db 
que serve para fazer 
o relacionamento. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 340 
 
 
 
	 Crie o formulário de entrada de dados para cadastrar algumas empresas ( utilize o FormWizard ) 
 
 
 
 
 
 
 
 
 
 
 
 Para selecionar uma empresa clique no final do campo Nome Empresa, será aberta uma lista drop-down. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Clique no DBGrid, defina a 
propriedade DataSource 
defina Func_Empresas_DS. 
Insira um Label e na propriedade 
Caption digite Empresas. 
<< Abrindo duas tabelas >> 
 
 
 
 
 
Esta é a tabela 
intermediária, somente para 
fazer o relacionamento. 
Tabela de Empresas. 
Clique no DBNavigator, clique na 
propriedade DataSource e defina 
Funcionarios_DS 
Um funcionário poderá ser 
cadastrado em várias empresas. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 341 
 ���� Relacionamento ( 1 : 1 ) - ( Ex: 1 ) 
 
Temos duas tabelas, de Alunos e de Professores. Na tabela Alunos cadastraremos o Professor para um 
aluno selecionado. Objetivo deste exemplo é mostrar relacionamento de 1 para 1 ( 1 : 1 ). 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
� File – New application – Project – Remove from Project, selecione a Unit1 e Yes. 
 
� Defina o Alias, aqui Madruga. 
 
� Clique em Database – Form Wizard para criar os dois formulários Alunos e Professores, veja abaixo 
como ficou o formulário de entrada de dados para o Cadastro de Alunos. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Relacionamento: 
A tabela Alunos deverá conter um 
campo para o relacionamento. Desta 
forma ligaremos o campo 
Alu_Cod_Relaciona com o campo 
Profe_Cod. 
 
 
� Altere as propriedades básicas 
do Formulário, Table, Name, 
DataSource e Caption. 
 
� Use o Form Wizard para 
gerar o formulário de entrada 
de dados para os Professores. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 342 
� Estamos na tabela dos Alunos, adicionaremos um componente DBLookupComboBox2 ( aba Data 
Controls ) para fazer o relacionamento entre os Professores e Alunos. Clique File • Use Unit • Professores 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Insira um componente 
DBLookupComboBox1 
( aba Data Controls ) e defina aspropriedades mostradas ao lado. 
AAlluunnooss 
 
Alun_Cod_Aluno 
Alun_Cod_Relaciona 
PPrrooffeessssoorreess 
 
 Profe_Cod 
Relacionamento 
Insira um componente Table, defina a 
propriedade DatabaseName = Alias 
( ou caminho das tabelas ), altere a 
propriedade Name para Profe_TB, 
clique em TableName, defina o nome 
da tabela para Professores.db, clique 
duplo sobre Profe_TB, clique em 
Add fields e Ok para adicionar todos 
os campos. 
Clique em DataSource1, clique na 
propriedade DataSet, defina 
Profe_TB, altere a propriedade Name 
para Profe_DS. 
Como funciona este relacionamento? 
 
Um Aluno terá apenas 
Um Professor 
por isto se chama relacionamento de 1 para 1 
 
O campo Professores poderá 
ficar em branco. 
1:1 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 343 
 ���� Como criar relatório com relacionamento “Professores e Alunos” usando SQL ? 
 
� File – New – Other e clique na opção Report, será aberto um formulário como o que está abaixo: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
� Clique duplo no meio 
deste formulário, será aberta 
uma tela para configurar 
tamanho do papel e outros. 
 
� Após clicar no 
botão OK será 
incluído 3 bandas. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 344 
� Para forçar quebra ( agrupamento ) por Professores precisamos incluir a banda que fará esta quebra, uma 
banda do tipo QRGroup. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
� Na propriedade do formulário Name altere o nome de QuickReport1 para QReport_Aula. 
 
� Insira na banda Page Header um componente QRSysData, mude a propriedade Data ( qrsTime ) para 
qrsReportTitle, onde será impresso o título do relatório via programação. Mais para direita da banda insira 
outro QRSysData, mude a propriedade Data para qrsDateTime ( para imprimir a data e a hora ), insira outro 
QRSysData, mude a propriedade Data para qrsPageNumber ( para imprimir número da página ). 
 
� Clique na banda Column Header, insira um componente QRLabel, mude a propriedade Caption para 
Nome do Professor. 
 
	 Insira um componente SQL ( Query ), clique no componente Query, clique no botão direito, clique em 
SQL Builder, na opção Database informe o Alias, na opção Table escolha a tabela de Professores e a tabela 
de Alunos. Posicione o ponteiro do mouse sobre o campo Prof_Codigo e arraste-o até o campo 
Alun_Cod_Relaciona, note o “traço” indicando o relacionamento, veja o gráfico abaixo: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Ao clicar no “raio” será 
mostrado o resultado SQL 
que foi gerado. 
Para fazer o relacionamento, clique na tabela de Professores, clique 
no campo Prof_Codigo e arraste até o campo Alun_Codigo. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 345 
 Clique no formulário do relatório QReport_Aula, na propriedade DataSet defina Query, na propriedade 
Active defina True. 
 
� Insira um componente QRDBText na banda Group Header, na propriedade DataSet defina Query, e na 
propriedade DataField = Profe_Nome, agora clique na banda Group Header, clique na propriedade 
Expression, clique botão Database field, clique em Query, clique em Profe_Nome, Ok e Ok. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
�� Clique na banda Detail, insira um componente QRDBText, altere a propriedade DataSet para Query, 
DataField para Alun_Nome. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Clique OK para 
finalizar. 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 346 
�� No formulário Menu insira um botão Bitbtn e no evento OnClick digite o código abaixo: 
Precisamos dizer ao formulário Menu achar o formulário do relatório, clique em File, Use e QReport. 
File – use – Qreport 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Após clicar no botão Relatório 1 será mostrado o resultado abaixo: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Professor 
Nomes dos Alunos do 
professor Jurandir 
Mostra relatório na tela, 
podendo também 
imprimir. 
Note a quebra ( agrupamento ), a primeira 
coluna dos Professores e a segunda 
Alunos. Clique na banda Group Header, 
clique na propriedade Child, defina o 
valor para True, será inserido mais uma 
banda chamada HasChild, insira um 
componente QRLabel e na propriedade 
Capiton digite Nome do Aluno. 
Relatório de Professores 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 347 
Veja abaixo após inserir Child para mostrar o cabeçalho Nome do Aluno. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Para visualizar o código SQL que foi gerado pelo SQL Builder, clique no componente Query1, clique em 
SQL Strings ( ... ) , veja abaixo: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Note que a cada quebra 
de Professor é 
impresso o cabeçalho 
Nome do Aluno 
SELECT 
 Professores.Prof_Nome, 
 Alunos.Alun_Nome 
FROM 
 "professores.db" Professores 
INNER JOIN 
 "alunos.db" Alunos 
ON 
 (Professores.Prof_Codigo = Alunos.Alun_Cod_Relaciona) 
GROUP BY 
 Professores.Prof_Nome, Alunos.Alun_Nome 
ORDER BY 
 Professores.Prof_Nome, Alunos.Alun_Nome 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 348 
 ���� Relacionamento ( 2 ) 
 
� Crie as duas tabelas. 
 
 
� Crie o formulário de entrada de dados para a Agenda. O campo código não precisa ser posto no formulário 
visto que é um campo auto-increment. 
 
 
 
� Abaixo do campo nome insira um DbGrid, um Table e um Datasource. 
 
 
 
 
 
Como padrão o nome é Table, mude a 
propriedade Name para 
Compromissos_TB e o DataSource para 
Agenda_DS. Clique em Compromissos 
_TB, defina a propriedade DatabaseName 
= Alias, TableName = Compromissos.db 
e defina Active para True. 
 
Relacionando campos: 
Clique em Compromissos_TB, clique na 
propriedade MasterSource e defina 
Agenda_DS, clique em MaterFields ( será 
aberta a tela abaixo ), clique no campo 
Comp_Cod_Relaciona, clique no campo 
Agen_Codigo e clique no botão Add e Ok. 
Como padrão o nome é Table, mude a 
propriedade Name para Agenda_TB e 
o DataSource para Agenda_DS. 
Clique em Agenda_TB, defina a 
propriedade DatabaseName = Alias, 
TableName = Agenda.db e defina 
Active para True. 
Clique em Agenda_DS e defina o 
DataSet para Agenda_TB. 
Insira um DBGrid, clique na 
propriedade DataSource e 
defina Compromissos_DS. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 349 
� Clique no formulário Agenda e abra as tabelas no evento OnCreate e no evento OnEnter do DBGrid. 
 
 
 
 
 
� Se o registro Jurandir for removido, todos seus compromissos também serão removidos. 
 ���� Alias ( 1 ) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
� Insira um componente DataBase 
( aba BDE ), clique duplo sobre este 
componente, será aberta uma tela, veja 
abaixo: 
 
� Clique e selecione o 
driver Standard. 
� Digite o nome do Alias 
desejado, aqui, Madrugada. 
� Digite o caminho onde estão 
as tabelas de dados. 
� Defina as propriedades do Database1 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 350 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ���� Alias ( 2 ) 
 
Selecione o formulário corrente e no evento OnCreate digite as linhas de códigoabaixo, insira também um 
componente Session ( aba BDE ). Insira um componente Session ( aba BDE – no delphi 6.0 ). 
 
 
Digite o código abaixo no evento OnCreate. 
 
 
 
 
 
 
 
 
 
 
� Observe atentamente 
cada evento � 
Dados é o nome da sub-
pasta onde contem todas as 
tabelas de dados 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 351 
 ���� Integridade referencial ( Paradox ) 
 
Exemplo: Temos um Cadastro de Cidades e um Cadastro de Funcionários. Cada registro gravado no 
Cadastro de Funcionários terá uma cidade relacionada ( buscaremos a cidade do Cadastro de Cidades ), 
portanto, todos os registros do Cadastro de Funcionários terão várias cidades “filhas”. Se alguma cidade for 
excluída do Cadastro de Cidades criará registros órfãos no Cadastro de Funcionários, e isto JAMAIS pode 
acontecer. A “integridade referencial” NÃO permite registros órfãos no Cadastro de Funcionários, ou no 
caso, em qualquer outra tabela. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1º registro 
 
Cadastro de Funcionários 
 
Código: 1 
Nome funcionário: Mike Allan 
Cidade: Timbó 
 
Registro nr 1 
 
Cadastro de Cidades 
 
Código: 1 
Cidade: Timbó 
Registro nr 2 
 
Cadastro de Cidades 
 
Código: 2 
Cidade: Blumenau 
2º registro 
 
Cadastro de Funcionários 
 
Código: 2 
Nome funcionário: Eric Tomas 
Cidade: Timbó 
 
3º registro 
 
Cadastro de Funcionários 
 
Código: 3 
Nome funcionário: Jurandir 
Cidade: Blumenau 
 
Integridade: 
 
No Cadastro de Cidades se tentar excluir a 
cidade de Blumenau ou Timbó o programa ( ou 
banco de dados ) NÃO deverá permitir. Se isto 
acontecer, teremos 3 registros no Cadastro de 
Funcionários sem suas respectivas cidades ! 
Lembre-se, o campo cidade do Cadastro de 
Funcionários esta relacionado com o Cadastro 
de Cidades, que é o local onde buscamos as 
cidades. 
Cidade “filha” 
Cidade “filha” 
Cidade “filha” 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 352 
� Crie as duas tabelas abaixo com o utilitário Database Desktop. 
 
 
 
 
 
 
� Formulário de Funcionários. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Cadastro de Cidades Cadastro de Funcionários 
Funcionários: Insira um componente 
Table, defina a propriedade 
DatabaseName = Alias X, 
Name = Funcionario_TB, 
TableName = Funcionários.db, clique 
em Funcionário_TB, clique no botão 
direito, Add All Fields, clique em 
Funcionário_DS, na propriedade 
DataSet defina Funcionários_TB. 
 
Cidades: Insira um componente Table, 
defina a propriedade 
DatabaseName = Alias X, 
Name = Cidades_TB, 
TableName = Cidades.db, clique em 
Cidades_TB, clique no botão direito, 
Add All Fields 
clique em Cidades_DS, na propriedade 
DataSet defina Cidades_TB. 
Cidade: Insira um componente DBLookupComboBox1, clique 
nele e defina as propriedades abaixo: 
DataSource = Funcionário_DS 
DataField = Func_Cod_Relaciona_City ( campo relaciona ) 
ListSource = Cidades_DS ( Datasource ) 
ListField = Cid_Cidade ( campo a ser listado ) 
KeyField = Cid_Cod ( campo chave ) 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 353 
� Abra o utilitário Database Desktop, clique em File, clique em Working Directory e defina o caminho 
onde estão as tabelas. 
 
 
 
� Abra a tabela de Funcionários, clique em Table, clique em Restructure, será aberta a tela abaixo, role até 
a opção Referential Integrity ( integridade referencial ) e clique, clique no botão Define ( que surgirá ). 
 
 
 
 
Clique no campo que 
relacionaremos 
Func_Cod_Relaciona_City, 
clique na setinha pra direita. 
Clique na Tabela 
Cidades, clique na 
setinha apontando 
para esquerda, clique 
no botão OK, será 
solicitado um nome 
para a integridade, 
digite o nome 
Func_City. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 354 
 
 
 
 
 
 
 
 
Insira um botão do tipo Bitbtn e no evento OnClick digite o código abaixo: 
 
 
 
Ao clicar no Navegador de registros retornará a Ao clicar no botão Excluir será mostrada 
Caixa de mensagem de erro abaixo: caixa de mensagem abaixo. 
 
 
 
 
 
 
Nome da integridade 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 355 
 ���� Sistema básico com alguns módulos 
 
� Tela senha de acesso. Tela de acesso, o usuário terá 3 chances para digitar a senha corretamente, caso 
contrário o programa abortará. 
 
 
 
 
 
 
 
 
 
 
Insira um componente MaskEdit, 
defina a propriedade PasswordChar 
diitando um asterisco ( * ), ou algum 
outro caracter que será mostrado no 
campo da senha. 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 356 
 
 
� Crie um menu para os programas. 
 
 
 
 
 
 
 
 
 
 
Cria o fundo gradiente no 
formulário da senha. 
Insira um PopUpMenu, clique duplo sobre este 
objeto e defina duas opções – Sócios e 
Empresas: Clique na propriedade Caption, digite 
Sócios, na propriedade Name digite Socios2. 
Ao clicar no botão direito haverá um atalho para 
os dois programas. Clique no formulário 
Módulo Principal, clique na propriedade 
PopupMenu e defina PopupMenu1. 
Clique duplo no componente MainMenu1 
e defina as propriedades: Clique na 
propriedade Caption, no lado direito digite 
Cadastros, na propriedade Name, digite 
Cadastros1, agora defina as propriedades 
para Sócios, Empresas, Recibos e Sair. 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 357 
Formulários abaixo são carregados para memória dinamicamente ( de forma + rápida ). 
 
 
 
 
 
 
 
Outra maneira: 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 358 
� Defina os formulários que serão carregados de maneira dinâmica: Project – Options – Forms e posicione 
os formulários a serem carregados dinamicamente para o lado direito da tela ( coluna = Available forms ). 
 
 
 
 
� Criaremos um modulo onde conterá os componentes de dados: 
 
 
 
 
 
 
 
 
 
 
Insira 3 componentes Table e 3 DataSources e 
definas as propriedades DatabaseName = Alias, 
TableName = Sócios_TB, clique em Sócios_DS 
defina o DataSet = Sócios_TB e a propriedade 
Name = Sócios_DS. 
 
Como padrão os nomes serão Table1, Table1 e 
Table3, DataSource1, DataSource2 e 
DataSource3, mude as propriedades de acordo 
com o exemplo. 
No Cadastro de Sócios 
criaremos a numeração de 
registros automaticamente 
( via programa ). Na seção 
Private crie a variável 
NrProx 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 359 
 
 
 
 
 
 
 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 360 
� Crie a tabela Cadastro de Sócios com os campos abaixo: 
 
 
 
 
 
 
 
 
 
 
 
O primeiro Edit é 
utilizado apenas para 
localizar registros, não é 
campo que faz parte da 
tabela. 
Insira um 
StatusBar, clique 
duplo, clique no 
botão amarelo 7 
vezes (Add new ) 
para criar as 
divisões. 
Nesta divisão 
será mostrado 
a quantidade 
de registros 
que estão na 
tabela. 
Clique no campo código e na propriedade 
ReadOnly = True . Desta forma não será possível 
“digitar” o código. Lembre-se que foi criado uma 
variável para criar o código automaticamente – 
auto-incrementador. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 361 
 
 
 
 
 
 
Localizarápelo Código do 
Sócio ou através do Nome 
( o campo Nome é um índice 
secundário ). 
Soma quantidade de 
registros que há na tabela e 
mostrará na barra inferior. 
Soma todos os 
salários da tabela e 
mostra no Label10. 
Ao fechar o formulário e se for 
alterado algum campo, antes de 
fechar será solicitada confirmarção 
para a gravação ou não do registro 
corrente. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 362 
 
 
 
 
 
 
 
 
 
 
 
No campo Edit_Localiza 
será aceito somente “letras”. 
Ao excluir o 
registro corrente. 
Se for ativada uma 
das 3 teclas abaixo, 
estas serão mostradas 
na barra de status: 
 
Caps, Del ou 
NumLock. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 363 
 
 
 
 
 
 
Verifica se registro 
esta em edição ou 
alteração, grava o 
registro e toca um 
som do tipo .wav 
No campo Nome Sócio será 
aceito somente letras. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 364 
 
 
 
 
 
 
 
 
Apaga TODOS os 
registros da tabela 
mediante confirmação. 
Ao clicar no botão será 
localizado um Sócio 
através do seu código. 
Procura registro 
através do nome 
informado. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 365 
 
 
 
 
 
 
 
Navega nos registros, 
permitindo apagar o 
registro, usar setinha 
para cima e para 
baixo etc. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 366 
� Crie a tabela Cadastro de Recibos com os campos abaixo: 
 
 
 
 
 
 
 
 
 
 
 
 
Insira um componente DBLookupComboBox1 
( aba DataControls ) e defina as propriedades 
de acordo com o gráfico. 
 
Insira um segundo DBLookupComboBox2 
para a Empresa e definas suas propriedades. 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 367 
 
 
 
 
 
 
 
 
 
 
 
� Crie a tela para pesquisar Nomes, após encontrar o Nome este será transportado para a tela de Recibos. 
 
 
 
 
 
 
 
 
Insira um DBGrid, clique duplo 
sobre o Grid, insira duas 
colunas clicando na pastinha 
amarela ( Add new ) e defina a 
propriedade FieldName = 
Nome_Socio e Cidade. 
Insira um botão Bitbtn e na propriedade 
ModalResult defina o valor para MrOk 
 
Esta é uma maneira prática para selecionar registros. Ao 
clicar no botão acima ( setinha vermelha ) será aberta uma 
tela ( veja abaixo ), serão listados todos os Sócios 
cadastrados, digite as letras iniciais do Sócio que deseja 
procurar ou clique sobre ele, após clique no botão OK, o 
registro será transportado para a tela de Cadastro de 
Recibos. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 368 
 
 
 
 
Veja abaixo, foram digitadas as letras JUR, o cursor esta posicionado no registro JURANDIR PELLIN. 
 
 
 
 
 
 
 
 
 
 
 
Ao clicar OK o registro selecionado 
JURANDIR PELLIN será transportado para a 
tela de Recibos no campo Nome Sócio. 
Indice secundário. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 369 
 ���� Filter ���� Procurando registros 
Crie um Cadastro com os campos Nome e Data de Aniversário. Com o Filter é possível pesquisar registros 
registros através de qualquer campo. 
 
 
 
 
 
 
 
 
 
 
Clique no componente Clientes_TB, 
clique no evento OnFilterRecord e 
digite o código. 
O campo Data_Aniver não é 
campo de índice secundário, 
é apenas um mero campo. 
Na linha Uses digite a 
biblioteca DateUtils. 
 
No campo Edit digite 
somente: dia ou o mês 
ou o ano. 
Insira um componente 
RadioGroup ( Standard ) 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 370 
Resultado do código da página anterior: 
 
 
 
 
Segue abaixo outra maneira: 
 
 
 
 
 
 
 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 371 
 ���� Mesmo campo para procura e grava registro 
 
Na situação a seguir usaremos um único campo para procurar um registro e também para gravá-lo. Após o 
usuário digitar um código que já existe, este registros será trazido para memória. 
 
� Crie a tabela abaixo: 
 
 
 
� Crie o formulário abaixo, insira dois componentes Tables e dois DataSources. Nos dois Tables abaixo 
usaremos a tabela de ClientesX ( uma única tabela ). 
 
Clique em Table1, defina as propriedades DatabaseName = Alias, clique em TableName = ClientesX.db, 
clique em Name defina o nome Clientes_TB, clique em DataSource, defina o nome Clientes_DS, clique na 
propriedade DataSet = Clientes_TB, propriedade Name = Clientes_DS, clique em Clientes_TB e defina 
Active para True. 
 
Clique em Table2, defina as propriedades DatabaseName = Alias, clique em TableName = ClientesX.db, 
clique em Name defina o nome Table_Aux_TB, clique em DataSource, defina o nome 
DataSource_Aux_DS, clique na propriedade DataSet = Table_Aux_TB, propriedade Name = 
DataSource_Aux_DS, clique em Table_Aux_TB e defina Active para True. 
 
 
 
� Código fonte do programa acima: 
 
 
 
 
 
 
Insira um DBNavigator, 
clique na propriedade 
DataSource defina 
Clientes_DS. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 372 
 
 
 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 373 
 ���� Registro duplicado não permitido 
 
Como evitar a duplicação de registros ? Uma pessoa ou registro pode ter somente um único código. 
 
� Crie uma tabela. O campo código é “ I “ ( Long Integer ) 
 
 
 
� Clique no componente Table1, clique no evento OnPostError e digite o código abaixo: 
 
 
 
Outra forma: 
 
 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 374 
 ���� CGC ���� Como validar ? 
 
 
 
 
 
Após sair do campo CGC ( perder o 
foco do campo ), será mostrada uma 
menssagem confirmando validade do 
CGC digitado. 
 
Função Right 
Função Cgc 
 
DBEdit5 é o campo onde 
digitamos o número do CGC. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 375 
 ���� CPF ���� Como validar ? 
 
 
 
 
 ���� TryStrToFloat ���� Como aceitar somente valor ? 
 
 
 
 
 
 
O conteúdo digitado no 
campo do CPF será 
verificado no evento 
OnExit, ou seja, quando 
perder o foco do campo. 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 376 
 ���� Como reajustar todos os “salários” de uma tabela ? ( 1 ) 
 
Mostra como efetuar “reajuste salarial” em todos os registros da tabela com um determinado percentual 
utilizando os componentes SpinEdit ( aba Samples ), ProgressBar ( aba Win32 ). 
 
 
 
 
 
 
Insira um componente 
SpinEdit ( aba Samples ). 
Insira uma ProgressBar ( aba Win32 ). 
Retângulos pontilhados são 
usados pela ProgressBar. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 377 
 ���� Como reajustar todos os “salários” de uma tabela ? ( 2 ) 
 
Atualizará todos os preços unitários da tabela no percentual informado. 
 
 
 
 
 
 
 
 
 
Insira uma ProgressBar ( aba Win32 ) 
A linha em vermelho 
mostra como arredondar 
o valor. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 378 
 ���� Como somar todos os “salário” ? 
 
Após clicar será lido todos os registros da tabela e somará todos os campos salário na variável Total.No evento OnClick do botão Calcula ( Bit_Calc_Salarios ) digite o código abaixo. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ���� Como fazer barra de título piscante ? 
 
 
 
 
 
 
 
 
 
 
 
 
Insira um Timer ( aba System ), clique duplo sobre 
Timer e digite o código abaixo. Este código fará com 
que a barra de título pisque sem parar. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 379 
 ���� Como criar um campo temporário com relacionamento e pesquisa ? 
 
No exemplo a seguir veremos como criar “campo temporário”, relacionamentos e mais uma maneira de 
pesquisar registros. 
 
 
� Crie as duas tabelas abaixo: Na tabela Alunos.db há um campo chamado de Alun_Cod_Relaciona ( este 
campo não ficará visível no formulário de Cadastros de Alunos, finalidade deste campo, é unicamente fazer o 
relacionamento), que será o campo usado para fazer o relacionamento da tabela de Alunos com a tabela 
Professores. 
 
 
 
 
 
 
 
 
 
 
 
� Use o Form Wizard para criar o formulário de entrada de dados para cadastrar os Alunos. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
� Agora vamos fazer o relacionamento para buscarmos o nome do professor. 
 
Insira um componente DBEdit, defina duas propriedades, DataSource para Alunos_DS, DataField para 
Alun_Cod_Relaciona. 
 
Insira um Table e um DataSource, altere os nomes destes componentes: Table para Profe_TB, DataSource 
para Profe_DS. Clique Profe_TB, defina a propriedade DatabaseName = Alias, TableName para 
Professores.db ( nome da tabela ). Clique em Profe_DS, DataSet defina Profe_TB e Name para Profe_DS. 
 
Vamos criar o campo temporário para “mostrar” o nome do professor. Clique no componente Alunos_TB, 
clique no botão direito, clique em New Field, será mostrado uma tela para definir o nome do campo, tipo, 
tamanho etc , veja na página a seguir: 
 
 
 
 
Tabela: Alunos.db 
 
Tabela: Professores.db 
 
 
Altere as propriedades básicas do 
formulário: Caption para Cadastro de 
Alunos, Name para Alunos_Frm. 
Altere as propriedades dos componentes 
de dados, Table1 para Alunos_TB, 
DatabaseName = Alias, TableName 
para Alunos.db, DataSource para 
Alunos_DS, DataSet para Alunos_DS. 
 
Estas são as propriedades básicas para 
personalizarmos o formulário. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 380 
Observe com atenção cada opção da tela abaixo. Digite o nome do campo ( Nome_Profe_Temp ), String 
porque é um campo “texto”, o tamanho é de “20 caracteres”, tipo de campo “lookup, ou seja, campo tipo 
drop-down”, campo chave é “Alun_Cod_Relaciona” ( campo que foi criado na tabela de Alunos ), DataSet é 
Profe_TB, chave de pesquisa “Profe_Codigo”, o que será resultado ( nome do campo que será mostrado ), 
nome do professor ( Profe_Nome ). 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
� Abaixo está o campo temporário Nome_Profe_Temp, arraste-o para dentro do formulário. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Clique no componente Alunos_TB, 
clique duplo, será aberto a tela 
acima com todos seus campos. 
Sempre escrevo “Temp” no final do 
nome do campo para diferenciar um 
campo físico de um campo 
temporário ☺ 
 
Arraste o campo para 
dentro do formulário 
 
Traduzindo caixa campo temporário: 
 
Name............. : nome do campo ( temp - temporário ). 
Type .............. : tipo do campo – string = texto. 
Size................ : tamanho do campo ( 20 caracteres ). 
Lookup ......... : veja no lado direito – drop-down. 
Keyfiels......... : nome campo para relacionar. 
Dataset.......... : dataset-Professores para buscar o nome do Professor. 
Lookup keys. : chave primaria campo Professor. 
Result field ... : resultará mostrando o nome do Professor. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 381 
� Agora vamos inserir um componente Bitbtn ( botão ) para abrir a tela de pesquisa dos professores, nomeie 
este botão para Bit_Procura e no evento OnClick digite o código abaixo: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
� Insira um novo formulário, na propriedade Name defina o nome para Localiza_Frm. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
� Clique no DBGrid, defina a propriedade ReadOnly para True, lembre-se, o Grid serve somente para 
mostrar os nomes dos professores, e não para cadastrar, alterar ou excluir. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Insira um componente 
DBGrid, um Edit e 3 
botões do tipo BitBtn. 
Adiante criaremos um 
formulário para filtrar os 
registros chamado de 
Localiza_Frm. 
Clique no botão OK, altere a 
propriedade ModalResult para 
mrOK. 
 
 
Clique duplo sobre o DBGRid, será aberta a tela 
ao lado, insira uma coluna ( add new ) ( setinha 
vermelha ), veja na página seguinte mais 
propriedades ... 
 
 
Clique no primeiro item 
( 0 – Prof_Nome ), defina o nome do 
campo na propriedade FieldName e 
mais abaixo a propriedade Caption 
Nome do Professor. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 382 
	 No evento OnChange do Edit digite o código abaixo. Note na linha With foi informado Profe_Frm para 
indicar que o componente ( table – tabela ) Profe_TB está no formulário de Professores. 
 
 
 
 
 
 
 
 
 
Quando for aberto o formulário de consulta de professores o cursor estará posicionado no Edit para 
imediamtamente iniciar a procura de um possível nome de professor. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ���� PageControl e SatusBar ���� Controle de páginas e Barra de status 
Usaremos o componente PageControl ( aba Win32 ) e o componente SatatusBar ( aba Win32 ). 
� Insira um formulário ( New Form ) 
� Insira um PageControl, clique no botão direito, clique na opção New Page para inserir novas páginas ou 
abas. 
 
 
 
Abra a tabela de Professores e 
crie um índice secudário 
chamado de Inome_profe 
 
Digite as linhas abaixo nos 
respectivos eventos, 
OnShow e OnClick. 
 
Se você esta na tela de pesquisa de 
Professores, e se o professor que estiver 
procurando não existir, clique no botão 
“Professores” para cadastrar novos 
“teachers” 
� Clique no centro do form para 
selecionar a TabSheet1 ( página ), na 
propriedade Caption altere o nome de 
TabSheet1 para Empresas, este passo 
deve ser repetido para as outras duas 
Tabsheets 2 e 3. Altere também a 
propriedade Name de cada TabSheet1 
para TabSheet_Empresa, 
TabSheet_Funcionarios 
TabSheet_Cidades. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 383 
� Selecione o formulário, na propriedade Caption digite Page Control e na propriedade Name digite 
PageControl_Frm. 
 
� Insira 3 componentes Table e 3 componentes DataSource. Já aprendemos anteriormente as propriedades 
básicas que devem ser definidas para os componentes Table e Datasource. 
 
Passos: Clique no primeiro Table, clique na propriedade DatabaseName e digite o Alias ou caminho onde 
estão armazenadas as tabelas, clique na propriedade Name e digite Emp_TB, defina a propriedade 
TableName = Empresas.DB. Clique no componente DataSource1, na propriedade DataSet defina Emp_TB 
, na propriedade Name = Emp_DS. Clique em Emp_TB, clique no botão direito, Fields Editor, clique direito, 
Add fields e clique OK. 
 
Todos os passos acima deverão ser repetidos para as duas outras tabelas (Tables e Datasources ) - ( 
Funcionários e Cidades ). 
 
� Clique duplo no componente Func_TB, será aberta uma pequena tela mostrando os campos, selecione-os, 
clique no primeiro campo ( Func_Cod ), mantenha a tecla Ctrl pressionada e clique nos campos desejados, 
clique na área azul ( note que todos os campos selecionados ), arraste-os para dentro da TabSheet_Empresas, 
solte-os,estes serão posicionados no corpo do TabSheet_Empresas. Este processo é feito para definir os 
campos, é apenas uma forma rápida, caso contrário teríamos que definir campo a campo ☺. 
 
 
 
� Clique no TabSheet_Empresas, insira dois botões Bitbtn para navegar nos registros. 
 
 
 
 
 
Insira um DBNavigator ( aba Data 
Controls ), defina a propriedade 
DataSource para Func_DS. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 384 
	 Insira uma StatusBar ( aba Win32 ), esta ficará posicionada no rodapé da tela corrente, clique duplo sobre 
ela e clique 4 vezes na pastinha amarela ( Add new ), para inserir 4 divisões na StatusBar. 
 
 
 
 
 
 
 Veja abaixo o programa fonte completo: 
 
 
 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 385 
 
 
 
 
Veja abaixo vários posicionamentos das “abas ou palhetas”, altera a propriedade TabPosition. 
 
 
 
 
 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 386 
 
 
 
 
No exemplo abaixo há apenas um DBNavigator1 ( navegador de registros ), no exemplo anterior havia um 
navegador para cada cadastro. 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 387 
No evento OnChange do PageControl digite o código abaixo: 
 
 
 
 
 
 
 
 
 ���� CEP ���� Como formatar ? 
 
 
 
 
 
 
 
 
 
 
Inserindo ícones para os Tabs (abas): Na barra de componentes do Delphi – aba Win32 
selecione o componente ImageList, clique duplo para selecionar os ícones desejados, 
selecione PageControl, na propriedade Images clique para definir ImageList1. Após será 
definido automaticamente os ícone para cada Tab (de acordo com a numeração) ☺ 
Clique no PageControl e 
na propriedade Image 
defina o componente 
ImageList1. 
Clique nesta 
região para 
melhor selecionar 
a PageControl. 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 388 
 ���� PopMenu ���� Como criar menu ? 
Cria um menu de atalho ao clicar no botão direito do mouse. 
 
� Na aba Standard , insira um componente PopupMenu, selecione o campo código EditCodigo, na 
propriedade PopupMenu deste campo informe PopupMenu1, desta forma quando o ponteiro do mouse 
estiver sobre este campo e se clicado no botão direito do mouse será aberto o menu de atalho. Para definir 
opções no PopupMenu, clique duplo sobre PopupMenu, será aberta uma outra tela, no primeiro Caption 
informe Cor de fundo e no segundo Caption informe Cor da letra. 
 
 
 
 
 
 
 
 ���� WAV ���� Como reproduzir um arquivo de som do tipo “.wav” 
 
Para reproduzir sons no formato WAV é simples. Na linha Uses inclua a cláusula MMSystem. 
 
� Crie um botão chamado de Som, no evento OnClick digite a linha de código abaixo: O arquivo de som 
aqui é Dog.Wav, poderia ser qualquer outro arquivo. 
 
 
 
SND_ASYNC Executa o som assincronicamente, a função retorna assim que inicia o som. 
SND_NODEFAULT Especifica que se o som não pode ser tocado a função não toca o som padrão. 
SND_MEMORY Use se o som está em um arquivo de recursos. 
SNDLOOP Especifica que o som não deve para de tocar até que outro som seja chamado. 
SND_NOSTOP Faz com que o som não possa ser interrompido por outro, retorna FALSE se isto 
ocorrer. 
 
 
 
 
 
 
Clique duplo para definir 
as procedures que serão 
no evento onclick. 
 
Após clique duplo sobre 
PopupMenu será aberto uma 
tela para definir os Captions e 
Eventos. 
 
Ao clicar o 
botão direito. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 389 
 ���� Splash Screen ���� Como criar tela de abertura ? 
 
Criando tela de abertura do sistema. 
 
� Insira um form. 
� No ícone View Unit abra seu projeto. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ���� Como carregar uma imagem .bmp quando carregar o form ? 
 
 
 
 
 
 
 
 
Insira uma figura, aba 
Additional – Image, na 
propriedade Picture escolha 
um arquivo de imagem. 
Insira um componente Image ( aba 
Additional ), um componente 
OpenPictureDialog 
( aba Dialogs ) 
 
Imagem deve 
estar na pasta do 
projeto corrente. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 390 
 ���� Como adicionar um percentual em um valor ? 
 
Temos 3 campos edits, no primeiro campo será digitado um valor, no segundo um percentual e no terceiro edit 
será armazenado o total já acrescido do percentual, ou seja, valor atualizado. Teremos um problema por causa 
do uso do “ponto” ( 100.22 ). 
 
 
 
 
 
 
 
 
 
 
 
 
Para resolver este problema precisamos fazer uma pequena função para remover o “ponto” do valor ( 100.22 ) 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 391 
Solução do “ponto” no valor ( 100.20 ) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 392 
 ���� Encriptografando senha 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 393 
 ���� DBGrid e SQL ���� Um único DbGrid com resultados diferentes 
 
Neste exemplo usaremos um DBGrid, e faremos vários DataSources, fazendo combinações com 
para retornar um resultado no Grid. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
� Vamos criar um Modulo de dados para concentrar todos os componentes Query. Insira um 
DataModule, na propriedade Name defina o nome DM_Qr. Clique em File – New – DataModule, 
insira 8 Query ( plural queries ), defina os nomes de acordo com o gráfico abaixo. Defina a 
propriedade DatabaseName seu alias para cada Query do projeto corrente. 
 
As Query ( queries ) abaixo serão usadas adiante para 
fazermos os relatórios. 
 
 
Tabela: Produtos.db 
 
 
Cada DataSource que esta no formulário 
Grid deverá ser associado com um 
Query do módulo DM_Qr. Clique em 
File – Use Unit e selecione DataModulo. 
Clique em Produtos_Todos_DS, clique 
na propriedade DataSet e associe com 
seu respectivo Query ou, 
Produtos_Todos_Qr. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 394 
Agora vamos definir os códigos de SQLs para cada Query que será utilizado. 
 
Clique no componente Query1, clique na propriedade SQL, clique no lado direito em TStrings (...) e 
digite o código SQL para cada componente ( Query1, Query2 ... ) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
� Insira um segundo DataModulo, na propriedade Name defina o nome DM, insira 1 Table e 1 
DataSource, defina o nome ( name ) do componente de acordo com o gráfico abaixo, clique em 
Produtos_TB, na propriedade DatabaseName defina o Alias ( ou caminho da tabela ), clique na 
propriedade TableName, defina o nome da tabela que será usada aqui Produtos.db, clique duplo 
em Produtos_TB, clique no botão direito, clique em Add fields e Ok. 
 
 
Query1 
 
SELECT 
 Prod_Codigo, 
 Prod_Descricao, 
 Prod_Qtde, 
 Prod_Data, 
 Prod_Obs 
FROM 
 "Produtos.db" Produtos 
WHERE 
 (Prod_codigo >= :Cod_Inicial) and (Prod_codigo <= :Cod_Final) 
Query2 
 
SELECT 
 Prod_Codigo, 
 Prod_Descricao, 
 Prod_Qtde, 
 Prod_Data, 
 Prod_Tipo 
FROM 
 "Produtos.db" Produtos 
WHERE 
 (Prod_Data >= :Data_inicial) and (Prod_Data <= :Data_Final) 
and (Prod_Tipo = :Tipo) 
 
Query3 
 
Não digite nada ☺ 
Query4 
 
Não digite nada ☺ 
Query5 
 
SELECT 
 Prod_Codigo, 
 Prod_Descricao,Prod_Qtde, 
 Prod_Data, 
 Prod_Tipo 
FROM 
 "Produtos.db" Produtos 
WHERE 
 (Prod_Data >= :Data_Inicial) and (Prod_Data <= :Data_Final) 
Todos_Produtos_Qr 
 
 
Todos_Produtos_Igual_Qr 
 
 
Produtos_Maior_Que_Qr 
 
 
No evento OnCreate do DM ( DataModulo ) abra a tabela de Produtos. 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 395 
� Crie o formulário de Produtos para dar entrada aos produtos. 
 
 
 
 
 
 
 
 
 
 
� Insira um Form, um DbGrid, 7 Datasources, 19 botões BitBtn e10 Edit. Adiante veremos as 
propriedades que deverão ser definidas para cada um dos componentes que estão no formulário. 
 
 
 
 
Estando no DM ( Data Module ), clique em Produtos_TB, defina o 
DatabaseName = Alias, defina a propriedade Name = Produtos.db, clique em 
Produtos_TB, clique no botão direito, clique em Add fields e Ok, selecione 
todos os campos, arraste-os para dentro do formulário, clique na propriedade 
Active e defina o valor True. Esta é uma rápida maneira para criar o formulário 
de entrada de dados para os Produtos, a propósito, já vimos ☺ 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 396 
 
Produtos – código fonte 
 
 
 
Seleções – código fonte do programa 
 
 
 
 
 
 
 
 
 
 
No formulário de Produtos, no evento 
OnClose digite este código. Ao fechar o 
formulário será verificado o registro se 
foi inserido ou alterado e será solicitada 
confirmação. 
Abaixo segue os código utilizados no formulário 
Seleções ( veja o formulário na página anterior ) 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 397 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 398 
 
 
 
 
 
No início do programa, na cláusula Private digite a linha Procedure Limpa_Grid; 
 
Digite a procedure abaixo: 
 
 
 
 
 
SUM () Soma 
AVG () Média 
MAX () Máximo 
MIN () Mínimo 
COUNT(*) Conta registros 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 399 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 400 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Localiza uma descrição ou outra. 
Selecionará o código que 
for digitado no Edit5.Text. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 401 
 
 
 
 
 
 ���� Relatório com 
 
Vamos criar os relatórios do programa que criamos na página anterior usando SQL. 
 
� Crie um formulário para seleção. Insira um formulário, 3 botões Bitbtn, 8 edit ( edits ) e um 
componente RadioGroup. Criaremos 5 formulário para os relatórios 
 
 
 
 
 
 
 
 
� 
� 
� 
� 
� 
RegsX é uma variável. 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 402 
���� Relatório ���� Lista “todos” os registros. 
 
 
 
Associe cada QRDBText com o seu respectivo campo 
 
 
 
 
 
 
 
 
 
Atenção ! DM_Qr é o módulo onde 
contém todos os Query 
( queries ) utilizados neste exemplo, 
portanto, este deve vir por primeiro 
para indicar a origem de todos os 
outros Query. 
 
DM_Qr.Produtos_Todos_Qr ... 
Dataset: 
DM_Qr.Todos_Produtos_Qr 
Todos_Produtos_Todos_Produtos_Todos_Produtos_Todos_Produtos_QQQQrrrr 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 403 
���� Relatório ���� Listará todos os registros “iguais” ao código solicitado. 
 
 
 
 
 
 
 
 
Dataset: 
DM_Qr.Todos_Produtos_Igual_QR 
Todos_Produtos_Igual_QrTodos_Produtos_Igual_QrTodos_Produtos_Igual_QrTodos_Produtos_Igual_Qr 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 404 
���� Relatório ���� Listará todos os registros “por período” 
 
 
 
 
 
 
 
 
 
Dataset: 
DM_Qr.Query1 
Query1Query1Query1Query1 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 405 
���� Relatório ���� Listará por “data e tipo” 
 
 
 
 
 
 
 
Dataset: 
DM_Qr.Query2 
Query2Query2Query2Query2 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 406 
���� Relatório ���� Listará “perído e opção selecionada” 
 
 
 
 
 
 
 
 
 
 
Dataset: 
DM_Qr.Query5 
Query5Query5Query5Query5 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 407 
 
 
 
Faremos um relatório com quebra por datas ( período ) 
Clique em Query_Data, clique na propriedade DatabaseName e defina o Alias, neste caso Dm_Sqls 
 
 
 
 
Clique na região branca 
e defina o DataSet para 
Query_Data 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 408 
Group Header: Insira uma banda QrGroup, insira nesta banda um QrExpr, clique em QrExpr e na proprieade 
Expression digite Query_Data.Prod_Data, clique na banda QrGroup e na propriedade 
Expression digite Query_Data.Prod_Data 
 
Group footer: Insira um componente QrExpr, clique em QrExpr e na propriedade Expression digite 
SUM(Query_Data.Prod_Qtde), clique na propriedade ResetAfterPrint e defina o valor para 
True. 
 
Summary Insira um componente QrExpr, clique em QrExpr e na propriedade Expression digite 
SUM(Query_Data.Prod_Qtde), clique na proprieade ResetAfterPrint e define o valor para 
True . Insira um QrSysData, mude a propriedade Data para qrsDetailCount, na propriedade 
Text digite Regs: 
 
 
 
 
Adicione dois Edit e um 
botão do tipo Bitbtn 
Formulário do relatório. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 409 
 
 
Resultado 
 
 
 ���� Rotinas ���� Como criar ? 
 
Como o próprio nome sugere “rotinas”, ou seja, pedaços / trechos de linhas de código que são muito usadas 
em vários programas do seu projeto. Um arquivo de rotinas pode conter várias rotinas. Uma rotina pode conter 
várias linhas de código e terá um único nome. Quando precisar chamar uma rotina em outro programa não 
repita linhas de código, digite apenas o nome da rotina desejada. Veja adiante um exemplo ( básico ): 
 
� File • New • Unit 
 
Você terá o código abaixo padrão: 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 410 
 ���� Rotina Mensagem 
 
 
 
 ���� Usando rotina acima 
 
� Abra seu programa (ou projeto) para aplicar a rotina que acabamos de criar. 
� Clique em Add to project (+) e adicione o arquivo de rotina ( Rotina_Exemplo ) 
� File ���� Use Unit ���� e selecione o arquivo de rotinas. 
 
 
 
 ���� Rotina cores ���� Para mudar cores dos campos 
Criaremos uma rotina para mudar a cor do campo quando “sair / perder o foco “ do campo corrente. 
 
� Crie um arquivo para armazenar as rotinas. File ���� New ���� Unit ���� Ok e digite o conteúdo a seguir, salve a Unit 
com o nome Minhas_Rotinas. 
 
unit Minhas_Rotinas; 
interface 
uses dbctrls, Graphics; 
 
// DbCtrls = dentro deste há as definições do Objeto TDbEdit 
// Graphics = dentro deste há as definições das cores clYellow etc 
 
Procedure Entra_Cor(Sender : TObject); 
Procedure Sai_Cor(Sender : TObject); 
 
 
 
 
 
 
 
 
Este é o nome da procedure. 
Crie uma nova rotina. File – New – Unit. Como padrão o Delphi 
atribui o nome de Unit1, salve o arquivo que conterá todas as suas 
rotinas com o nome de Rotina_Exemplo 
Onde estão as mensagens. 
Resultado da rotina. Quando perder o foco 
será mostrada a caixa de mensagem. 
Digite esta 
linhaDelphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 411 
Implementation 
 
 
Procedure Entra_Cor(Sender : TObject); 
begin 
 With TDBEdit(Sender) do 
 begin 
 Color := clYellow; 
 Font.Color := clRed; 
 end; 
end; 
 
� Abra um formulário, na segunda linha dos Uses digite Minhas_Rotinas, para abrir o arquivo das rotinas. 
� Selecione os objetos (campos) código e Nome apenas: 
Clique no campo Código, no evento OnEnter digite Entra_Cor(Sender); 
Clique no campo Código, no evento OnExit digite Sai_Cor(Sender); 
Clique no campo Nome, no evento OnEnter digite Entra_Cor(Sender); 
Clique no campo Nome, no evento OnExit digit: Sai_Cor(Sender); 
 ���� Como somar, multiplicar e totalizar em um DBGrid ? 
 
 
 
 
 
 
 
 
 
 
 
Quando for clicado no campo Nome do 
Produto a cor da letra e do fundo 
mudarão. Quando for clicado no próxmo 
campo a cor retornará ao normal. 
Procedure Sai_Cor(Sender : TObject); 
begin 
 With TDBEdit(Sender) do 
 begin 
 Color := clBlue; 
 Font.Color := clRed; 
 end; 
end; 
Digite a rotina Sai_Cor abaixo 
da rotina Entra_Cor. 
Digite a rotina Entra_Cor abaixo 
do item Implementation 
Lembre-se: Quando 
os dados estão 
visíveis é porque a 
propriedade do table 
Active está com o 
valor True. 
Note que a coluna Total está vazia. Para 
gerar o total criaremos um campo virtual 
(temporário), ou seja, fará o calculo 
somente quando o programa for 
executado – não é um campo físico da 
tabela. 
Insira um componente DBGrid 
( aba DataControls) , na 
propriedade DataSource 
informe DataSource1. 
Veja adiante as linhas de 
código dos Labels. 
 
� Crie a tabela. Clique em Tools ���� Database 
Desktop ���� File ���� New ���� Table ���� Paradox 7 ���� 
Ok ���� digite os campos como no gráfico ao 
lado, após grave clicando no botão SaveAs, 
nome do arquivo Movtos. 
Insira um DBNavigator (aba 
DataControls), na propriedade 
DataSource informe 
Datasource1. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 412 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Vamos criar um campo temporário para o total, posicione o 
ponteiro do mouse sobre Table1, clique no botão direito do 
mouse, clique em Fields Editor, clique no botão direito, clique 
New Field, digite o novo campo ( Total_Cal ). 
 
Clique em Table1, no DabaseName defina o Alias “Cálculos”, propriedade TableName é Movtos.db. Clique no 
ícone DataSource1, propriedade Dataset defina Table1. Selecione o ícone Table1, no evento OnCalcFields digite 
a seguinte linha: Table1Total_Cal.Value := Table1Qtde.Value * Table1Preco.Value; 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 413 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ���� Data Module ���� O que é ? 
 
Com este recurso podemos concentrar vários componentes, como: Table, Datasource, Query etc em um único 
módulo e apontar o DataModule para os formulários. Se não utilizar DataModule, você sempre terá que 
definir estes componentes em cada formulário utilizado. 
 
� File – New Application � Crie duas tabelas, Fornecedores e Clientes 
 
 
 
 
 
 
 
 
 
 
 
 
 
� File – New Application, será inserido um formulário, insira dois componentes DBGrid, na propriedade 
Name defina o nome para Data_Module_Frm. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Fornecedores 
 
Clientes 
 
 
Este formulário foi 
salvo com o nome 
Modulo_Grid.pas 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 414 
� Vamos criar um módulo de dados. File • New • DataModule. 
 
 
 
 
 
 
 
 
 
 
 
 
� Insira no Data Module dois componentes Table e dois DataSources. 
 
 
 
 
 
 
 
 
 
 
 
 
� Clique no Table1, propriedade Name para Professores_TB, DatabaseName para Madruga ( Alias ), 
TableName para Professores.DB, clique em DataSource1, mude a propriedade Name para 
Professore_DS, e o DataSet para Professores_TB. 
 
� Clique no Form onde estão os dois DBGrids, File, Use unit, abra a unit dos módulos que foi nomeada 
Modulo_Dados, clique no DBGrid dos professores, na propriedade DataSource defina Professores_DS. 
 
	 Clique no DM_Modulo e no evento OnCreate digite: Professores_TB.Open; 
 
 Clique no Table2, propriedade Name para Alunos_TB, DatabaseName para Madruga ( Alias ), 
TableName para Alunos.DB, clique em DataSource1, mude a propriedade Name para Alunos_DS, 
DataSet para Alunos_TB 
 
� Clique no Form onde estão os dois DBGrids, File, clique em Use unit, abra o formulário dos módulos 
que foi nomeado de Modulo_Dados, clique no DBGrid dos professores, na propriedade DataSource 
defina Alunos_DS. 
 
�� Clique no DM_Modulo e no evento OnCreate digite: Alunos_TB.Open; 
 
�� Conteúdo do DataModule, veja abaixo o evento OnCreate: 
 
 
 
 
 
 
 
 
 
 
Mude a propriedade 
Name para DM_Dados 
 
Grave a unit como o 
nome de 
Modulo_Dados.pas 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 415 
�� Abaixo esta o módulo de dados ( DM_Dados ): 
 
 
 
 
 
 
 
 
 
 
 
 
�� DBGrid pronto com as duas tabelas no mesmo formulário. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ���� Como ativar e desativar vários botões do navegador ? 
 
No exemplo a seguir aprenderemos a “ativar” e “desativar” botões das operações básicas para gerenciar os registros de 
uma tabela. 
 
� Abra um novo formulário, insira 10 botões do tipo SpeedButton ( aba Additional ). 
 
 
 
 
 
 
Para alinhar o ícone no topo 
altere a propriedade Layout 
e defina blGlyphTop. 
Cadastro de 
Professores. 
Cadastro de 
Alunos. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 416 
� Crie a tabela de Clientes. 
 
 
 
� Digite o código fonte abaixo em seus respectivos eventos. 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 417 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 418 
 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 419 
 
 
 
 
Procura registro pelo código. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 420 
 
 
 ���� Como animar “titulo” janela corrente ? 
 
 
 
Não permitirá gravar conteúdo 
vazio no campo data estiver. 
 
 
O texto da barra de título 
estará em constante rolagem 
para o lado esquerdo da tela. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 421 
 ���� ActionList ���� Como fazer várias ações ao mesmo tempo ? 
 
Com o componente ActionList várias ações poderão ser feitas ao mesmo tempo. A seguir veremos um 
exemplo simples de navegar nos registro da tabela com operações básicas como : incluir, excluir, consultar e 
navegar nos registros. 
 
� Insira um form, e 8 botões Bitbtn, insira um Table, um DataSource e um ActionList ( aba Standard ). 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
� Clique duplo no componente 
ActionList1, clique na opção New 
Standard Action, será a tela abaixo... 
 
 
� Após clicado na opção 
New Standard Action 
será mostrada a tela ao 
lado ( direito ), clique em 
DataSet e Ok. 
� Clique em Dataset 
selecione as ações, first 
( primeiro), prior ( anterior ) 
etc... como esta no gráfico, 
após clique Ok 
 
Estas ações já estão 
disponíveis no Delphi. 
 
Ações que foram 
selecionadas. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com)422 
 
 
 
 
 
 
 
 
 
Após ter associado todos os botões execute e teste. Quando o ponteiro estiver no início da tabela o botão 
Anterior e Primeiro estarão desabilitados ( desativados ), este controle é feito automaticamente. 
 
 
 
Outro exemplo: Insira dois botões Bitbtn no formulário, um botão “esconde barra” e outro “mostra barra”. 
 
 
 
 
� Clique no primeiro botão, se já escreveu um 
texto para o Caption, tipo “Anterior”, será 
convertido para inglês, clique na propriedade 
Caption e altere novamente para português. 
� Clique na propriedade Action, 
clique no dropdown e escolha a opção 
DataSetPrior ( o botão será para 
posicionar no registro Anterior ). 
Cada botão terá uma ação a 
ele associado. 
� Clique na pastinha amarela para 
criar novas ações, mude o nome do 
Caption e da propriedade Name. 
Clique no componente ActionList1, 
na propriedade State defina 
asSuspendedEnabled. 
� Clique no botão “Esconde barra”, clique na 
propriedade Action, está no lado direito, selecione no 
dropdown a opção Action1_Esconde_Barra, clique 
na aba Events, clique duplo no evento OnClick e 
digite o código que está na página seguinte, clique no 
botão “Mostra barra” e repita os passos aqui 
descritos. 
 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 423 
 
 
 ���� Como fazer uma tabela “passo a passo” ? 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Digite o código abaixo 
 
 
 
 
 
Crie os campos Código, Nome, 
Endereço, Cidade, Salário e Data 
usando o Database Desktop. Insira um 
Form, insira 6 componentes Edit (aba 
Standard), não use o Form Wizard. 
Este exemplo mostra como usar 
Fieldbyname e Value para gravar 
registros. 
Insira um componente Table e um 
Datasource (aba Data Access). Defina 
um Alias. Clique no Table, clique no 
botão direito, Fields Editor, botão 
direito Add Fields e Ok. 
Ao clicar no botão Lê - Value 
será mostrado o registro na 
tela ( memória ), após clique 
nas setinhas para navegar nos 
registros. 
AsString = converte o 
conteúdo para texto e 
mostra no Edit1. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 424 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Pega os valores da tabela e 
mostra na tela ( no Edit1 ). 
Limpa todos os 
campos. 
O conteúdo que está no 
Edit1 será movido para o 
campo Código na tabela 
(Table1). 
Antes de mover o conteúdo do 
Edit1, este precisa ser 
convertido para inteiro, isto 
que o Código é um valor 
inteiro. 
Converte o conteúdo do 
campo Salário para texto, 
para exibi-lo no campo 
Edit5. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 425 
 ���� Recibo ���� Como criar ? 
Criaremos um programa para recibos. Crie a tabela abaixo após defina o Alias de nome Recibo_Dados. 
� Crie a tabela abaixo: 
 
 
� Crie o formulário abaixo com respectivos campos. 
 
 
 
 
 
 
� Digite o código fonte abaixo: 
 
 
Insira um componente 
SpinEdit ( aba Samples ) 
Defina o Alias a propriedade 
TableName ... já vimos anteriormente 
em várias situações como fazer isto. 
Ao clicar será aberta uma 
tela de seleções para 
imprimir o Relatório. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 426 
 
 
 
���� File – New – Other e clique em Report, clique duplo no formulário para configurá-lo, veja o gráfico 
abaixo: 
 
 
 
� Insira 4 QRDBText. Clique em Nr_Recibo, clique na propriedade Name, defina o nome para 
QRDBText_Nr_Recibo, está sendo exibido o nome Nr_Recibo porque o campo foi associado a tabela e este 
nome foi definido na tabela ( nomeação dos campos ). Para associar os campos, clique em QRDBText1, clique 
em DataSet, defina Frm_Recibo_Dados.Recibo_TB, clique em DataField e defina o nome do campo 
Nr_Recibo. 
 
Os passos acima ( item 5 ) deverão ser seguidos para todos os campos deste relatório. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 427 
Formulário do relatório: 
 
 
 
� Crie uma unidade chamada Extensos. File – New – Unit. ( veja rotina adiante ) 
 
� Digite o código fonte abaixo do formulário Recibos. 
 
 
 
 
 
Para os campos valor e 
histórico insira dois 
componentes QRRichText1, 
defina a largura e altura destes 
de acordo com este exemplo. 
Definindo linhas: Clique na banda Page 
Header, clique em Frame, defina o 
valor das propriedade DrawBottom e 
DrawTop para True, defina a largura 
do fio na propriedade Width para 2. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 428 
Resultado do programa: 
 
 
 
Segue abaixo a rotina de extenso usada no exemplo acima ( File – New – Unit e salve o arquivo com o nome 
Extenso ) 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 429 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 430 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 431 
 ���� Como criar Contas a Pagar “ básico “ ? 
 
Criaremos um cadastro para Contas a Pagar e algumas telas de seleção de impressão para os relatórios com 
quebra / agrupamento de data. 
 
� Crie a tabela abaixo com os índices secundários. 
 
 
 
Obs, o índice secundário INr_Cheque_Data_Vencto é composto por dois campos – Nr_Cheque e a 
Data_Vencto 
 
 
 
� Tela Contas a Pagar ( programa básico ). 
 
 
 
� Digite o código fonte abaixo: 
 
 
 
Crie os índices 
secundários. 
Indíce secundário formado por 
dois campos: 
Clique nos campos Nr_Cheque e 
IData_Vencto, defina o nome do 
índice secundário de 
INr_Cheque_Data_Vencto. 
No botão Imprimir, imprimirá 
todos os registros da tabela. Este 
relatório se encontra no final deste 
projeto. 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 432 
 
 
� Crie a tela de critérios de acordo com exemplo abaixo, defina o nome ( Name ) de Opcoes1_Frm . 
 
 
 
 
 
 
Listará registros somente com 
intervalo de código, ou somente 
pelo período. 
Se for clicado na 
opção Por Código. 
Se for clicado na opção 
Por Data de Vencto. 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 433 
 
 
 
 
 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 434 
 
 
 
 
� Crie o formulário abaixo - Rel_Contas_Pagar2. ( File – New – Other – Report ). 
 
 
 
No formulário abaixo aumentei a largura das bandas para melhor identificar seus nomes 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 435 
� Após clique duplo no formulário do relatório será aberta a tela abaixo. 
 
 
 
� Listará os números dos cheques no intervalo de 1 até 200 
 
 
 
 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 436 
	 Listará o período de 10/01/2002 até 10/01/2002 ( ou seja, de um único dia ) 
 
 
 
 
 
 Segundo formulário do relatório: Agora faremos outro formulário que conterá mais combinações de 
filtragem de dados. Com o formulário abaixo poderemos listar pelo intervalo de código e por período. 
 
 
 
 
 
 
Foi selecionada a opção 
Por Data de Vencto, os 
campos Código Inicial e 
Código Final foram 
ocultos. 
Opção 
selecionada, 
Por Data e 
Vencto 
Opção 
selecionada, 
Por Código 
Delphi Aplicado ���� by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 437 
 
 
 
Veja abaixo a distribuição dos campos e os nomes dos objetos:

Continue navegando