Escolar Documentos
Profissional Documentos
Cultura Documentos
Curso de Delphi
Carga horria - 10 horas em 5 aulas
Prof. Francesco Artur Perrotti
1. Introduo
Programar em Windows sempre foi algo extremamente complicado e acessvel
apenas a programadores dispostos a investir muito tempo e fosfato na leitura de
pilhas de livros, interminveis testes e anlise de programas exemplos que mais
confundem do que explicam. Mas porque to difcil fazer programas para
Windows? Para comear, o Windows usa o conceito de GUI (Graphics User
Interface), que embora seja muito familiar para usurios do Unix, novidade para
usurios do DOS. O uso de um sistema GUI implica em aprender vrios conceitos
que so estranhos ao usurio de um sistema baseado em texto como o DOS. Para
complicar um pouco mais, o Windows um sistema multi-tarefa, e as aplicaes so
orientadas a eventos, o que implica em aprender um novo estilo de programao.
Finalmente, o programador tinha que ter alguma familiaridade com as centenas de
funes oferecidas pela API do Windows. Por tudo isso, programao em Windows
um assunto que costuma provocar arrepios nos programadores.
Felizmente as linguagens visuais chegaram para mudar esta situao. Foi s
com elas que o Windows consegui cumprir sua promessa de ser um sistema
amigvel e fcil de usar tambm para os programadores, que sempre tiveram que
pagar a conta da facilidade de uso para o usurio.
Entre as linguagens visuais que surgiram, nenhuma veio to completa e
acabada quanto o Delphi. O Delphi vem com um compilador capaz de gerar cdigo
diretamente executvel pelo Windows, proporcionando uma velocidade de execuo
de 5 a 20 vezes maior que as linguagens interpretadas. Alm disso, vem tambm
com um gerenciador de banco de dados completo e um gerador de relatrios. O
tempo de desenvolvimento de qualquer sistema reduzido a uma frao do tempo
que seria necessrio usando outras linguagens e o resultado sempre muito melhor.
por isso que o Delphi fez tanto sucesso no mundo inteiro.
2. Conceitos bsicos
Programao em Windows: Janelas e eventos
Existem muitas diferenas entre a programao em DOS e a programao em
Windows. Vejamos a principal: Quando programamos em DOS, nosso programa
responsvel pelo fluxo de processamento. Temos que definir claramente no s que
instrues, mas tambm em que ordem devem ser executadas. Em Windows no
bem assim. Nosso programa no controla o fluxo de processamento, ele responde e
trata eventos que ocorrem no sistema. Existem muitos eventos que podem ocorrer,
sendo que os principais so aqueles gerados pelo usurio atravs do mouse e do
teclado. A coisa acontece mais ou menos assim: O usurio clica o mouse e o
Windows verifica que aplicao estava debaixo do mouse no momento em que foi
clicado. Em seguida ele manda uma mensagem para a aplicao informando que
ocorreu um clique e as coordenadas do cursor do mouse na tela no momento do
clique. A aplicao ento responde mensagem executando uma funo de acordo
com a posio do mouse na tela. claro que o Delphi toma conta do servio mais
pesado e facilita muito as coisas para o programador. Detalhes como as coodenadas
da tela em que ocorreu o clique, embora estejam disponveis, dificilmente so
necessrios nos programas.
manipulados pelas funes que esto dentro da estrutura. Desta maneira possvel
formar uma camada protetora nos dados e evitar atribuies desastradas que
comprometeriam o funcionamento do programa. Os defensores mais ortodoxos da
POO dizem que todos os dados de um objeto deveriam ser privados e o nmero de
funes pblicas deve ser o menor possvel, mas isso nem sempre vivel ou
prtico. O Delphi implementa este conceito e oferece dados/funes publicas
(public) e privadas (private). Outra consequncia do encapsulamento que os
objetos podem ser caixas pretas. No necessrio (teoricamente) conhecer
detalhes de funcionamento de um objeto para us-lo, basta enviar as mensagens
apropriadas que ele responde com a ao desejada.
Classes - A classe representa um tipo ou categoria de objetos, o modelo a partir do
qual um objeto pode ser construdo. a estrutura propriamente dita, que define os
dados e mtodos daquela classe de objetos. O objeto em si, uma instncia da
classe. Na programao estruturada podemos fazer uma analogia com os tipos e
variveis, onde a classe equivale ao tipo e o objeto variavel desse tipo.
Herana - a capacidade que uma classe de objetos tem de herdar variveis e
mtodos de outra classe. Esta capacidade permite que o cdigo j escrito seja
reutilizado de maneira muito mais eficiente e simples do que na programao
estruturada. Um programa orientado a objeto costuma implementar verdadeiras
rvores genealgicas de classes, com vrios nveis de herana.
Para programar no nvel do designer (veja adiante o que significa) no
necessrio um conhecimento profundo de POO. Mas preciso conhecer pelo menos
a sintaxe. Todas as aplicaes para Windows, precisam de pelo menos uma janela,
que no Delphi chamada de Form. Cada form (assim como todos os objetos visuais)
tem um objeto associado a ele e sua representao visual, que vemos na tela. Todos
os componentes que inclumos no form, passam a fazer parte do objeto que define o
form. Exemplo: Se colocarmos um boto no form, a classe deste form ser
modificada para incluir este boto. Os eventos e mtodos deste form, tambm esto
na classe. Assim, supondo que o form se chame Form1 (nome default), para por
exemplo desativar o boto que inclumos (de nome Buttom1) escreveramos:
Form1.Buttom1.Enabled := false;
Note como o Buttom1 faz parte da estrutura que define o form. Mas se
quisermos ativar mtodo RePaint (Repintar) do form faramos:
Form1.Repaint;
Veja que Repaint, no uma varivel, tecnicamente uma procedure, mas
fazemos referncia a ela como parte da estrutura Form1. Pode parecer confuso no
incio, mas facilita muito a programao.
3. O ambiente do Delphi
O Delphi oferece dois nveis de programao distintos. Existe o nvel do que o
manual chama de designer, que se utiliza dos recursos de programao visual e
aproveita componentes prontos, e o nvel do component writer, que escreve os
componentes para o designer utilizar nas aplicaes. Podemos dizer que o
component writer programa em um nvel mais baixo e o designer em um nvel mais
alto. Para este curso, consideraremos a programao no nvel do designer.
Quando ativamos o Delphi, a tela inicial parecida com a figura 1. Na janela
superior, temos a barra do men principal do Delphi, esquerda a SpeedBar, com as
opes mais comuns e direita a paleta de componentes. Estes componentes so a
base da programao visual e onde o designer vai buscar recursos para sua
aplicao.
Abaixo da SpeedBar, est a janela do Object Inspector, que permite visualizar
e modificar as propriedades e eventos de todos os componentes. tambm
largamente utilizado pelo designer. Abaixo da paleta ficam a janela de cdigo-fonte
e as janelas que esto sendo construdas.
Primeiro contato
Mens
Como primeiro passo, cuidaremos do sistema de mens. O componente do
men o primeiro na pgina Standard da paleta de componentes. Coloque o men
no form. O cone apareceu mas ainda no h nenhuma barra de men. Para entrar no
editor do men necessrio um duplo clique no cone no form. Note que quando o
editor ativado o Object Inspector passa a mostrar as propriedades e eventos dos
itens de men. Selecione a propriedade Caption e digite Arquivo. O men passa a
mostrar agora uma opo para Arquivo e um retngulo pontilhado ao lado. Clique
no retngulo, selecione a propriedade Caption e digite Cadastros. Repita a operao
e coloque mais um tem para Ajuda.
Neste ponto j temos o que num sistema DOS chamaramos de men
principal. As opes que aparecem horizontalmente na barra de menu, normalmente
ativam sub-mens que oferecem mais opes, e estas eventualmente podem abrir
mais sub-menus, num leque que pode crescer bastante, se necessrio. Para criar um
sub-menu do men principal, basta clicar na opo desejada e utilizar o retngulo
que aparece abaixo da opo. Crie agora os seguintes sub-mens:
Para Arquivo: Sair
Para Cadastro: Clientes, Produtos e Pedidos
Para Ajuda: Sobre o sistema...
Podemos associar letras a opes do men. Nesse caso a letra aparece
sublinhada no men e o men principal ativado quando o usurio tecla ALT +
<letra escolhida>. S preciso tomar cuidado para escolher letras diferentes para
cada opo no mesmo nvel. Exemplo: no primeiro nvel temos as opes Arquivo,
Cadastro e Ajuda. Poderamos escolher a letra A para Arquivo e a letra C para
Cadastro, mas a opo Ajuda no podera estar tambem associada letra A, o mais
aconselhavel seria escolher a letra J. Para selecionar uma letra, basta acrescentar o
smbolo & (e comercial) antes da letra na propriedade Caption.
10
11
Painis
Embora no parea, o painel (Panel) um componente extremamente til e
poderoso. Sua aparncia de uma placa metlica e ele funciona como uma subjanela. Todos os componentes que so colocados sobre um painel, passam a
pertencer ao painel. Se o painel for movido dentro da janela, os componentes
sobre ele se movem junto. Com os painis possivel dividir facilmente a janela em
regies e distribuir melhor os componentes. O Delphi tambm utiliza largamente os
painis de maneira puramente esttica, como moldura de grades e imagens.
Em nossa aplicao usaremos um painel para criar uma barra de botes que
permita entrar mais rapidamente nos cadastros. Primeiro diminua um pouco a altura
da janela. Coloque um painel no form e apague a string que est na propriedade
Caption. Aumente um pouco o tamanho vertical dele e em seguida, ajuste a
propriedade Align para alTop. O painel agora est configurado para ficar sempre no
topo da janela. O tamanho horizontal dele ser sempre igual ao espao interno da
janela, mesmo quando a janela muda de tamanho e o tamanho vertical pode ser
ajustado gosto.
A propriedade Align tem as seguintes opes de alinhamento:
alTop: alinha no topo da janela (ou painel)
alBotton: alinha embaixo (rodap)
alLeft: alinha esquerda
alRight: alinha direita
alClient: Faz o painel ocupar todo o espao disponvel da janela ou
painel
alNone: No faz nenhum alinhamento.
Neste painel colocaremos 4 botes, tres direita e um esquerda, como na
figura 2. Mas desta vez usaremos o boto BitBtn que est na pgina Aditional na
paleta de componentes.
12
BitBtn
A diferena entre o BitBtn e o Button que o primeiro permite incluir um
cone ( chamado de glyph) no boto. Veja como todos os botes que o Delphi usa
para cancelar uma operao tem um X vermelho no boto. Esse X um glyph.
Marque todos os botes e altere as propriedades Heigth para 60, Width para
80 e Layout para blGlyphTop. Agora desmarque os botes porque as prximas
alteraes precisam ser feitas individualmente no botes.
No Caption do primeiro, escreva Clientes, no segundo Produtos e no
terceiro Pedidos. Antes de alterar o Caption do quarto, vamos alterar a propriedade
Kind para bkCancel. Veja que o Caption dele agora Cancel e apareceu o X
vermelho citado antes. Agora sim podemos mudar Caption do quarto boto para
Fechar.
D um clique duplo na prop. Glyph do primeiro boto. Aparece a janela
Picture Editor, clique o boto Load. A seguir selecione o diretrio
C:\Delphi\Images\Buttons. Digite (ou selecione) Picture.Bmp e pressione Ok. Para o
segundo boto, selecione o glyph Gears.Bmp e para o terceiro Npadwrit.Bmp.
13
Antes de passar para o prximo tpico uma boa idia salvar o projeto. Faa
isso antes de continuar.
Usando Templates
O recurso de Template que o Delphi oferece permite economizar muito tempo
de programao e padronizar melhor o sistema. Qualquer janela pode ser salva como
um template e depois reutilizada varias vezes nas construo de novas janelas. Alis
voce pode salvar um projeto inteiro como template e iniciar seus novos projetos a
partir do template salvo.
Para experimentar, vamos criar uma janela de About usando um template
fornecido pelo Delphi. Selecione o boto New Form na barra de ferramentas.
Escolha a opcao About Box na tela de templates e pressione Ok. Uma janela de
About ser criada e j incorporada ao projeto. Modifique o Caption dos Labels que
j esto na janela para por seus dados e do sistema. D um clique duplo no boto Ok
e escreva Close; no editor de cdigo. No Caption do form da janela escreva
Sistema de Pedidos, mude o nome do form. Agora salve os arquivos da janela
pressionando o boto Save File. Coloque About.Pas no nome da unit.
Agora s falta associar a janela opo Ajuda/Sobre o sistema com a janela
que foi criada. Na janela principal clique sobre a opo para criar um evento e abrir
o editor de cdigo. Digite:
fmAbout.Show;
14
15
ento inclumos mais uma relao: o Item de Pedido. Relacionando Pedidos com
Produtos atravs de Itens de Pedido, ficamos apenas com relaes de 1 para M. Um
pedido pode ter muitos itens, mas um item s pode fazer parte de um pedido. Da
mesma maneira, um produto pode fazer parte de muitos itens, mas um item s pode
ter um produto associado.
CodCli
Etc...
CodPed
Data
Endereo
1
Razao Soc
Vendedor
M
Pedidos
Clientes
1
CodCli
CodProd
Descrio
Produtos
CodPed
Item de
Pedido
Num Item
CodProd
Preo Unit
Quantidade
16
seguida digite alPedidos na caixa rotulada com DataBase Alias depois coloque o
caminho completo do diretrio na caixa Path. A seguir pressione o boto OK e
pronto. Nosso alias est criado.
Outro conceito do DataBase o Work Directory (Diretrio de trabalho). Este
o diretrio default para o Desktop. Tudo que feito no Desktop acontece nesse
diretrio. Clique a opo do men File/Working Directory e na caixa Aliases
escolha o alias que acabou de ser criado. Pressione Ok para confirmar.
Para comear a criar os arquivos, selecione a opo File/New/Table. Na
janela Table Type deixe a opo default (Paradox 5.0) e tecle Ok. Neste ponto o
DataBase abre o dilogo de estrutura de arquivo (o Database chama de Table Tabela). como aparece na figura 4.
17
Clientes
Vamos comear criando o arquivo de clientes. Use os valores da tabela
abaixo para definir os campos do arquivo de clientes:
Field Name
CodCli
RzSocial
Endereco
Cidade
Cep
UF
Type
A
A
A
A
A
A
Size
Key
6
*
40
40
30
9
2
Clique no campo CodCli e ative a opo Required Field. Isso far com que a
digitao deste campo seja obrigatria e o BDE se engarregar de tomar os devidos
cuidados sem necessidade de interveno. Isso desejvel j que CodCli a chave
primria da tabela de Clientes.
Ao terminar pressione o boto Save As. O dilogo fechado e aparece a
janela do arquivo criado. Podemos ver os nomes dos campos no topo das colunas,
mas a tabela ainda est vazia. Para acrescentar um registro, pressione o boto Edit
Data, o boto mais a direita na barra de botes. Clique no campo CodCli do
registro 1 e comece a digitao. Para mudar de campo tecle Enter ou Tab. Quando
acabar, desligue o modo de edio pressionando novamente o boto Edit Data.
Produtos
Para criar a tabela de produtos, use os dados abaixo. No esquea de ativar a
opo Required Field no campo CodProd.
Field Name
CodProd
Descricao
PrecoUnit
Type
A
A
$
Size
Key
6
*
30
18
Pedidos
A tabela de pedidos requer alguns cuidados extras, porque depende da tabela
de clientes. Todo pedido deve pentencer a um cliente. Depois de criar os campos
para esta tabela, selecione na caixa Table Properties a opo Referential Integrity e
a seguir pressione Define. Agora voce deve relacionar um campo com uma tabela,
no caso, o campo CodCli com a tabela de Clientes. Para isso d um clique duplo em
CodCli na lista esquerda e outro na tabela de clientes que aparece na lista direita.
Pressione Ok e digite irClientes como nome para a relao. Esta operao torna a
tabela de Pedidos oficialmente dependente da tabela de Clientes no ponto de vista
gerenciador de banco de dados - BDE e ns podemos deixar esse controle por conta
do BDE.
Field Name
CodPed
CodCli
DtEmissao
Vendedor
Type
A
A
D
A
Size
Key
6
*
6
12
Itens de Pedidos
Esta a tabela mais dependente do sistema. Depende de pedidos e de
produtos, ento devem ser criadas duas Referential integrity: uma relacionando o
campo CodPed com a tabela de pedidos, e outra relacionando o campo CodProd
com a tabela de Produtos. Note tambm que esta tabela tem chave dupla: os dois
primeiros campos compe a chave primria, ou seja, para identificar um nico
registro preciso saber os dois campos.
Field Name
CodPed
NumItem
CodProd
Quantidade
Type
A
S
A
N
Size
6
Key
*
*
Lembrete
No esquea de definir pelo menos um registro em cada tabela. Esse registro
ser til mais adiante quando criarmos as janelas de cadastro. Quando definir os
campos que so chave numa tabela, deixe sempre ligada a opo Required Field.
19
20
21
22
DBLookUpCombo e DBLookUpList
23
dtsPedidos
CodCli
dtsClientes
CodCli
RzSoc
DBNavigator
Permite navegar pelos registros de um arquivo. Para testar o uso deste
componente, vamos incluir um navegador para os Itens de pedido na janela de
pedidos. Antes temos que abrir espao para ele. Clique o painel que est debaixo da
grade de Itens, use a borda do painel para seleciona-lo. Mude a propriedade Align
para alNone e afaste-o um pouco. Coloque mais um painel no form, com altura
suficiente para caber um Navigator. Neste novo painel, mude a propriedade Align
para alTop. Em seguida clique o painel sob a grade e deixe a propriedade Align em
alClient. Agora temos aonde colocar o DBNavigator. Coloque um no novo painel
como mostra a figura 5. Para conecta-lo com o arquivo de Itens, bastar setar sua
propriedade DataSource em dtsItens.
24
25
MasterField:
Clique o botozinho que aparece nesta
propriedade para ativar Field Link Editor. Na caixa Available Indexes
selecione CodCli. Clique em CodCli nas listas Detail Fields e Master
Fields. Pressione o boto Add e em seguida o boto OK.
DataSource
Name:
Dataset:
dstPedidos
tblClientes
26
7. O QuickReport
O Delphi 1.0 vem com um gerador de relatrios chamado Report Smith. um
gerador muito poderoso mas tem alguns problemas. Primeiro, no possvel gerar
relatrios dentro do ambiente do Delphi, preciso ativar o Report Smith, criar o
relatrio, salva-lo e depois inclui-lo no projeto. Alm disso, no momento que o
usurio vai imprimir o relatrio, o Report Smith precisa ser carregado, o que implica
em instalar o Report Smith no computador do cliente. Em segundo lugar, um
sistema lento e pesado, se o cliente no tem um computador extremamente rpido a
carga do Report Smith pode ser bastante demorada.
O QuickReport um gerador de relatrios para o Delphi desenvolvido pela
QSD - Quick Software Development. Vem na forma de componentes que podem ser
instalados na paleta de componentes. Isso permite que o relatrio seja criado atravs
de forms e componentes, sem sair do Delphi. um software bastante poderoso e
resolve a maior parte das necessidades de relatrios, alm disso bastante fcil de
usar e no exige que seja feita nenhuma instalao adicional no computador do
cliente. Fez tanto sucesso entre os usurios do Delphi que a Borland resolveu inclulo no pacote do Delphi 2.0. Se voce tem a verso 1.0 do Delphi, ento preciso
instalar o pacote. A verso shareware do QuickReport pode ser obtida gratuitamente
na Internet acessando a pgina da QSD ou alguma pgina especializada em
componentes para Delphi (existem muitas, veja na Bibliografia), mas voce est
recebendo a ltima verso (1.0d) no disquete do curso.
Instalao
Para instalar o QuickReport, siga os seguintes passos:
1. Dentro do diretrio do Delphi, crie um subdiretorio chamado Qrep, nele
descompacte o arquivo QRep10d.Zip (use o pkunzip v2.0 ou maior).
2. Ative o Delphi. Se houver um projeto aberto, feche-o com a opo
File/Close Project do men.
3. Selecione a opo Options/Install Components no men.
4. No dilogo que apareceu, clique o boto Add.
5. No dilogo Add Module clique o boto Browse e navegue at o diretrio
Qrep que acabamos de criar. Selecione arquivos do tipo *.DCU e clique no
arquivo QuickRep.Dcu. Em seguida pressione o boto Ok.
6. De volta ao dilogo Install Components, clique Ok. O Delphi vai agora
recompilar sua biblioteca de componentes e instalar o QuickReport na paleta.
7. Se a pgina Quick Report no apareceu na tela, clique na seta direita da
paleta para ver as paginas que no cabem na tela.
27
Criando relatrios
Agora que voce tem o QuickReport instalado, vamos utiliza-lo para criar
uma listagem simples de clientes.
1. Abra o projeto do Sistema de Pedidos.
2. Clique o boto New Form na barra de ferramentas e selecione um form em
branco.
3. Pegue o componente QuickReport (o primeiro) e coloque-o no form. Note
que o form ganha barras de rolagem.
4. Coloque um componente QRBand (o segundo) no form. A faixa branca
que aparece o que o QuickReport chama de Banda (Band). Mude a
propriedade Name para bnTitulo.
5. Coloque um componente QRSysData e ponha na banda. Altere as
seguintes propriedades:
Alignment:
taCenter
AlignToBand:
True
Data
qrsReportTitle
6. Ponha no form uma Table e um DataSource para o arquivo de clientes e
ajuste as propriedades:
Table
DatabaseName:
alPedidos
TableName:
CLIENTES.DB
Name:
tblClientes
DataSource
DataSet:
tblClientes
Name:
dtsClientes
7. Clique o cone do QuickReport e altere a propriedade DataSource para
dtsClientes e a propriedade ReportTitle para Listagem de Clientes.
8. Coloque mais uma banda no form e mude seu nome para bnTitCol. Altere
a propriedade BandType para rbColumnHeader.
9. Na nova banda, ponha 4 componentes QRLabel alinhados lado a lado e
mude a propriedade Caption para Cdigo, Razo Social, Cidade e UF
respectivamente. Deixe entre eles espao suficiente para caber os valores dos
campos.
10. Coloque outra banda no form e mude seu nome para bnDetalhe. Altere a
propriedade BandType para rbDetail.
28
8. Blibliografia
29
Livros
Manuais do Delphi 1.0
Delphi Segredos e Solues
Gary Cornnel / Troy Strain
Editora Makron Books
Teach Yourself Database Programming With Delphi in 21 Days.
Nathan and Ori Gurewich
Borland Press
Internet
Quick Soft Development AS (Quick Report)
http://www.qsd.no
Borland Delphi
http://www.borland.com/Product/Lang/Delphi/Delphi.html
Borland Delphi Components Page
http://www.neosoft.com/~startech/delphi
Delphi Super Page
http://sunsite.icm.edu.pl/~robert/delphi
The Delphi Station
http://www.teleport.com/~cwhite/delphi.shtml
The Delphi Hackers' Corner
http://www.it.kth.se/~ao/DHC
Delphi Components
http://www.ucinet.com/~softec/comp1.html
Delphi Freeware Components
http://www.vyatka.su/Peoples/ws/html/delfc.htm
Arquivos no Disquete
30
lado a lado e mude a propriedade Caption para Cdigo, Razo Social, Cidade
e UF respectivamente. Deixe entre eles espao suficiente para caber os
valores dos campos.
2. Etapas iniciais
Agora voc est pronto para comear: Ative o Delphi e
Voc pode usar o form em branco que o Delphi apresenta quando
ativado. Comece pelo men. Selecione o primeiro componente na
seo Standard da paleta de componentes e em seguida clique na rea
til do form.
No form, aparece o cone do men. Use um clique duplo para ativar a
janela de edio do men e coloque as opes desejadas. Depois feche
a janela de edio.
31
32
Aula 3
Aplicao prtica - Editor de arquivos texto (NotePad)
Uso do Clipboard
Tratamento de erros - Excees
Economizando recursos - Criao dinmica de forms