Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduo
No incio, programar em Windows era algo extremamente complicado e
acessvel apenas a programadores dispostos a investir muito tempo e fosfatos
na leitura de pilhas de livros, interminveis testes e anlise de programas
exemplos que mais confundem do que explicam. Mas porque era to difcil
fazer programas para Windows? Para comear, o Windows usa o conceito de
GUI (Graphic User Interface Interface Grfica com o Usurio), que embora
fosse muito familiar para usurios do Unix e do Mac OS, era novidade para
usurios do DOS. O uso de um sistema GUI implicava em aprender vrios
conceitos que eram estranhos ao usurio de um sistema baseado em texto
como o DOS. Para complicar um pouco mais, o Windows um sistema multitarefa, 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 era 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 bem
acabada quanto o Delphi. Desde o incio ele possua 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
como o Visual Basic e Visual FoxPro que geravam executveis Pcode que
precisam de arquivos auxiliares de run-time. Alm disso, o Delphi tambm
possua uma engine para acesso a diversos bancos de dados e um gerador de
relatrios. O tempo de desenvolvimento de qualquer sistema foi reduzido a
uma frao do tempo que seria necessrio usando outras linguagens e o
resultado sempre muito melhor. por isso que o Delphi fez e faz tanto
sucesso no mundo inteiro, sempre ganhando prmios como melhor ferramenta
de desenvolvimento para Windows.
O objetivo principal de qualquer ferramenta de desenvolvimento ou linguagem
de programao a criao de aplicaes. Determinadas linguagens ou
ferramentas devido aos recursos que possuem so mais indicadas para a
criao de aplicaes comerciais, outras se destinam mais a aplicaes
cientficas ou ainda para a criao de sistemas operacionais.
O Delphi uma ferramenta RAD (Rapid Application Development
Desenvolvimento Rpido de Aplicaes) criada pela Borland. uma ferramenta
de propsito geral, permitindo o desenvolvimento de aplicaes tanto
cientficas como comerciais com a mesma facilidade e alto desempenho.
Integra-se facilmente com a API (Application Program Interface) do Windows,
permitindo a criao de programas que explorem ao mximo os seus recursos,
assim como os programas escritos em linguagem C/C++.
CAPTULO 1
Princpios da Programao para Windows
Antes de comear a trabalhar com o Delphi, importante ter algumas noes
do que est envolvido na programao Windows e no Delphi em particular.
Algumas coisas tornam a tarefa de programao no Windows (e ambientes
baseados em eventos e interface grfica) bem diferente de outros ambientes e
das tcnicas de programao estruturada normalmente ensinadas nos cursos
de lgica de programao:
Independncia do Hardware: No Windows, o acesso aos dispositivos de
hardware feito com intermdio de drivers fornecidos pelo fabricante do
hardware, o que evita que o programador tenha que se preocupar com
detalhes especficos do hardware. Como acontecia com a programao em
DOS.
Configurao Padro: O Windows armazena centralmente as configuraes
de formato de nmeros, moeda, datas e horas, alm da configurao de cores,
livrando o programador de se preocupar com esses detalhes especficos.
Multitarefa: Antigamente, no DOS (no estamos falando do Prompt do MSDOS), um programa geralmente tomava o controle da mquina s para si, e
outros programas no rodavam at que o mesmo fosse fechado. J no
Windows vrios programas so executados de maneira simultnea e no h
como evitar isso.
Controle da Tela: No DOS geralmente um programa ocupa todo o espao da
tela, e o usurio via e interagia apenas com aquele programa. J no Windows,
todas informaes mostradas e todas entradas recebidas do usurio so feitas
por meio de uma janela, uma rea separada da tela que pode ser sobreposta
por outras janelas do mesmo ou de outros programas.
Padres de Interface: No Windows, todos os elementos de interface
aparecem para o usurio e interagem da mesma forma. Alm disso, existem
padres definidos pela Microsoft que so recomendados para conseguir a
consistncia entre aplicativos. Falaremos de alguns deles no curso, mas a
melhor forma de aprend-los analisar os aplicativos Windows mais usados do
mercado.
Eventos e a Cooperao com o Sistema: Num programa criado para DOS
(como os programas escritos em Clipper) ele responsvel pelo fluxo de
processamento, temos que definir claramente no s que instrues, mas
tambm em que ordem devem ser executadas, ou seja a execuo segue uma
ordem preestabelecida pelo programador, e o programa s chama o sistema
operacional quando precisa de alguma coisa dele. Em Windows no bem
Conhecendo o Delphi 6
O Delphi oferece dois nveis de programao distintos. Existe o nvel que o
manual chama de designer, que utiliza os recursos de programao visual e
aproveita os componentes prontos, e o nvel do component writer, onde
escrevemos 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 apenas a
programao no nvel do designer.
Inicie o Delphi clicando no cone Delphi 6 que se encontra no menu Iniciar /
Programas / Borland Delphi 6.
Quando ativamos o Delphi, a tela inicial parecida com a acima. Os itens que
voc est vendo formam o que chamamos de IDE, com um projeto novo
aberto. Na janela superior, temos a barra do menu principal do Delphi,
esquerda a SpeedBar, com as opes mais comuns e direita a paleta de
componentes. Estes componentes formam a base da programao visual e
onde o designer vai buscar recursos para criar sua aplicao.
A seguir, vamos analisar as ferramentas que compe o ambiente de
desenvolvimento e os arquivos que constituem um projeto.
Janela Principal
SpeedBar
New. Abre uma caixa de dilogo que permite selecionar o tipo de objeto
a ser criado (novo aplicativo, formulrio, DLL, relatrios, entre outros).
Equivalente ao menu File | New | Other.
View Unit. Permite escolher uma Unit do projeto para ser exibida.
Equivalente ao menu View | Units ou as teclas Ctrl+F12.
10
11
12
Win 3.1: esta guia contm controles considerados obsoletos, que esto
disponveis apenas para compatibilidade com programas antigos. No crie
programas novos que utilizem esses controles.
13
Indy Misc: componentes complementares aos das guias Indy Clients e Indy
Servers, para criao de aplicativos clientes e servidores com acesso a
internet, como clientes de ftp, irc e browsers.
14
Cada aplicativo criado em Delphi chamado de projeto e pode ser formado por
um ou mais formulrios (Janelas), ou ainda em casos especiais no possurem
janela alguma (Console Application).
sobre estes formulrios que sero colocados os componentes para a criao
da interface do aplicativo.
Todo formulrio possui um arquivo de programa-fonte correspondente,
chamado Unit, que pode ser visualizado no editor de cdigo (Code Editor). A
janela do editor de cdigo pode ser acessada clicando-se no boto Toggle
Form/Unit da SpeedBar caso o Formulrio esteja selecionado; voc tambm
pode clicar na borda que aparece logo abaixo do formulrio, ou ainda
pressionando-se a tecla F12 que permite alternar entre o editor de cdigo e o
formulrio.
15
Object TreeView
16
Objeto
atualmente
selecionado.
17
18
Project1
(arquivo de projeto)
extenso .DPR
(Delphi PRoject)
Form1
Form2
Unit3
extenso .DFM
(Delphi ForM
extenso .DFM
extenso .PAS
Unit1
Unit2
extenso .PAS
(PAScal)
extenso .PAS
19
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
A clusula Uses dentro da seo interface indica quais units devero ser
ligadas para poder complementar a nossa . Ao criar um Form as Units
definidas no cdigo acima so inseridas automaticamente, pois
fornecem o suporte para criao do mesmo. Ao inserir componentes
num Form, outras Units podem ser adicionadas a esta lista.
20
O smbolo {$R *.dfm} faz a associao da unit com seu respectivo form
e no deve ser modificado. Uma unit de funes no possui esta
diretiva.
Ao Final da Unit, temos uma linha com end. Ele o marcador de final de
arquivo. Qualquer coisa colocada aps esta linha ser ignorada.
21
Se voc acompanhou tudo at aqui, seu Form deve estar semelhante a figura a
seguir:
Agora vamos aprender a salvar nosso projeto. Para isso v ao menu File e
escolha a opo Save All, ou ainda clique no boto Save All do SpeedBar.
Voc tambm pode utilizar o atalho de teclado Shift + Ctrl +S.
Ser apresentada uma caixa de dilogo com o ttulo Save Unit1 As, o Unit
do ttulo indica que estamos salvando o Form (a Unit do mesmo). Observe no
item Salvar em qual o local onde ser salvo o projeto e modifique se necessrio
ou ento crie uma pasta para o mesmo. Em Nome do arquivo digite
Principal.pas e pressione Enter (ou clique no boto Salvar).
Uma nova caixa de dilogo ser apresentada, desta vez com o ttulo Save
Project1 As. No item Nome do arquivo digite AloMundo.dpr.
Com estes procedimentos acabamos de salvar nosso projeto e o formulrio do
mesmo. Se voc observar o diretrio em que os salvou, notar a existncia dos
seguintes arquivos:
22
23
Exerccios
1) O que Delphi?
2) O que IDE? Quais os itens que a compe?
3) Para que serve o Object Inspector?
4) Quais so os principais arquivos de um projeto?
5) O que um evento?
24
Captulo 2
Programao Orientada a Objeto (POO)
Embora no seja objetivo deste curso ensinar POO, uma breve introduo
necessria, j que o Delphi essencialmente orientado a objeto.
De maneira prtica, podemos pensar no objeto sendo uma estrutura que
agrupa dados e funes para manipular estes dados. Como as funes so
sempre intimamente ligadas aos dados, o sistema todo funciona de maneira
mais segura e confivel. Alm disso, a POO utiliza conceitos como
encapsulamento e herana que facilitam muito a programao e manuteno
dos programas.
Os dados de um objeto costumam ser chamados de variveis de instncia e as
funes de mtodos. As variveis de instncia definem as propriedades
(tambm chamadas de atributos) do objeto e os mtodos definem o seu
comportamento.
25
Propriedades Bsicas
Name: comum a todos os componentes da paleta. O Delphi nomeia
automaticamente todos os componentes que so includos no form (inclusive o
proprio form). Usa o nome da classe do componente mais um nmero
sequencial. O nome atribudo pelo Delphi pode ser mantido, mas
aconselhvel renomear os componentes que sero referidos no programa. No
nosso primeiro exemplo, o programa AloMundo, o Form e o Label que
inserimos tinham os nomes de Form1 e Label1, mas ns os alteramos para
FormPrincipal e LabelMensagem. Como no fizemos nenhuma programao
isso seria at desnecessrio, mas voc deve criar o hbito de renomear todos
os componentes que utiliza, caso seja feita referncia a eles no cdigo fonte,
muito mais claro imaginar que um boto chamado ButtonFechar seja para
fechar seu form do que se o nome fosse Button1 ou Button13. Quando voc
renomeia um componente, o Delphi atualiza automaticamente todo o cdigo
gerado por ele, o que inclui o cabealho da Unit, os eventos do componente e
as propriedades de outros componentes que fazem referncia ao componente
renomeado, mas no atualiza o cdigo gerado por voc. Exemplo: se
26
Eventos bsicos
OnClick: gerado cada vez que o boto esquerdo do mouse pressionado e
solto. O evento s ocorre quando o usurio libera o boto. O Delphi j direciona
o evento para o componente que est debaixo do cursor do mouse.
OnDblClick: Gerado quando feito um duplo clique no boto esquerdo.
27
Mtodos Bsicos
Show: Desenha o componente. Se for uma janela (form) ela desenhada e
ativada.
Close: Fechar. Aplicado geralmente em forms e componentes de acesso a
dados. Quando utilizado no form principal, encerra a aplicao.
Repaint: Repintar. Redesenha o componente ou form.
Refresh: Tem o mesmo efeito que o Repaint, mas antes de desenhar, apaga o
componente. Quando aplicado em componentes de acesso a dados, faz com
que o buffer do arquivo seja recarregado.
Create: Aloca memria para criar um componente ou form, dinmicamente.
Free: Libera a memria alocada com o Create.
28
Agora, precisamos decidir qual ser nosso banco de dados e qual a engine que
utilizaremos: BDE, dbGO (ADO), IBX (Interbase Express) ou dbExpress.
Optamos por utilizar o BDE pois o mesmo se encontra disponvel em todas as
verses do Delphi. Utilizaremos uma base de dados Desktop, o Paradox, que
para nossos propsitos ser mais que suficiente.
Antes de criarmos nossa base de dados, interessante observar s mais um
detalhe. O Paradox uma base de dados onde cada tabela armazenada em
um arquivo externo separado. Cada um destes arquivos de dados pode ter
associado a ele vrios outros arquivos (necessrios para a criao de ndices,
verificao de referncias, validao e etc). Portanto o nmero total de arquivos
29
30
H vrios anos atrs, a Borland vendia um Paradox engine para programadores. Era
composto pela parte de acesso do DBMS Paradox e foi desenvolvido para ser usado
em programas que precisavam ler e gravar informaes em tabelas Paradox (.DB). O
BDE substituiu este engine, mas adicionou funcionalidade para conexo com outros
tipos de bancos de dados. O BDE tambm est disponvel separadamente do Delphi,
caso voc precise de uma performance slida em um ambiente de desenvolvimento
que no seja da Borland.
Ter todas as aes mais comuns de banco de dados dentro de um pedao de software
produz muitos efeitos positivos. Um nico conjunto de drivers permite a melhoria de
um driver em particular sem ter que reivindicar a roda cada vez que um novo pacote
tem acesso a um banco de dados. Isto significada que o acesso banco de dados
pode ser atualizado sem ter que atualizar um pacote de software inteiro. Se voc
instalar uma nova verso do BDE em um sistema com uma verso antiga do Paradox
pode imediatamente beneficiar-se dos novos drivers.
O conceito de driver unificado tambm salva voc do armazenamento permanente que
desaparece quando voc tem muito cdigo redundante. Um sistema com Paradox,
Delphi e BDE requer muito menos espao em disco porque o Paradox e o Delphi no
necessitam ter seus prprios engines de acesso banco de dados. Hoje em dia onde
cada nova gerao de programas requerem mais espao em disco rgido, cada bit
economizado ajuda.
Por ltimo e, contudo mais importante, usar um mtodo de acesso banco de dados
comum garante que o cdigo para acessar um tipo particular de banco de dados seja
escrito apenas uma vez.
Este captulo se concentrar em lhe dar uma introduo aos recursos e capacidades
do BDE.
31
Pgina Database
Na pgina Database do BDE Administrator esto os aliases para os bancos de dados
disponveis. Os bancos do dados so exibidos em uma rvore hierrquica parecida
com o Windows Explorer. Para visualizar seus aliases de bancos de dados,
simplesmente d um clique sobre o smbolo de mais prximo ao banco de dados. Uma
vez exibido, a definio de cada alias pode ser facilmente visualizada ou modificada
selecionando o alias para exibi-lo no painel a direita do BDE Administrator.
32
Agora que voc entendeu que um banco de dados composto por um conjunto de
tabelas relacionadas, ns precisamos observar como implementar esse conjunto.
Servidores de banco de dados como Interbase, SyBase e Oracle tm uma estrutura de
banco de dados que pode ser composta por mltiplas tabelas. Desenvolvedores de
banco de dados muitas vezes precisam utilizar esse tipo de estrutura, mas em
ambientes sem servidores geralmente falta um mecanismo para linkar mltiplas
tabelas. Voc pode criar seu prprio formato de banco de dados para conter todas as
suas tabelas, mas depois voc perder a compatibilidade com outros programas que
utilizam banco de dados mais antigos.
O BDE possui uma soluo avanada para esse problema. Colocado um grupo de
tabelas relacionadas em uma mesma pasta, voc pode associar essas tabelas juntas
usando o BDE. Basta dar um alias, ou nome ao banco de dados, para que o grupo de
arquivos em uma pasta particular se torne um conjunto de tabelas logicamente
ligadas. O BDE chama um conjunto como este de Pseudo Database. Um PseudoDatabase no possui caractersticas avanadas como encontramos em um Database
Server, como preservar integridade referencial. De qualquer modo ele permite a voc
utilizar o nome do banco de dados como ponteiro para o local de seus dados.
Vamos criar um novo alias, para nosso projeto. Comece selecionando Object | New
no menu principal.
Voc ser questionado a selecionar um tipo de driver na caixa de dilogo New
Database Alias.
33
Voc precisa tambm definir a localizao das tabelas no campo PATH. Defina
o caminho utilizado na criao da pasta do projeto: C:\Pedidos\Dados.
Certifique-se de gravar a configurao, clicando no boto Apply ou indo ao
menu Object | Apply. Tambm possvel utilizar o atalho de teclado Ctrl+A.
Agora quando voc precisar pegar dados em uma tabela, voc pode usar o
alias ao invs do nome diretrio.
At agora, parece que ns simplesmente mudamos um nome - o diretrio, para
outro - o alias. Isto nos salva de problemas quando chegar a hora de
mudarmos a localizao do banco de dados. Ns podemos coloc-lo em um
servidor de arquivos de rede, movendo-o para um disco rgido maior, ou at
mesmo fazer a mudana para um sistema de banco de dados cliente-servidor.
Voc no ter que mudar ou recompilar seus programas aps as tabelas terem
sido removidas. Voc precisar criar um novo ponteiro para o alias no BDE.
A meta dos aliases do BDE criar um ponteiro para um ponteiro. Qualquer
rotina de acesso banco de dados do Delphi far referncia ao alias de banco
de dados, o qual faz referncia s tabelas. Agora, mudando o alias, voc tem
uma maneira rpida de achar seus dados quando eles forem movidos de um
lugar para outro.
Voc dever, sempre que criar uma nova tabela de banco de dados ou acessar
uma antiga, tentar referenciar-se a ela pelo alias ao invs do path.
34
Selecione o menu File| New | Table, ser exibida a caixa de dilogo Create
Table. Na caixa de combinao Table type est uma lista com os tipos de
arquivos disponveis. O tipo padro, Paradox 7 vem selecionado.
Como utilizaremos este tipo mesmo, simplesmente clique no boto OK. Ser
exibida a caixa de dilogo Create Paradox 7 Table.
Chave primria o nome do ndice que ser utilizado para identificar exclusivamente um registro de
uma tabela em nosso banco de dados, bem como classific-la inicialmente.
35
O nome no pode iniciar com espaos em branco, mas pode conter espaos
(exceto no final). No entanto, no uma prtica muito interessante, pois isto
limitaria a maneira de se acessar a informao mais diretamente, pois o nome
do campo no seria um identificador vlido em Object Pascal, assim, uma
boa prtica no utilizar espaos no nome dos campos.
Caracteres especiais no devem ser utilizados como parte do nome, apenas
letras, nmeros e o caractere de sublinhado. Portanto no acentue as palavras.
(Use Codigo e no Cdigo).
Evite utilizar palavras reservadas
SELECT ou COUNT para dar
problemas caso voc deseje no
servidor. Procure atribuir nomes
campo e sua finalidade.
Segue abaixo, uma tabela com a relao dos tipos e tamanhos dos campos em
Paradox:
Smbolo
Tamanho
1-255
Automtico
Automtico
Automtico
Automtico
0 32
Tipo
Alpha - Pode conter strings (texto) formadas por letras,
nmeros e smbolos especiais ($, %, #, *, =) o campo
que voc utilizar para armazenar Nome, Endereo,
Telefone, CEP, etc.
Number - Pode conter apenas nmeros, valores positivos
ou negativos. Os valores aceitos esto na faixa de -10307 a
10308 com uma preciso de at 15 dgitos.
Money - Campo numrico, pode conter apenas nmeros,
valores positivos ou negativos. formatado para exibir
smbolo monetrio e separar as casas decimais.
Short - Pode conter apenas nmeros no intervalo de 32.767 a 32.767
Long Integer - Campo de 32 bits, pode conter apenas
nmeros no intervalo de -2147483648 to 2147483647.
Requer espao para armazenamento maior do que o
campo Short.
BCD - Armazena nmeros no formato BCD (Binary Coded
Decimal). So utilizados para executar clculos de alta
preciso, porm a velocidade dos clculos lenta, se
36
Smbolo
Tamanho
Tipo
comparada com os outros tipos numricos. Usado para
compatibilidade com outros aplicativos que utilizem este
tipo de campo. (O tamanho representa o nmero de
dgitos aps o ponto decimal)
Date - Armazena qualquer data no intervalo de 1 de
Automtico janeiro de 9999 AC at 1 de janeiro de 9999 DC.
Automtico
Automtico
1 240
0 240
0 - 240
Automtico
Automtico
37
Smbolo
Tamanho
0 - 240
1 - 255
Tipo
Normalmente usado para criar um campo de numerao
automtica como um cdigo de cliente, por exemplo. A
excluso de registros no faz com que esta numerao
recomece ou retroceda. E um nmero excludo jamais
ser inserido novamente, o valor ser sempre crescente.
Binary - Utilizado para armazenar informaes que no
devem ser interpretadas, devem ser armazenadas em
modo binrio. A utilizao mais comum o
armazenamento de som. Assim como campos Graphic,
seu tamanho no precisa ser obrigatoriamente ser
definido, pois a informao ser armazenada em um
arquivo .MB.
Bytes - Armazena informaes que no devem ser
interpretadas, devem ser armazenadas em modo binrio.
A utilizao mais comum o armazenamento de cdigos
de barra e magnetic strips de cartes. Diferente dos
campos Binary, a informao armazenada na tabela
Paradox para um acesso mais rpido. (Tamanho mximo
de 255 bytes)
Tipo
+
A
A
A
A
A
A
A
A
A
A
A
A
A
A
F
D
Tamanho Chave
Sim
35
20
1
14
15
35
20
30
2
8
15
15
30
50
38
N
Nome do Campo
18 Ativo
ndices Secundrios:
N
Nome
1 IRazaoSocial
2 ICidadeUF
Tipo
Tamanho Chave
L
Tipo
I
A
$
A
Tamanho Chave
Sim
35
5
Nome do Campo
NumeroPedido
Cliente
DataPedido
FormaPgto
ndices Secundrios:
N Nome
1 ICliente
2 IDataPedido
Tipo
+
I
D
A
Tamanho Chave
Sim
30
Expresso de classificao
Cliente e NumeroPedido
DataPedido
Nome do Campo
NumeroPedido
CodigoProduto
Quantidade
ValorUnitario
Tipo
I
I
N
$
Tamanho Chave
Sim
Sim
39
Vamos iniciar criando passo a passo a primeira tabela, Clientes. Digite em Field
Name o nome do primeiro campo, CODIGO, na coluna Type digite +, para criar
um campo autoincrement e na coluna Key d um duplo clique ou pressione
uma tecla para marcar este campo como sendo campo chave. Proceda da
mesma forma para os campos seguintes (observe que na definio da tabela
apenas o primeiro campo campo chave, ento no marque os demais).
Aps digitar os campos sua tela deve ficar semelhante a esta:
40
41
Clique no boto Save As para salvar nossa tabela. Na caixa de dilogo Save
Table As selecione no combo Alias o alias que criamos para nosso banco de
dados (Pedidos). Note que ao selecionar o alias, a combo Salvar indica a
Pasta Dados, para onde ns definimos o path do mesmo.
Em nome do arquivo, digite o nome que ser dado a tabela, neste caso
Clientes.db (ou apenas Clientes, pois a extenso ser adicionada
automaticamente de acordo com o tipo de arquivo sendo criado).
Bem, com isso criamos nossa primeira tabela. Utilize o mesmo procedimento
para a criao das outras trs, observando para selecionar os campos
marcados como chave.
Antes de voc criar as tabelas restantes, vamos a uma dica: Para que voc no
precise selecionar o alias toda vez que for gravar uma nova tabela que criar ou
ao abri-la para modificao, podemos informar ao Database Desktop que
estaremos trabalhando com um alias em particular, tornando-o o alias padro.
Para isso v ao menu File | Working directory e selecione o alias Pedidos
clicando em seguida no boto OK.
42
Est feito, d prxima vez que for salvar a tabela, o nosso alias j estar
selecionado.
Crie as tabelas restantes, pois necessitaremos delas nas prximas aulas, onde
estaremos iniciando a criao do nosso aplicativo.
Exerccios
1)
2)
3)
4)
5)
43
Captulo 3
Criando nosso Formulrio Principal
A partir de agora, passaremos a desenvolver uma aplicao que vai usar os
recursos bsicos para a maioria das aplicaes. Conforme vamos
incrementando a aplicao, veremos os principais conceitos da programao
em Delphi. Como definimos anteriormente, nossa aplicao ser um mini
sistema de pedidos. O sistema manter cadastros de clientes e produtos e ser
capaz de gerar e armazenar os pedidos dos clientes.
Criando o Menu
Como primeiro passo, cuidaremos do sistema de menus. O componente do
menu o segundo na pgina Standard da paleta de componentes (o primeiro,
Frames, na verdade no um componente, apenas permite inserir um frame
dentro do form). Coloque o menu no form. O cone aparece mas ainda no h
nenhuma barra de menu. Para entrar no Menu Editor (editor de menu)
necessrio um duplo clique no cone do componente que foi colocado form.
Note que quando o editor ativado o Object Inspector passa a mostrar as
propriedades e eventos dos itens de menu.
Selecione a propriedade Caption e digite &Arquivo. O menu passa a mostrar
agora uma opo para Arquivo e um retngulo pontilhado ao lado. Note que o
& utilizado antes da palavra Arquivo serviu para identificar que a letra A ser
um atalho para esta opo de menu, que poder ser acessada no sistema
atravs das teclas Alt+A.
44
Cadastros
Clientes
Cadastro
Listagem
Produtos
Cadastro
Listagem
Pedidos
Cadastro
Impresso
Listagem
Ajuda
Sobre o sistema...
45
a leitura do cdigo fonte. Para fixar melhor este hbito, renomeie tambm as
opes de Listagem.
Agora j podemos fechar o editor de menus, clicando no boto fechar na
barra de ttulo da janela.
Falta agora criar o cdigo para cada opo do menu. A maioria das opes
deixaremos para codificar mais adiante, de imediato vamos apenas codificar a
opo de sada do sistema. J com o editor de menus fechado, selecione a
opo Arquivo/Sair no prprio form da aplicao. O editor de cdigo ser
ativado. Na rea onde o cursor aparece piscando escreva Close; Este mtodo
ser responsvel por fechar este Form, como estamos no formulrio principal a
aplicao toda ser fechada.
O cdigo do programa ficar assim:
procedure TForm1.Sair1Click(Sender: TObject);
begin
Close;
end;
Clique no Form para selecion-lo e altere a propriedade Name do mesmo para
FormPrincipal. Na propriedade Caption digite Controle de Pedidos.
Observe que ao trocar o Name do form o Delphi fez as modificaes no cdigo
fonte tambm.
procedure TFormPrincipal.Sair1Click(Sender: TObject);
begin
Close;
end;
Note tambm que o componente de menu que inclumos foi adicionado
definio da classe do Form, juntamente com os itens de menu que incluimos
atravs do Menu Editor. Isso pode ser visto no editor de cdigo se voc for
para o incio da unit. A nova definio ser semelhante ao exemplo abaixo:
type
TFormPrincipal = class(TForm)
MainMenu1: TMainMenu;
Arquivo1: TMenuItem;
Cadastros1: TMenuItem;
Ajuda1: TMenuItem;
Sair1: TMenuItem;
Clientes1: TMenuItem;
Produtos1: TMenuItem;
Pedidos1: TMenuItem;
mnuCadCli: TMenuItem;
mnuListCli: TMenuItem;
mnuCadProd: TMenuItem;
mnuListProd: TMenuItem;
mnuCadPed: TMenuItem;
46
mnuImpPed: TMenuItem;
mnuListPed: TMenuItem;
procedure Sair1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormPrincipal: TFormPrincipal;
Salvando o Projeto
Salve o projeto na pasta que criamos (C:\Pedidos), como aprendemos na
nossa primeira aula. Caso no se recorde, vamos fazer juntos para fixar:
Clique no boto Save All do SpeedBar. Na caixa de dilogo Save Unit1 As no
item Nome do arquivo digite Principal.pas e verifique a pasta que est
selecionada, se no for a pasta Pedidos localize e selecione-a antes de clicar
no boto Salvar ou teclar Enter.
Na caixa de dilogo Save Project1 As no item Nome do arquivo digite o nome
que daremos ao projeto, Pedidos.dpr.
47
48
Propriedade
AliasName
DatabaseName
Name
Contedo
Pedidos
DBPedidos
DatabasePedidos
Contedo
FormClientes
Cadastro de Clientes
fsMDIChild
poMainFormCenter
49
Propriedade
Align
Caption
Name
Contedo
alBottom
Apague o contedo deixando em branco
PanelBotoes
Propriedade
Align
Name
Contedo
AlClient
ScrollBoxDados
50
Propriedade
DatabaseName
Name
Table
Contedo
DBPedidos
TableClientes
Clientes.db
51
Agora volte ao primeiro campo da lista, segure a tecla Shift e utilizando a seta
para baixo selecione at Fantasia. Agora arraste os campos selecionados para
o Form, na rea definida pelo ScrollDados. Voc deve obter algo assim:
Propriedade
Caption
Columns
DataField
DataSource
Height
Items
Name
Values
Width
Contedo
Tipo
2
Tipo
DataSourceClientes
38
Pessoa Fsica
Pessoa Jurdica
DBRadioGroupTipo
F
J
208
52
Contedo
53
DataField
DataSource
Name
Obs
DataSourceClientes
DBRichEditObs
Propriedade
Caption
DataField
DataSource
Name
Contedo
Cliente Ativo
Ativo
DataSourceClientes
DBCheckBoxAtivo
Name
DBEditCodigo
DBEditRazaoSocial
DBEditFantasia
DBEditCGC_CPF
DBEditInsc_RG
DBEditEndereco
DBEditBairro
DBEditCidade
DBEditUF
DBEditCEP
DBEditTelefone
DBEditFax
DBEditemail
DBEditHomePage
DBEditCadastro
54
dilogo Edit Tab Order, que lhe permitir ordenar os objetos na seqncia
correta.
Name
Contedo
DataSourceClientes
True
Primeiro Registro
Registro Anterior
Prximo Registro
ltimo Registro
Incluir Registro
Excluir Registro
Alterar Registro
Gravar Incluso/Alterao
Cancelar Incluso/Alterao
Reexibir os Dados
DBNavigatorClientes
55
Contedo
bkClose
&Fechar
BitBtnFechar
56
57
58
Certamente, voc deve ter pensado em algumas outras tambm, isso depende
muito de como voc deseja que seu Form se comporte e que funcionalidade
deseja implementar.
Realizaremos estas melhorias no prximo captulo, neste momento, vamos
entender como os dados so acessados e exibidos.
59
Se voc j programou em outras linguagens visuais pode ter uma idia melhor
de como esta arquitetura criada pela Borland realmente superior s outras
formas de desenvolvimento utilizadas por outras ferramentas. (A Borland
tambm possui o Borland C++ Builder, uma ferramenta semelhante ao Delphi,
mas que baseada em linguagem C/C++. Nela a forma de desenvolvimento
a mesma utilizada aqui).
Exerccios
1) Qual a funo do Menu Editor?
2) Qual a diferena entre aplicaes SDI e MDI? Qual tipo podemos criar
com o Delphi?
3) Para que servem os componentes da Guia BDE?
4) Qual a funo dos componentes da Guia Data Controls?
5) Qual a funo do componente DataSource?
60
Captulo 4
Aprimorando nosso formulrio de Cadastro de Clientes
Caso seu projeto esteja fechado, voc pode abri-lo clicando no boto Open
Project do SpeedBar, teclando Ctrl+F11 ou ainda acessando o menu
File|Open Project. Se trabalhou recentemente com o projeto, pode tentar um
caminho mais rpido, atravs do menu File|Reopen, localizando-o na lista dos
ltimos projetos abertos.
Retorne ao nosso FormClientes (selecionando-o por exemplo, atravs do boto
View Form no SpeedBar ) para que possamos complementa-lo.
61
62
63
Localizando informaes
Insira um BitBtn no PanelBotoes e defina suas propriedades como segue:
Propriedade
Caption
Name
Glyph
Contedo
&Procurar
BitBtnProcurar
Imagem find.bmp
64
A imagem find.bmp faz parte do arquivo de imagens do Delphi que est em:
C:\Arquivos de programas\Arquivos comuns\Borland Shared\Images\Buttons.
D um duplo clique no boto para abrir o editor de cdigo que vir assim:
procedure TFormClientes.BitBtnProcurarClick(Sender: TObject);
begin
end;
Antes da instruo begin voc deve inserir o seguinte:
var
Nome: String;
O editor dever estar apresentando o seguinte cdigo:
procedure TFormClientes.BitBtnProcurarClick(Sender: TObject);
var
Nome: String;
begin
end;
Digite o seguinte cdigo entre as instrues begin e end; (onde sempre fizemos
at agora):
Nome := ''; // inicia definindo uma string vazia
if InputQuery('Procurar', 'Razo Social/Nome', Nome) then
if not TableClientes.Locate('RazaoSocial', Nome,
[loCaseInsensitive, loPartialKey]) then
ShowMessage('Razo Social/Nome no encontrado!');
65
Exerccios:
1) Qual a funo propriedade EditMask?
2) Qual o evento que devemos utilizar para inicializar valores num
campo?
3) Para que serve a propriedade CharCase?
4) Qual a utilizade do mtodo Locate?
5) Para que serve a funo InputQuery?
66
Captulo 5
Criando o Cadastro de Pedidos
Vamos comear esta aula de forma diferente. Iremos apresentar a aparncia
final do formulrio de cadastro de pedidos, e depois iremos destrincha-lo,
fazendo passo a passo cada um dos procedimentos para sua construo.
Esta ser a interface que criaremos para o pedido. Passemos ento a sua
criao:
Crie um novo formulrio no projeto e configure as seguintes propriedades:
Propriedade
Caption
FormStyle
Height
Name
Position
ShowHint
Width
Contedo
Cadastro de Pedidos
fsMDIChild
375
FormCadPedidos
poMainFormCenter
True
550
67
Contedo
alTop
Apagar o contedo
False
145
PanelDados
Contedo
alBottom
Apagar o contedo
PanelBotoes
Isso far com que o DBNavigator exiba apenas os quatro primeiros botes,
responsveis pela movimentao na tabela. Para as outras opes ns
utilizaremos nossos prprios botes, aprendendo como o DBNavigator
manipula os mtodos para dar manuteno no sistema.
68
69
Name
SpdBtnProcurar
Para criar o boto para fechar o form, utilizamos o nosso j conhecido BitBtn
(tambm da guia Additional). Insira um BitBtn no PanelBotoes e defina suas
propriedades como segue:
Propriedade
Caption
Name
Glyph
Contedo
&Procurar
BitBtnProcurar
Imagem find.bmp
Contedo
DBPedidos
TableProdutos
Produtos.db
70
71
72
Dataset: TableProdutos
Lookup Keys: Cdigo
Result Field: Descrio
Ser exibido o Field Link Designer, como na figura acima. Selecione o campo
NumeroPedido na lista Detail Fields e na lista Master Fields. Clique no boto
Add. A caixa Joined Fields deve exibir o seguinte:
73
Clique no boto OK para prosseguir. Com isso indicamos que o TableItens est
ligado como filho do TablePedidos. Cada vez que movimentarmos a
TablePedidos na TableItens sero exibidos apenas os registros que pertenam
ao pedido exibido.
74
Contedo
taRightJustify
True
sbsSunken
Apagar o contedo
21
Times New Roman, Negrito, Tamanho 9,
cor Azul-marinho
StaticTextTotal
Com isso terminamos toda a parte visual (design). Devemos agora iniciar a
codificao, no esquecendo de salvar novamente antes de prosseguir.
75
E o evento OnClose:
Action := caFree; // libera form da memria
FormCadPedidos := NIL; // indica que foi liberado
Linhas
inseridas
76
{ Public declarations }
end;
procedure TFormCadPedidos.RecalculaPedido;
var
TmpTable: TTable;
Total: Currency; // armazena valores do tipo moeda
begin
// cria um objeto Table via codificao
TmpTable := TTable.Create(Application);
try
// define DatabaseName e TableName via codificao
TmpTable.DatabaseName := TableItens.DatabaseName;
TmpTable.TableName := TableItens.TableName;
TmpTable.Open;
TmpTable.FindKey([TablePedidosNumeroPedido.AsInteger]);
Total := 0; // inicializa a variavel totalizadora
while (not TmpTable.Eof) and
(TmpTable.FieldByName('NumeroPedido').AsInteger =
TablePedidosNumeroPedido.AsInteger) do
begin
// Acumula o Total da linha
Total := Total + (TmpTable.FieldByName('Preco').AsCurrency *
TmpTable.FieldByName('Quantidade').AsFloat);
TmpTable.Next; // prximo registro
end;
finally
TmpTable.Close; // fecha a tabela
TmpTable.Free; // libera objeto da memria
end;
StaticTextTotal.Caption := FormatCurr('###,###,##0.00', Total);
end;
77
78
Existe mais um ajuste que devemos fazer na parte de eventos ligados aos
campos. Ao digitarmos uma data, num campo onde definimos o EditMask, se
apagarmos o contedo do mesmo ser gerado um erro por definio de data
em branco ( / / ). Este cdigo a seguir responsvel por identificar esta
situao e efetuar a correo necessria. Deve ser digitado no evento
OnSetText:
if Text = ' / / ' then
Sender.Clear // apaga o campo data
79
else
// atribui a data digitada ao campo
try
Sender.AsString := Text;
except
ShowMessage('Data invlida!');
end;
80
81
Exerccios
1) Para que serve a propriedade Glyph presente em alguns tipos de boto?
2) Como podemos ocultar os botes do DBNavigator?
3) Qual a melhor maneira para se inserir um determinado componente
em um Form vrias vezes?
4) Qual a finalizade de campos LookUp?
5) Qual a finalizade de campos Calculated?
82
Captulo 6
Contedo
AlTop
105
PgCtrlLocalizar
TsFlatButtons
83
Contedo
195
0
DBGridPedidos
True
105
594
Contedo
Apagar o contedo
41
0
PanelBotoes
300
594
84
Contedo
DBPedidos
TableClientes
Clientes.db
85
E o segundo para:
Propriedade
DatabaseName
Name
Table
Contedo
DBPedidos
TableClientes
Clientes.db
86
87
begin
Height := 375;
Top := 110;
DBGridPedidos.SetFocus;
end;
88
Isto far com que o pedido localizado no form de procura seja selecionado (e
exibido) no formulrio de pedidos, atravs da sincronizao das posies dos
registros (mtodo GotoCurrent do Table).
Salve seu projeto e execute-o. Cadastre alguns pedidos, localize-os. Veja como
o aplicativo se comporta.
89
Este form que criamos, quando chamado, exibir apenas a parte superior (o
PageControl). O usurio poder escolher atravs das pginas qual tipo de
procura deseja fazer. Caso alguma informao seja encontrada o DBGrid com
os dados e o Panel com os botes sero exibidos pois o formulrio ir alterar
seu tamanho. Caso ao invs de selecionar o item o usurio decidir alterar o tipo
de procura o mesmo reduzir seu tamanho novamente.
Para a localizao de informaes utilizamos basicamente dois mtodos do
Table, o Locate (para pesquisas flexveis, que permitam diferenciar ou no
letras maisculas e minsculas) e o FindKey (para procuras exatas, contidas
na chave primria ou em ndices secundrios). Ambos os mtodos retornam
True caso tenham encontrado a informao e False se no encontrarem.
90
91
end;
TablePedidos.Delete; // exclui o pedido
except
ShowMessage('Ocorreu um erro durante a excluso do pedido');
end;
A idia que voc deve excluir primeiro os itens (filhos) antes de excluir o
pedido (pai), pois caso algum dos filhos no possa ser excludo, por algum
estar utilizando ou algo assim (no caso do sistema estar em rede) voc teria
registros rfos na sua tabela. A estrutura de controle de exceo
try..except..end foi utilizada para informar interromper a execuo (no excluir
mais) e avasar caso ocorra algum erro. Se nenhum problema ocorrer, a
mensagem no exibida.
Exerccios
1)
2)
3)
4)
5)
92
Captulo 7
93
No grupo Bands selecione Page header, Detail band e Page footer, clicando
em seguida no OK. Isso introduzir trs bands (reas de relatrio) j
configurados para exibir cabealho, rea de dados e rodap. (Tambm
possvel inserir e configurar as bands manualmente, atravs do componente
QRBand que se encontra na mesma guia).
94
95
96
TablePedidos.Open;
TableItens.Open;
97
FormImprimePedido.Close;
Exit;
end;
FormImprimePedido.QuickRepPedidos.PreviewModal;
FormImprimePedido.Free;
end;
Salve o projeto e execute. Voc notar que se chamar este relatrio com o
cadastro de pedidos aberto, ele apresentar a visualizao do pedido
atualmente selecionado. Se o mesmo estiver fechado, ser solicitado o nmero
do pedido a ser impresso/visualizado.
Utilize os Labels para digitar seus dados. E modifique as fontes como achar
mais adequado. Veja exemplo abaixo:
98
99
100
Exerccios:
1)
2)
3)
4)
5)
101
Apndice A
Interface
Do
while
for
if
else
Case
Then
Public
Private
Protected
Unit
Array
Of
Repeat
Until
Descrio
Incio de bloco de programa.
Fim de Bloco de Programa.
Definio de tipos.
Definio de variveis.
Definio de bibliotecas.
Definio de classes.
Seo da unidade, onde esto todas as definies da
mesma, variveis, tipos, constantes, bibliotecas, etc., que so
privadas unidade. Alm isso est todo o cdigo dos
mtodos da unidade.
Seo da unidade, onde esto todas as definies da
mesma, variveis, tipos, constantes, bibliotecas, etc., que
sero tornadas pblicas pela unidade.
Comando interno de execuo de algum outro comando.
Comando de repetio.
Comando de repetio.
Comando de seleo.
Comando de exceo a uma seleo.
Comando de seleo.
Comando de auxiliar de seleo.
Propriedades e Mtodos que podem ser acessados por
qualquer unidade do programa.
Propriedades e Mtodos que s podem ser acessados pela
prpria unidade.
Propriedades e Mtodos que podem ser acessados apenas
pela prpria unidade e pelos mtodos das unidades derivadas
desta.
Chave para a declarao do nome da unidade.
Palavra para a definio de vetores.
Comando auxiliar para definies de tipos.
Comando de Repetio.
Comando auxiliar na repetio.
102
With
Tipos de Dados
Tipos Inteiros
Tipo
Shortint
Smallint
Longint
Byte
Word
Integer
Cardinal
Integer
Cardinal
Domnio
-128 127
-32768 32767
-2147483648 2147483647
0 255
0 65535
-32768 32767
0 65535
-2147483648 2147483647
0 2147483647
Tamanho
1
2
4
1
2
2
2
4 (32-bits)
4 (32-bits)
Tipos Booleanos
Tipo
Boolean
ByteBool
WordBool
LongBool
Descrio
1 byte, assume apenas valores TRUE ou FALSE
um byte com caractersticas booleanas, 0(FALSE) e
diferente de 0 (TRUE)
um Word com caractersticas booleanas, 0(FALSE) e
diferente de 0 (TRUE)
um Longint com caractersticas booleanas, 0(FALSE) e
diferente de 0 (TRUE)
Tipos Caracteres
Tipo
Char
String
Descrio
1 byte, caracter
n bytes, caracteres
Tipos Reais
Tipo
Real
Single
Double
Extended
Comp
Currency
Domnio
2.9 x 10-39 1.7 x 1038
1.5 x 10-45 3.4 x 1038
5.0 x 10-324 1.7 x 10308
3.4 x 10-4932 1.1 x 104932
-263+1 263 -1
-922337203685477.5808
922337203685477.5807
Definio de Arrays
Um array um vetor de dados de um determinado tipo. Ele representa
uma lista com uma determinada caracterstica, e definido no Delphi da
mesma forma como era definido no Pascal.
103
Var
Nome_da_varivel: array[1..n] of Tipo_da varivel; // ou
Nome_da_varivel: array[1..n,1..m,1..x,..] of Tipo_da varivel; // Para
matrizes
Ex.:
X: array[1..10] of Integer; // Vetor de 10 elementos inteiros
S: array[1..50] of Double; // Vetor de 50 elementos reais
M: array[1..10,1..20] of Boolean; // Matriz booleana de 10x20
Comentrios
Comentrio de Uma linha: // comentrio
Comentrios de vrias linhas { comentrio }
Formas de Atribuio
O Delphi utiliza a mesma forma de atribuio do Pascal ( := ). A nica
diferena que a atribuio foi estendida aos objetos e aos novos tipos do
Delphi.
Ex.:
X := 10 + Y;
Form1 := Form2; Operadores:
O Delphi Possui uma estrutura de operadores muito parecida com a do
pascal, apenas com a incluso de alguns novos operadores.
Operadores
Operadores Aritmticos
Operado
r
+
Operao
Subtrao
Multiplica
o
Diviso
/
Div
Mod
Adio
Diviso
inteira
Resto da
diviso
inteira
Tipos
Usados
Inteiros
Reais
Inteiros
Reais
Inteiros
Reais
Inteiros
Reais
Inteiros
Tipos
Resultantes
Inteiro
Real
Inteiro
Real
Inteiro
Real
Real
Real
Inteiro
Inteiros
Inteiro
104
Operadores Unrios
Operado
r
+
-
Operao
Tipos
Usados
Inteiros
Reais
Inteiros
Reais
Identidade
do sinal
Negao
de sinal
Tipos
Resultantes
Inteiro
Real
Inteiro
Real
Shl
Shr
Operao
Tipos
Usados
Inteiros
Inteiros
Inteiros
Inteiros
Tipos
Resultantes
Booleano
Booleano
Booleano
Booleano
Inteiros
Booleano
Inteiros
Booleano
Tipos
Usados
Booleanos
Booleanos
Booleanos
Booleanos
Tipos
Resultantes
Booleano
Booleano
Booleano
Booleano
Negao
E
OU
OU
Coincidente
(Exclusivo)
Shift para a
esquerda
Shift para a
direita
Operadores Booleanos
Operado
r
Not
And
Or
Xor
Operao
Negao
E
OU
OU
coincidente
Operadores Relacionais
Operado
r
=
Operao
Tipos Usados
Igual
Operado
r
<>
Operao
Tipos Usados
Diferente
de
Tipos
Resultantes
Booleano
Tipos
Resultantes
Booleano
105
<
>
<=
>=
<=
>=
In
Is
Booleano
Booleano
Booleano
Booleano
Booleano
Booleano
Booleano
Booleano
Operadores Especiais
Operado
r
@
As
Operao
Atribuio
Relao
Tipos
Usados
Qualquer
Classes
Tipos
Resultantes
Ponteiro
Classe
Comandos de seleo
If Then
O if a estrutura de seleo mais simples que existe, e est presente
em todas as linguagem de programao. Nele, uma condio testada, se for
106
If x=0 Then
Write(x zero);
Else
Write(x no zero);
A utilizao dos marcadores de incio e fim (Begin e End), e considerada
opcional, se for executado apenas um nico comando. O If ainda permite o
encadeamento de Ifs.
Ex.:
If x=0 Then
Write(X zero);
Else
If x>0 Then
Write(X positivo);
Else
Write(X negativo);
Case
A instruo case consiste em uma expresso usada para selecionar um
valor em uma lista de possveis valores, ou de faixa de valores. Estes valores
so constantes e devem ser nicos e de tipo ordinal. Finalmente pode haver
uma instruo else que ser executada se nenhum dos rtulos corresponder ao
valor do seletor. O seu formato bsico :
Case Seletor of
Const1: Begin
Comandos referentes a constante 1.
End;
Const2: Begin
Comandos referentes a constante 2.
End;
Faixa1..Faixa2: Begin
Comandos referentes a Faixa de valores.
End;
Else
Comandos referentes ao else
End;
107
Ex.:
Case Numero of
1: texto := um;
2: texto := dois;
3: texto := trs;
end;
Case MeuChar of
+: Texto := Sinal de mais;
-: Texto := Sinal de Menos;
0..9: Texto := Nmeros;
else
Begin
Texto := Caracter desconhecido;
Meuchar := ?;
End;
Comandos de repetio
For
O loop for no Pascal baseia-se estritamente em num contador, o qual
pode ser aumentado ou diminudo cada vez que o loop for executado. O
contador inicializado, e o loop ir se repetir enquanto o contador no chegar
ao fim da contagem. O seu formato bsico :
For contador := inicio_da_contagem to fim_da_contagem do
Begin
Comandos;
End;
Ex. aumentando:
K := 0;
For i:=1 to 10 do
K := K + i;
Ex. diminuindo:
K := 0;
For i:=10 downto 1 do
K := K + i;
108
While
O while um comando de repetio que no possui controle de um
contador e que testa a condio antes de executar o prximo loop. Este loop ir
se repetir enquanto a condio for verdadeira. A sua forma bsica :
While condio
Begin
Comandos;
End;
Ex.:
I:=10;
J:=0;
While I>J do
Begin
I := I 1;
J := J + 1;
End;
No caso do while, as regras do for para os marcadores de incio e fim do
loop e a do encadeamento, tambm so vlidas.
Repeat Until
O Repeat um comando de repetio que no possui controle de um
contador e que testa a condio depois de executar o loop. Este loop ir se
repetir at que a condio seja verdadeira. A sua forma bsica :
Repeat
Comandos;
Until condio
Ex.:
I:=10;
J:=0;
Repeat
I := I 1;
J := J + 1;
Until J>I;
No caso do Repeat, as regras do for para os marcadores de incio e fim
do loop e a do encadeamento, tambm so vlidas.
Procedimentos e funes
Um conceito importante que integra linguagens como o Pascal, e
consequentemente o Object Pascal do Delphi, o da sub-rotina. No Pascal as
subrotinas podem assumir duas formas diferentes: procedimentos ou funes.
A nica diferena real entre as duas, que as funes tm um valor de retorno,
enquanto os procedimentos no. Abaixo est a sintaxe do Pascal para
procedimentos e funes:
109
Procedure ola;
Begin
ShowMessage( Ol !);
End;
110
Classes e objetos
Estes so dois termos que freqentemente so erroneamente utilizados.
Esclarecendo isto, as suas definies so as seguintes:
Uma classe um tipo de dado definido pelo usurio, o qual tem um
estado,
uma
representao
e
algumas
operaes
ou
comportamentos. Uma classe tem alguns dados internos e alguns
mtodos, na forma de procedimentos e funes. Uma classe
usualmente descreve as caractersticas genricas e o comportamento
de uma srie de objetos muito semelhantes. As classes so usadas
pelo programador para organizar o cdigo fonte e pelo compilador
para gerar o aplicativo.
Um objeto uma instancia de uma classe, ou, usando outras
palavras, uma varivel do tipo de dados definido pela classe.
Objetos so entidades reais. Quando o programa executado, os
objetos ocupam parte da memria para a sua representao interna.
Propriedades genricas:
Propriedade
Caption
Color
Cursor
Enable
Font
Height
Descrio
String que se refere ao objetivo da classe.
Esta string mostrada no componente
relacionado a classe.
Cor atribuda a classe. Em alguns casos
ela est relacionada com a cor de fundo do
componente.
Tipo de cursor a ser mostrado quando o
mouse estiver sobre o componente
Se o componente esta habilitado ou no
Fonte de letra utilizado pela classe
Altura do componente, em relao ao Top
Valores
String
Cor
Cursor
True, False
Fonte de letra
Integer
111
Propriedade
Hint
Descrio
String que aparece sobre um componente,
quando o mouse fica algum tempo parado
sobre este.
Posio esquerda do componente. Se o
componente for um form, este ser em
relao a tela, se for outro qualquer, ser
em relao ao form aonde ele estiver.
Nome da propriedade para o cdigo
Habilita ou desabilita o Hint
Posio superior do componente. Se o
componente for um form, este ser em
relao a tela, se for outro qualquer, ser
em relao ao form aonde ele estiver.
Torna a classe visvel ou Invisvel
Largura do componente, em relao ao
Left.
Left
Name
ShowHint
Top
Visible
Width
Valores
String
Inteiro
Nome
True, False
Inteiro
True, False
Integer
Eventos genricos:
Evento
OnClick
OnClose
OnCreate
OnDblClick
OnExit
OnKeyPress
OnMouseMove
OnShow
Descrio
executado quando o mouse clicado encima do
componente
executado quando um form fechado
executado logo aps a criao do componente.
executado quando o mouse clicado duas vezes
consecutivas sobre o componente
executado no termino do programa.
executado quando o componente esta selecionado e
alguma tecla for apertada.
executado quando o mouse se movimenta sobre o
componente.
executado antes de exibir o componente
Cdigo bsico
unit Unit1;
// Nome da unidade
interface
// Inicio da unidade
uses
// Bibliotecas Adicionadas
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
// Tipos definidos
TForm1 = class(TForm) // Definio de uma Classe
private
112
com
// a extenso DFM.
// Espao destinado ao cdigo fonte dos mtodos da unidade.
end.
113
O construtor
O construtor o evento de uma classe que executado no momento da
criao do objeto. Este evento normalmente utilizado para a inicializao, e
pode ter qualquer quantidade de parmetros de entrada, e nenhum parmetro
de sada.
Ex.:
Data = Class
Dia, Mes, ano: Integer;
Constructor init(d, m, a: Integer);
Procedure Ledata(Var d,m,a: Integer);
Procedure gravadata(d,m,a: Integer);
End;
Um construtor pode ter qualquer nome, e cada classe pode ter apenas
um construtor.
O destrutor
O destrutor o evento de uma classe que executado no momento do
fechamento do objeto. Este evento normalmente utilizado para a liberao de
memria alocada dinamicamente pelo objeto. Ele no possui parmetros de
entrada ou sada:
Ex.:
Data = Class
Dia, Mes, ano: Integer;
Constructor init(d, m, a: Integer);
Procedure Ledata(Var d,m,a: Integer);
Procedure gravadata(d,m,a: Integer);
Destructor destroi;
End;
114
Herana
A herana um dos recursos mais poderosos de uma linguagem
orientada a objetos. Ela permite que as classes secundrias assumam as
propriedades de suas classes principais. Elas herdam propriedades, mtodos e
eventos de sua classe principal, a classe secundria pode acrescentar novos
componentes naqueles que herdam. Isso permite que voc peque uma classe
que tenha praticamente todas as partes fundamentais de que precisa, e insira
novos objetos que a personalizam exatamente de acordo com suas
necessidades.
Quando uma classe secundria herda propriedades de uma primria, a
classe secundria ter acesso a todas as propriedades, mtodos e eventos,
que forem pblicos ou protegidos.
Inherit
Esta uma palavra reservado do Object Pascal que utilizada antes de
um mtodo. Ela pode ser utilizada quando uma classe secundria, possui um
mtodo com o mesmo nome de um da classe primria. Neste caso se nos
quisermos acessar o mtodo da classe primria teremos que utilizar o Inherit
antes deste mtodo.
Override
Esta uma palavra reservada do Object pascal que utilizada aps um
mtodo quando em uma classe secundria, queremos redefinir uma funo
definida em uma classe primria. Baseado nas definies de override e das
ligaes dinmicas e que se define o poliformismo.
Poliformismo
O poliformismo um recurso das linguagens orientadas a objetos, que
literalmente indica a capacidade de um objeto assumir vrias formas. Em
outras palavras, o poliformismo permite que voc referencie propriedades e
mtodos de classes diferentes por meio de um mesmo objeto. Ele tambm
possibilita que voc execute operaes com esse objeto de diferentes
maneiras, de acordo com o tipo de dado e com a classe atualmente associada
a esse objeto.
115
116
{ A letra 'A'}
{ 'ABCDE' }
117
118
119
120
121
122
123
124
'xx'/"xx"
Caracteres entre aspas simples ou duplas, no afetam a
formatao.
;
Separa sees para nmeros positivos, negativos e o zero na string de
formatao.
Obs.: A localizao do '0' extremo esquerdo antes do ponto decimal e do 0
extremo direito aps o ponto decimalna string de formatao determinam a
faixa de dgitos sempre exibida na string de sada. O nmero sendo formatado
formatado sempre arredondado para o nmero de digitos definidos aps o
ponto decimal (com '0' ou '#'). Se a string de formatao no contm o ponto
decimal, o valor sendo formatado ser arredondado para o nmero mais
prximo.
Se o nmero sendo formatado possui mais dgitos a esquerda do separador
decimal que os definidos pelos especificadores de dgito na string de
formatao, digitos extras sero exibidos antes do primeiro especificador de
dgito.
Para definir formatao diferente para valores positivos, negativos, e zero,
a
125
string de formatao pode conter entre uma e trs sees separadas por ;
(ponto-e-vrgula).
0
0.50
0.00
0.50
0.00
0.00
0.50
0.000E+00
0E0
Zero
{ 0.567 }
{ -0.567 }
Drive
Corrente
A
B
C
Ex.:
var
s : string;
begin
GetDir(0,s); { 0 = drive corrente}
MessageDlg('Drive e diretrio atual: ' + s, mtInformation, [mbOk] , 0);
end;
126
function IncMonth(const
TDateTime;
Date:
TDateTime;
NumberOfMonths:
Integer):
127
{ 'Delphi 3 Client/Server' }
128
129
mbAll
Um boto com o texto 'All'
mbYesNoCancel
Coloca os botes Yes, No, e Cancel na caixa de
mensagem
mbOkCancel
Coloca os botes OK e Cancel na caixa de mensagem
mbAbortRetryIgnore
Coloca os botes Abort, Retry, e Ignore na caixa de
mensagem
MessageDlg retorna o valor do boto selecionado. Os valores de retorno
possveis so:
mrNone mrAbort
mrYes
mrOk
mrRetry
mrNo
mrCancel mrIgnore
mrAll
Ex.:
procedure TForm1.Button1Click(Sender: TObject);
begin
if MessageDlg('Deseja sair da aplicao agora ?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
MessageDlg('Tenha um bom dia...ject Pascal application.', mtInformation,
[mbOk], 0);
Close;
end;
end;
130
131
procedure Randomize;
Inicializa o modo Randomico. Deve ser utilizada antes de Random
function RemoveDir(const Dir: string): Boolean;
Remove um diretrio retornando True caso tenha conseguido e False caso
contrrio
132
133
Valor
Significado
sdAllowCreate
Uma caixa de exio aparece para permitir ao usurio
digitar o nome do diretrio que no existe. Esta opo no cria o
diretrio, mas a aplicao pode acessar o parametro Directory
para criar o diretrio desejado.
sdPerformCreate Usado somente quando Options contm sdAllowCreate. Se
o usurio entrar com um diretrio que no existe, SelectDirectory
cria-o.
sdPrompt
Usado quando Options contm sdAllowCreate. Exibe uma caixa de mensagem que
informa o usurio quando o diretrio digitado no existe e pergunta se deseja cri-lo. Se
o usurio selecionar OK, o diretrio criado se Options contm sdPerformCreate. Se
Options no contm sdPerformCreate, o diretrio no criado: a aplicao precisa crio quando SelectDirectory retornar.
134
Condio
if Str1< Str2
if Str1= Str2
if Str1 > Str2
135
136
function Succ(X);
Retorna o sucessor de um ordinal
Ex.:
uses Dialogs;
type
Colors = (RED,BLUE,GREEN);
var
S: string;
begin
S := 'O predecessor de 5 ' + IntToStr(Pred(5)) + #13#10;
S := S + 'O sucessor de 10 ' + IntToStr(Succ(10)) + #13#10;
MessageDlg(S, mtInformation, [mbOk], 0);
end;
137
Descrio
Determina como o componente ser alinhado no seu container
[alNone, alTop, alBottom, alLeft, alRight, alClient]
Legenda do componente (& indica a tecla de atalho)
Desenho que representa o cursor da mouse
[crDefault, crNone, crArrow, crCross
, crIBeam, crSize,
crSizeNESW,
crSizeNS, crSizeNWSE, crSizeWE, crUpArrow, crHourGlass,
crDrag,
138
Nome
Name
Left
Top
Height
Width
ComponentCo
unt
Components
Color
Font
Ctl3D
Enabled
Visible
Hint
ShowHint
PopupMenu
TabOrder
TabStop
HelpContext
Descrio
crNoDrop, crHSplit, crVSplit, crMultiDrag, crSQLWait, crNo,
crAppStart, crHelp, crHandPoint]
Nome da instncia do componente
Distncia em Pixel da borda esquerda do componente at a
borda esquerda do FORM
Distncia em pixel da borda superior do componente at a
borda superior do FORM
Altura em pixel do componente
Largura em pixel do componente
O nmero de componentes possudos por um componente
container
Uma matriz de componentes possudos por um componente
container
Indica a cor de fundo do componente
Fonte utilizada no componente
Define a aparncia 3D ou 2D de um componente
Define se o componente esta ou no ativo
Define se o componente esta ou no visvel
String utilizada na exibio de dicas instantneas
Define se o hint ser mostrado automaticamente
Menu que ser acionado com o boto direito do mouse
A ordem de tabulao do componente
Indica se o componente ser ponto de parada para a tecla
TAB
Nmero utilizado para chamar o help on-line sensvel ao
contexto
Eventos Comuns
Nome
OnChage
OnClick
OnDblClick
OnEnter
OnExit
OnKeyDown
Descrio
O contedo do componente alterado
O componente acionado (Mouse ou Enter)
Duplo-clique sobre o componente
O componente recebe o foco
O componente perde o foco
Tecla(s) so pressionada(s) inclusive teclas de controle
Parametros :
Key = Cdigo da tecla
Shift = conjunto que indica a(s) tecla(s) de controle pressionadas
(ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble)
OnKeyPress Uma tecla pressionada, onde Key contm o caracter
pressionado
OnKeyUp
Uma tecla solta
Mtodos Comuns
Nome
Create
Descrio
Cria uma nova instncia
139
Nome
Destroy
Show
Hide
SetFocus
Focused
BringToFron
t
SendToBack
ScaleBy
SetBounds
Descrio
Destri a instncia
Torna o componente visvel
Torna o componente invisvel
Coloca o foco no componente
Determina se o componente tem o foco
Coloca o componente na frente dos outros
Coloca o componente atrs dos outros
Gradua
o
componente
em
determina
escala.
Ex:
Button1.ScaleBy(90,100) altera o tamanho do boto para 90% do
tamanho original
Muda
a
posio
e
o
tamanho
do
componente
(ALeft,ATop,AWidth,AHeigh)
140
Componentes
Form - Elemento bsico no desenvolvimento Delphi formando o alicerce sobre,
o qual um aplicativo construdo.
Propriedades Descrio
Active
Indica quando o formulrio esta ativo.
ActiveControl Determina o controle que receber o foco quando o formulrio
ativado
AutoScroll
Adiciona barras de rolagens automaticamente quando um
formulrio redimensionado de forma a cobrir componentes
HorzScrollBar Adiciona Barra de rolagem Horizontais quando necessrio
VertScrollBar Adiciona Barra de rolagem Verticais quando necessrio
BorderIcons
Define quais cones de controle sero visveis
[biSystemMenu, biMinimize, biMaximize, biHelp]
BorderStyle
Estilo da borda da janela
[bsDialog, bsSingle, bsNone, bsSizeable, bsToolWindow,
bsSizeToolWin]
FormStyle
Tipo da janela
[fsNormalfs, MDIChild, fsMDIForm, fsStayOnTop]
Icon
cone da janela
Menu
Indica qual o componente menu do formulrio ser apresentado
Position
Permite controlar a posio e tamanho dos formulrios na
execuo
[poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly,
poScreenCenter]
WindowState Estado da janela (normal, minimizado ou maximizado)
Eventos
OnCreate
OnShow
OnCloseQuery
OnClose
OnActivate
OnDeactivate
OnResize
Mtodos
Show
ShowModal
Close
Refresh
Descrio
O formulrio criado
Antes de mostrar a janela
chamada para validar se a janela pode ser fechada
Ocorre quando a janela fechada
Ocorre quando a janela torna-se ativa
Ocorre quando a janela perde o foco
Ocorre quando a janela muda de tamanho
Descrio
Mostra uma janela no-modal
Ativa uma janela modal
Fecha a janela
Redesenha a Janela
141
Propriedades Descrio
Cancel
Dispara o evento OnClick do boto quando a tecla ESC
pressionada
Default
Dispara o evento OnClick do boto quando a tecla ENTER
pressionada
ModalResult Associa o boto a opo de fechamento de um Form modal
Descrio
Seleciona um BitMap padro para o boto
Indica a aparncia do boto (win3.11, win95, winxx)
Mtodos
Click
Descrio
BitMap exibido pelo boto
Posio do BitMap no Boto
Indica o espao entre a borda do boto e o BitMap
Indica o espao entre o BitMap e o Texto do boto
Estado do boto (Pressionado ou no)
Indica quais botes pertencero ao mesmo grupo
Permite que todos os botes de um grupo possam estar no
pressionados
Descrio
Ativa o evento OnClick do boto
Descrio
Alinhamento do texto no componente
Define se o tamanho do componente ser automaticamente
ajustado ao tamanho da legenda
WordWrap
Retorno automtico
Transparent
Define se o componente ser transparente
FocusControl Nome do componente que receber o foco
ShowAccelCh Indica se & ser far ou no parte da legenda
ar
142
Propriedades
Text
AutoSelect
Descrio
Armazena a entrada de dados
Indica se o texto ser ou no selecionado quando o
componente receber o foco
MaxLength
Nmero mximo de caracteres permitidos
CharCase
Define se as letras aparecero em maisculo, minsculo ou
normal
PasswordCha Caracter utilizado para esconder os dados digitados (Senhas)
r
ReadOnly
Define se ser permitido alterar o texto
SelLength
Comprimento da seleo
SelStart
Inicio da seleo
SelText
Texto selecionado
Descrio
Mscara de edio
143
:
/
Descrio
Indica como ser o alinhamento do texto
Armazena as linhas de texto
Define se a tecla ENTER ser tratada pelo Formulrio ou pelo
Memo
Define se a tecla TAB ser tratada pelo Formulrio ou pelo
Memo
Indica se a linha digitada ser quebrada, automaticamente, de
acordo com o tamanho do componente
Indica se Memo ter barras de rolagem
Mtodos
Descrio
Clear
Limpa o memo
ClearSelection Limpa o texto selecionado no memo
Obs: Muitos componentes possuem propriedades do Tipo TStrings, essa
classe permite armazenar e manipular uma lista de Strings. Toda propriedade
do tipo TStrings permite acesso indexado aos itens da listas
(Propriedade[indce])
TString
Propriedades
Count
Descrio
Nmero de linhas
Mtodos
Add
Insert
Delete
Clear
IndexOf
LoadFromFile
SaveToFile
Descrio
Adiciona uma nova linha no final da lista
Insere uma nova linha numa posio especificada
Apaga uma linha
Apaga toda a lista
Retorna o ndice do item e -1 caso no encontre
Carrega de um arquivo texto
Salva para um arquivo texto
Descrio
Determina se o checkbox ter duas ou trs possibilidades
Determina se o checkbox est selecionado
Estado atual do checkbox (cbUnchecked, cbChecked,
cbGrayed)
144
Descrio
Determina se o RadioButton esta selecionado
Descrio
Estilo interno da superfcie do Panel
Estilo externo da superfcie do Panel
Distncia entre as superfcies externas e internas
Estilo da Borda
Largura da borda
Descrio
Barra Horizontal (Increment, Tracking e Visible)
Barra Vertical (Increment, Tracking e Visible)
Descrio
Tipo de figura a ser desenhada
Define alto e baixo relevo
145
Propriedades
Columns
MultiSelect
ExtendedSele
ct
IntegralHeight
Items
ItemIndex
Selected
SelCount
Sorted
Descrio
Nmero de colunas da lista
Define se ser permitida a seleo de mltiplos itens
Define se a seleo poder ser estendida pelo uso das teclas
Shift e Ctrl
Define se os itens podero aparecer parcialmente ou somente
por completo
Valores dos itens da lista
Item selecionado. (-1 no existe item selecionado e o 1 0)
De acordo com o ndice indica se um item em particular esta
selecionado.
Indica quantos itens esto selecionado
Define se os itens aparecero ordenados
Sorted
Descrio
Valores a serem exibidos na lista
Nmero de itens visveis da lista
Contedo texto digitado na ComboBox
csDropDown - permite edio e exibe os itens mediante
solicitao
csDropDownList - no permite edio e mostra itens no edit
ao pressionar a 1 letra do item.
CsSimple - permite edio e exibe a lista
Define se os itens aparecero ordenados
Descrio
Quando um item marcado ou desmarcado
Descrio
Valor mnimo possvel
Valor mximo possvel
Posio Atual
146
Propriedades
LargeChange
SmallChange
Kind
Descrio
Incremento da posio quando o click na barra
Incremento da posio quando o click na seta
Se a barra vertical ou horizontal
Eventos
Descrio
OnEditMask Permite atribuir uma mscara a clula. A linha e a coluna da
clula editada so recebidas pelo evento e mascar
representada pelo parmetro Value
Descrio
Nmero de colunas
Nmero de linhas
Coluna corrente
Linha Corrente
Largura das colunas
Altura das linhas
Define se o desenho das clulas ser automtico ou manual
Quantidade de Linhas Fixas
Quantidade de colunas fixas
Espessura das Linhas divisrias
Define caractersticas do Grid. goEditing e goTabs
Permite acessar as clulas da Grid, por coluna e linha, sendo
que a primeira linha e coluna tm valores 0.
Descrio
Arquivo Bitmap, cone ou Windows Metafile exibido
Centraliza a figura no componente
Define se o tamanho da figura deve ser ajustada ao do
componente
Torna o fundo visvel ou opaco
Descrio
Cor e preenchimeto da figura
Cor e preenchimento da borda
Figura geomtrica
147
Descrio
Exibe o componente com aparncia 3D
Tamanho mnimo para os componentes
TabControl - Contem guias, as quais podem ser utilizadas para alterar outros
componentes
Propriedades
MultiLine
Tabs
TabPositon
HotTrack
Descrio
Permite mltiplas linhas para as guias
Guias
Posio das orelhas em cima ou embaixo
Destaca a orelha quando o curso do mouse esta em cima da
mesma
TabIndex
Guia ativa
ScrollOpposite Transfere as orelhas das linhas anteriores selecionada para
a outra extremidade do Componente
Eventos
OnChange
Descrio
Quando uma guia selecionada
Descrio
Permite mltiplas linhas para as pginas
Pgina ativa
ndice da pgina ativa
Descrio
Quando uma pgina selecionada
148
Propriedades
Count
Descrio
Nmero de imagens na lista
Descrio
Orientao vertical ou horizontal
valor mnimo
valor mximo
Posio corrente
Estilo de exibio das marcaes
Aparncia do indicador
Determina o incremento que deve ser dado quando as teclas
PgUp e PgDn forem pressionadas
Determina o incremento que deve ser dado quando as setas
forem pressionadas
Posio de inicio do preenchimento
Posio de trmino do preenchimento
Descrio
valor mnimo
valor mximo
incremento que deve ser dado a propriedade position em cada
mudana
Posio corrente
149
Mtodos
StepIt
StepBy
Descrio
Incrementa Position de Step unidades
Incrementa Position de n unidades
150
Propriedades Descrio
FrameCount Nmero de Frames da animao
Repetitions
Nmero de repeties quando a animao for executada. O
valor zero indica repeties indefinidas
Descrio
Hora selecionada
Data Selecionada
A forma como a data poder ser selecionada [dmComboBox,
dmUpDown]
Formato da Data [dfShort, dfLong]
Seleciona o componente para Data ou Hora [dtkDate, dtkTime]
Exibe um CheckBox
Indica se o CheckBox esta selecionado
Selected
Descrio
Define os itens da hierarquia.
Recuo dos sus-itens
Determina se haver uma linha ligando os sub-itens
Determina se haver uma linha ligando os itens razes
Indica se o boto a esquerda do item ser visvel
Indica se quando o componente perder o foco a seleo
continuar ativa
nsNone
no ordenado
nsData
os iten so ordenados quando os dados so
alterados
nsText
os itens so ordenados quando o Caption
alterado.
nsBoth
a ordenao e feita em ambos os casos
Item selecionado. Podemos acessar o contedo selecionado
atravs de Select.Text;
151
Propriedades
ViewStyle
Descrio
Determina se os itens devem ser apresentados em colunas
com
cabealhos
e
sub-itens,
verticalmente
ou
horizontalmente, com cones grandes ou pequenos
LargeImages
Lista de Imagens (TImagesList) contendo a bitmaps a
serem exibidos e somente usada quando a propriedade
ViewStyle vsIcon
SmallImages
Lista de Imagens (TImagesList) contendo a bitmaps a
serem exibidos e somente usada quando a propriedade
ViewStyle vsSmallIcon
Items
Items a serem exibidos
Columns
Cabealhos das colunas da Lista
ShowColumnHea Exibe os cabealhos das colunas
ders
ColumnClick
Indica se os cabealhos das colunas tero a aparncia de
botes
IconOptions
Opes de exibio dos cones quando ViewStyle for
vsIcon ou vsSmallIcons
Arrangement alinhado no topo ou esquerda do ListView
AutoArrange os cones so alinhados automaticamente
WrapText
a propriedade caption ser quebrada
SortedType
nsNone
no ordenado
nsData
os iten so ordenados dados so
alterados
nsText
os itens so ordenados quando o
Caption alterada.
nsBoth
a ordenao e feita em ambos os casos
Selected
Item selecionado. Podemos acessar o contedo
selecionado atravs de Select.Captiont;
Descrio
Clique sobre uma seo
A seo tem seu tamanho alterado
StatusBar - Utilizado para criar barra de Status para exibir informaes sobre a
aplicao. Podemos abrir o editor de paines atravs do boto direito do mose
152
Propriedades
SimplePanel
SimpleText
SizeGrip
Panels
Descrio
Indica se o StatusBar possuir um ou vrios panels
Texto exibido caso SimplePanel igual a TRUE
Indicador de tamanho padro do Windows
Painis do StatusBar, cada panel permite a exibio de
informao. Os painis so acessados como elementos de um
vetor (Panels[n]) e possuem as seguintes propriedades : Text,
Width, Style, Bevel, Alignment
Descrio
Os botes ficam tero a aparncia do Office 97
Componente ImageList que conter as figuras dos botes
Acessa os botes atravs do ndice n
Descrio
Armazenas as Faixas (Cool bands)
Indica o estilo da borda entre os CollBands
BitMap exibindo no fundo do componente
Indica se o usurio poder modificar a ordem dos CollBands
Indica se o usurio poder modificar o tamanho dos CollBands
Indica se o valor da propriedade Text de cada TollBand ser
exibido ao lado de sua faixa
Indica se os CollBand sero verticais
Coleo de desenhos exibidos ao lado de cada CoollBand
153
Dilogos Comuns
Grupo de caixas de dilogo comuns a muitos programas.
Parte integrante do Windows, so atualizadas com a atualizao do Windows.
Necessitam pouca ou nenhuma programao para serem utilizadas. Facilitam a
padronizao em tarefas comuns. Depois de serem executados os Dilogos
Comuns armazenam em suas propriedades as escolhas do usurio.
Mtodo
Execute
Descrio
Ativa a caixa de dilogo e retorna True caso o dialogo comum seja
encerrado com o boto OK.
Descrio
Nome do arquivo
Extenso padro para os arquivos
Define os tipos de arquivos que podem ser abertos ou salvos
Nmero do filtro default
Diretrio inicial
Ttulo da janela
Define caractersticas da janela de abrir ou salvar
Descrio
Ocorre aps o usurio pressionar o boto apply e antes da janela
fechar
154
Propriedades Descrio
selecionado)
FromPage
Pgina inicial
ToPage
Pgina final
MinPage
Menor nmero de pgina que o usurio pode escolher
MaxPage
Maior nmero de pgina que o usurio pode escolher
Options
Define caractersticas da caixa de dilogo
Descrio
Texto a pesquisar
Texto a substituir (somente em ReplaceDialog)
Define caractersticas da caixa de dilogo
Descrio
Ocorre aps o usurio pressionar o boto Find Next
Ocorre quando o usurio pressiona o boto Replace (somente
em ReplaceDialog)
Mtodo
CloseDialog
Descrio
Fecha a caixa de dilogo
Descrio
Itens do menu, utiliza o MenuEditor
Descrio
Ocorre quando o menu popup ativado
155
Propriedades
Caption
Checked
Visible
Enabled
ShortCut
Break
GroupIndex
RadioItem
Eventos
OnClick
Descrio
Texto do item
Se o item esta marcado ou no
Se o item esta visvel ou no
Se o item esta ativado ou desativado
Tecla de atalho
Indica quebra de coluna
Indica que o item do menu pertence a um grupo
Indica que o item de menu funcionra como um Radio, ou seja,
dentro do mesmo grupo apenas um item estr selecionado.
Descrio
Quando o item de menu selecionado, usado para executar a
funo do item
156
Capitulo 1
1) O que Delphi? uma ferramenta para o desenvolvimento rpido de
aplicativos (RAD), fortemente baseada na criao visual atravs de
componentes e na utilizao da Programao Orientada a Objetos
atravs da Linguagem Object Pascal.
2) O que IDE? Quais os itens que a compe? A IDE o Ambiente
Integrado de Desenvolvimento. formado pela Janela Principal (menu
do Delphi, SpeedBar e Component Palette), o Object Inspector e o
TreeView, o Code Editor (Editor de Cdigo) e um Debugger Integrado.
3) Para que serve o Object Inspector? Ele responsvel por permitir a
inspeo e modificao das propriedades e eventos associados a cada
objeto (componentes).
4) Quais so os principais arquivos de um projeto? O arquivo com
extenso .DPR, que gerencia todo o projeto e responsvel pela
criao do aplicativo executvel, arquivos .DFM dos formulrios (que
sempre possuem um arquivo .PAS) e os arquivos .PAS com cdigo
fonte em Object Pascal.
5) O que um evento? So rotinas ou procedimentos que so executados
como resposta a uma determinada ao ou acontecimento, com o
pressionamento de teclas, um clique ou movimento de mouse, etc.
Capitulo 2
1) O que so Classe e Objeto? Objeto uma estrutura que armazena tanto
dados (informaes) quanto funes (rotinas) para processa-los e/ou
manipula-los. A Classe uma definio genrica, uma espcie de
molde para a criao de um objeto.
2) O que so mtodo e propriedade? Mtodo so funes que manipulas
os dados de um objeto, propriedade so as caractersticas que um
objeto possui.
3) O que e para que serve o BDE? O BDE uma engine (ferramenta)
que fornece acesso a bancos de dados Desktop e Client-Server.
4) Qual a vantagem de se utilizar Alias? Permitir a alterao da base de
dados, tanto para um novo local como para uma nova arquitetura ou
banco de dados sem ter que modificar o aplicativo (executvel).
157
Capitulo 3
1) Qual a funo do Menu Editor? O Menu Editor permite a criao visual
de menus pulldown (mainmenu), o ajuste das propriedades dos itens de
menu e tambm o acesso aos eventos dos mesmos.
2) Qual a diferena entre aplicaes SDI e MDI? Qual tipo podemos criar
com o Delphi? Em uma aplicao SDI as janelas so independentes,
numa aplicao MDI temos uma janela principal (pai) que gerencia as
outras janelas (filhas). No Delphi podemos criar ambas, no entanto, por
padro so criadas aplicaes SDI.
3) Para que servem os componentes da Guia BDE? Eles permitem acessar
bancos de dados atravs da engine BDE.
4) Qual a funo dos componentes da Guia Data Controls? Eles permitem
construir janelas para visualizao e manuteno conectadas
diretamente a componentes de acesso a dados, executando as
operaes bsicas de leitura/gravao sem que seja necessrio
programao extra.
5) Qual a funo do componente DataSource? O DataSource liga os
componentes Data Controls aos componentes de acesso a dados, das
guias BDE, ADO, dbExpress e Interbase.
Capitulo 4
1) Qual a funo propriedade EditMask? Facilitar a digitao de dados
atravs de uma mscara de entrada de dados.
2) Qual o evento que devemos utilizar para inicializar valores num
campo? O evento OnNewRecord.
3) Para que serve a propriedade CharCase? Para especificar se a
digitao ser normal (da forma como for digitada) ou dever ser fixada
em maisculo ou minsculo.
4) Qual a utilizade do mtodo Locate? Localizar informaes nas tabelas
de dados.
5) Para que serve a funo InputQuery? Cria uma caixa de dilogo para a
entrada de informaes.
158
Capitulo 5
1) Para que serve a propriedade Glyph presente em alguns tipos de boto?
Ela permite que o boto apresente uma imagem alm do texto.
2) Como podemos ocultar os botes do DBNavigator? Desativando as subpropriedades da propriedade VisibleButtons.
3) Qual a melhor maneira para se inserir um determinado componente
em um Form vrias vezes? Pressionando-se a tecla Shift antes de
seleciona-lo. Depois clica-se quantas vezes se deseja que o
componente seja inserido e libera-se a duplicao clicando no cone de
seta na paleta de componentes.
4) Qual a finalizade de campos LookUp? Exibir informaes vindas de
outra tabela relacionadas atravs de um campo da tabela atual.
5) Qual a finalizade de campos Calculated? Criar campos calculados (com
frmulas) que so atualizados automaticamente, quando algum dos
seus itens modificado.
Captulo 6
1) Quais so os principais mtodos de pesquisa do componente Table?
So os mtodos FindKey / FindNearest e Locate.
2) Como podemos alterar dinamicamente o tamanho de um formulrio?
Modificando suas propriedades Height (altura) e Width (largura).
3) Qual a funcionalidade do componente PageControl? Ele permite a
criao de pginas que permitem separa itens na interface, como
acontece nas caixas de dilogo do Windows de propriedade de vdeo,
etc.
4) Para que serve as estruturas de controle de exceo try..finally..end?
Serve para criar uma proteo a execuo de uma rotina, garantindo
que os comandos escritos aps o finally sero executados mesmo que
ocorra algum erro nos comandos entre o try e o finally.
5) Qual o mtodo utilizado para sincronizar a posio de registro de dois
componentes Table configurados para acessar a mesma tabela? o
mtodo GotoCurrent.
Captulo 7
1) Para que serve o Componente ImageList? um continer (repositrio)
para o armazenamento de imagens que sero utilizadas por menus,
barras de ferramenta, etc.
159
160