Escolar Documentos
Profissional Documentos
Cultura Documentos
Biblioteca 113 ND 42
Biblioteca 113 ND 42
3URJUDPDom
omR
R'
' H O SK L
DSRLDQGR
RDF
DFR
RQVWUXomRG
RGHH
DSOLFDWLYRV
VG
GH
H%
%DVHV
VG
GH
H'
'DGR
GRVV
Enzo Seraphim
Renata Pontin de Mattos Fortes
Notas Didticas n0 42
ndice
1
INTRODUO ............................................................................................................................................ 4
1.1 PRINCIPAIS CARACTERSTICAS DO DELPHI.................................................................................................. 4
1.2 CARACTERSTICAS DO DELPHI CLIENT/SERVER.......................................................................................... 5
NOMENCLATURA ...................................................................................................................................... 28
PROPRIEDADES ......................................................................................................................................... 28
EVENTOS................................................................................................................................................... 29
MTODOS ................................................................................................................................................. 30
JANELAS ................................................................................................................................................... 30
COMPONENTES PADRO ........................................................................................................................... 31
CAIXAS DE DILOGO ................................................................................................................................ 35
MENUS...................................................................................................................................................... 35
CLASSES NO VISUAIS ............................................................................................................................. 36
BIBLIOTECA DE CLASSES.................................................................................................................... 28
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
RELATRIOS ........................................................................................................................................... 54
6.1
6.2
6.3
6.4
7
IMPRESSO DE TEXTO............................................................................................................................... 54
IMPRESSO GRFICA ................................................................................................................................ 54
IMPRESSO COM O REPORTSMITH ............................................................................................................ 55
IMPRESSO COM O QUICKREPORT ............................................................................................................ 55
CONCLUSO ............................................................................................................................................ 58
INTRODUO
A disciplina de Laboratrio de Base de Dados ministrada aos alunos de cursos de Computao visa
proporcionar o desenvolvimento de aplicaes prticas utilizando sistemas de gerenciamento de bases
de dados relacionais e ferramentas de apoio. Alm disso, como disciplina optativa, ela proporciona a
consolidao da teoria apresentada na disciplina de Banco de Dados que seu pr-requisito.
Para tanto, aulas expositivas seguidas de demonstrao prtica em laboratrio tm sido
adotadas como metodologia do ensino. Os exerccios so ento elaborados em aulas de laboratrio
assistidas.
Nesse contexto, este conjunto de notas didticas se destina a viabilizar um suporte para a
utilizao de Delphi como ferramenta de apoio para as prticas necessrias de disciplinas que em seu
contedo programtico, contam com o desenvolvimento de aplicativos de Bases de Dados tendo por
front-end a programao em Delphi. Este material foi em grande parte coletado de informaes
disponveis na World-Wide Web.
Desde que a primeira verso do Delphi foi lanada, em 1995, tem se mostrado muito atrativo
para o desenvolvimento em ambiente operacional Windows. Numa relao com outros ambientes de
programao, podemos dizer que o Delphi possui muitos dos recursos poderosos do C++ e a facilidade
do Visual Basic.
A principal vantagem do Delphi est na linguagem usada, Object Pascal, que uma evoluo
do Pascal padro. O Pascal surgiu no final dos anos 60 e, at hoje, usada como uma das primeiras
linguagens de programao para estudantes de computao. Em 1984, a Borland lanou o Turbo
Pascal, que se firmou como um bom compilador de Pascal para o mercado e, a partir de ento, passou
a incluir novos recursos nesta linguagem, como Units e Objetos, at a ascenso do Windows, quando
foi lanado o Turbo Pascal for Windows. Depois surgiu o Borland Pascal, cuja linguagem
considerada a primeira verso da Object Pascal. Na sua verso atual, usada pelo Delphi, a Object
Pascal uma linguagem slida e respeitada, sem perder sua peculiar facilidade.
No Delphi, a criao de aplicativos comea com a montagem de componentes em janelas,
como se fosse um programa grfico, o usurio tambm pode utilizar de componentes desenvolvidos
por terceiros ou criar seus prprios componentes.
O Delphi vem com todas as ferramentas necessrias para a criao de bancos de dados dBase e
Paradox, alm de uma verso do Interbase, permitindo a criao de aplicativos com banco de dados
sem a necessidade de aquisio de outro programa. O Delphi tambm tem acesso a bases de dados
como Foxpro, Access, Informix, SYBASE, Oracle, SQL Server e DB2, alm de qualquer outro banco
de dados para Windows compatvel com ODBC.
Atualmente, podem ser encontradas as seguintes verses de Delphi:
Delphi Standard para estudantes, sem classes para armazenamento de estruturas de dados.
Delphi Professional com classes para armazenamento de estruturas de dados, mas sem suporte
a arquitetura cliente/servidor.
Delphi Client/Server Suite verso completa com fontes dos componentes.
1.1
1.2
Tow-Way Tools - a capacidade de alternar entre um form e seu cdigo permite aos
desenvolvedores trabalhar tanto na edio de texto como no modo de design visual atravs de total
sincronizao do cdigo fonte com a representao visual.
Biblioteca de Componentes Visuais - a biblioteca de componentes visuais (VCL-Visual
Component Library) consiste de objetos reutilizveis incluindo objetos padro de interface com o
usurio, gerenciamento de dados, grficos e multimidia, gerenciamento de arquivos e quadros de
dialogo padro. A Client/Server edition inclui o cdigo fonte do Visual Component Library.
Arquitetura Aberta - a arquitetura do IDE permite adicionar componentes e ferramentas
personalizadas e de terceiros.
Linguagem Orientada a Objetos - o Delphi utiliza o Object Pascal, que oferece a facilidade de
programao em 4GL de alto nvel com a performance e poderio de um 3GL. Fluxo de
programao baseado em eventos. Suporte a manipulao de excees, que permite criar
aplicaes mais robustas e com maior segurana.
Suporte Tecnologia do Windows - o Delphi compatvel com a tendncia da tecnologia
Windows, incluindo suporte a OLE 2.0,DDE, DCOM, VBXs e ODBC.
Depurador Grfico - o Debugger permite encontrar e eliminar "bugs" em seu cdigo.
Edio Estilo Brief - o Editor permite a utilizao de um conjunto de smbolos para expresses.
Consulte Brief Regular Expressions no Help on-line.
Ambiente Personalizvel - a opo de menu Environment Options permite personalizar seu
ambiente para o mximo de produtividade.
Object Browser - o Object Browser permite a visualizao da hierarquia dos objetos na visual
component library.
Gerenciador de Projetos - o Project Manager oferece uma visualizao de todos os forms e units
de um determinado projeto e oferece um mecanismo conveniente para gerenciar projetos.
Experts - Uma variedade de Experts o guia atravs do desenvolvimento de tipos padres de
forms. Por exemplo, o Database form expert auxilia-o na construo de forms que exibam dados
em bancos de dados locais ou remotos.
Gerador de Relatrios - o ReportSmith oferece a mais avanada ferramenta de gerao de
relatrios para desenvolvedores que precisem criar relatrios que acessem grandes volumes de
dados, com utilizao de componentes nativos.
Caractersticas do Delphi Client/Server
Conectividade de Alta Performance - os SQL Links oferecem acesso de alta performance aos
drives nativos, conectando com bancos de dados populares, incluindo Oracle, Sybase,Informix, e
InterBase.
Suporte a Team Development - Intersolv PVCS permite que grupos de desenvolvedores
trabalhem juntos com cdigos fonte integrados, check-in, check-out e gerenciamento de controle
de verso.
Construtor Visual de Query - o Visual Query Builder oferece uma ferramenta visual para criar
facilmente queries sofisticadas e gerar automaticamente o cdigo SQL correspondente.
Objetos Distribudos - capacidade de criao de aplicaes multi-tier, com objetos distribudos
com Corba.
O AMBIENTE Delphi
2.1
Quando o desenvolvedor abre um projeto no Delphi, j lhe mostrada uma UNIT com vrias linhas de
cdigo. Este texto tem como objetivo explicar um pouco da estrutura que ele usa.
Um projeto Delphi tem, inicialmente, duas divises: uma UNIT, que associada a um Form, e
outra Project, que engloba todos os FORM e UNITs da aplicao. Em Delphi temos: o Project, os
Forms e as Units. Para todo Form temos pelo menos uma UNIT (Cdigo do Form), mas temos UNITs
sem Form (cdigos de procedures, funes, etc). A figura a seguir ilustra a formao de uma aplicao
Delphi e o Quadro 1 lista as extenses dos arquivos gerados no desenvolvimento de aplicativos em
Delphi.
TESTE
.EXE
.DPR
FORM 1
FORM 2
FORM N
.DCU
.DCU
.DCU
FORM 1
FORM 2
.DFM
UNIT 1
.DFM
.PAS
Extenso
Arquivo
.DPR
.PAS
.DFM
.OPT
.RES
FORM N
.DFM
UNIT 2
.PAS
UNIT N
.PAS
ROTINAS
.PAS
.~DP
.~PA
.~DF
.DSK
Arquivo de Backup do
Projeto
Arquivo de Backup da Unit
Backup do Arquivo grfico
do formulrio
Situao da rea de
Trabalho
Obs.: .~DF, .~PA , .~DP so arquivos de backup( Menu Options, Enviroment, Guia Editor Display,
Caixa de Grupo Display and file options, opo Create Backup Files, desativa o seu salvamento).
Devido a grande quantidade de arquivos de uma aplicao, cada projeto deve ser montado em
um diretrio especfico.
2.2
Neste arquivo est descrito o cdigo de criao da aplicao e de seus formulrios. O arquivo Project
tem apenas uma seo. Esta seo formada pelo seguinte cdigo:
PROGRAM - Define o Projeto;
USES - Clusula que inicia uma lista de outras unidades.
Forms = a unidade do Delphi que define a forma e os componentes do aplicativo
In = A clausula indica ao compilador onde encontrar o arquivo Unit.
Unit1 = A unidade que voc criou
{$R *.RES} - Diretiva compiladora que inclui o arquivo de recursos.
Quando se abre um projeto novo, o Project possuir o seguinte contedo:
program Project1;
uses
Forms,
Unit1 in 'UNIT1.PAS' {Form1};
{$R *.RES}
begin
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
2.3
Nesta diviso so escritos os cdigos dos seus respectivos forms (Unit1 = Form1). Assim, so
definidos os cdigos de cada procedimento dos componentes que voc colocar no Form.
Seo Unit - declara o nome da UNIT.
Seo Uses - contm as UNITS acessadas por este arquivo.
Seo Interface - nesta seo esto as declaraes de constantes, tipos de variveis, funes e
procedures gerais da Unit/Form. As declaraes desta seo so visveis por qualquer Unit. Esta
seo formada pelo seguinte cdigo:
INTERFACE - palavra que inicia a seo;
USES - clusula que inicia uma lista de outras unidades compiladas (units) em que se basea:
SysUtils = utilitrios do sistema (strings, data/hora, gerar arquivos)
7
unit Unit1;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{Uses Adicional}
{Initialization}
end.
2.4
Extenso Arquivo
.EXE
Definio
Funo
Arquivo compilado
executvel
.DCU
Obs.: Estes arquivos podem ser apagados para economizar espao em disco.
2.5
Ambiente de Programao
Janela Principal - a janela principal do Delphi composta pela barra de menus, barra de
ferramentas e paleta de componentes. Para personalizar a barra de ferramentas, basta clicar em
Properties no menu de contexto. Na paleta de componentes esto os controles usados nas
aplicaes, agrupados em guias por categorias.
Object Inspector - no Object Inspector podemos manipular, em tempo de projeto, as propriedades
e eventos dos componentes. Voc tambm pode selecionar um componente usando o Seletor de
Objetos, no topo do Object Inspector.
Propriedades - so as caractersticas de um componente. Para mudar uma propriedade, selecione
o componente no Form Designer ou no Object Selector, localize a propriedade, na guia Properties
e mude o valor na coluna direita. A edio de propriedades pode ser simples, por lista suspensa,
caixa de dialogo ou com propriedades aninhadas.
Eventos - numa definio inicial, eventos podem ser vistos como chamadas a mtodos em
resposta a determinadas mensagens do Windows. Para criar um mtodo para um evento, selecione
o componente e clique duas vezes na coluna direita do evento na guia Events do Object
Inspector, o Delphi faz todas as declaraes necessrias e mostra o mtodo pronto para ser
programado no Editor de Cdigo. Para que um evento chame um mtodo j definido, em vez de
clicar duas vezes na coluna direita do evento, voc deve usar a lista suspensa.
Form Designer - o Form Designer onde so desenhados os Forms das aplicaes, com a
insero de componentes. No menu de contexto do Form, voc pode clicar em View as Text para
editar a descrio textual do Form e de seus componentes no Editor de Cdigo, essas informaes
so gravadas em um arquivo binrio com a extenso DFM, para voltar ao modo de exibio
normal, escolha View as Form no menu de contexto do Editor de Cdigo.
Manipulando Componentes
Incluir: Selecionar o componente na paleta e clicar no Form Designer.
Redimensionar: Clicar no componente e arrastar as alas de borda. Podemos usar
SHIFT+SETAS para redimensionar o componente fora da grade de alinhamento do Form.
Mover: Arrastar o componente. Podem ser usadas tambm operaes de recortar, copiar e
colar, alm de CTRL+SETAS para mover o componente para fora da grade de
alinhamento do Form.
Selecionar: Segurar SHIFT para selecionar vrios componentes individuais e CTRL para
escolher uma rea retangular do Form e selecionar todos os componentes nesta rea.
Alinhamento: Para alinhar componentes selecione-os e escolha View / Alignment Palette.
Menu de Contexto: Bring To Front / Send To Back, para trazer o componente para frente
ou enviar para trs, Tab Order para mudar a ordem de tabulao, alm de Align To Grid,
para alinhar os componentes selecionados Grade do Form Designer.
Editor de Cdigo - para escrever o cdigo, usamos o Editor de Cdigo do Delphi. Para cada Form
criado um cdigo, que gravado em arquivos chamados Units. Nesses arquivos definida a
classe do Form e seus mtodos de eventos. Para alternar entre o Form e sua Unit podemos clicar
Ajuda - o sistema de ajuda do Delphi a referncia mais completa, seguida pelos manuais do
usurio cedidos com o sistema. Se quiser ajuda sobre um componente, selecione-o e aperte F1, o
mesmo pode ser feito com propriedades e eventos, no Object Inpector e comandos, no editor de
cdigo.
3.1
Antes de partir para a linguagem propriamente dita, devemos considerar, de forma prtica, alguns
conceitos bsicos de Programao Orientada a Objetos.
Classe: definio de tipo dos objetos, modelo de objeto.
Objeto: instncia de classe, varivel cujo tipo uma classe.
Atributos: variveis de instncia que so os dados de um objeto.
Mtodos: funes e procedimentos de um objeto.
Propriedades: apelido usado para evitar o acesso direto aos atributos de um objeto, onde podemos
especificar mtodos que sero usados para ler e atribuir seus valores a esses atributos.
Mensagens: chamada de mtodos, leitura e atribuio de propriedades.
Encapsulamento: conjunto de tcnicas usadas para limitar o acesso aos atributos e mtodos internos
de um objeto.
Herana: possibilidade de criar uma classe descendente de outra, aproveitando seus mtodos,
atributos e propriedades.
Ancestral: super classe ou classe de base, a partir da qual outras classes podem ser criadas.
Descendente: subclasse.
Hierarquia de Classes: conjunto de classes ancestrais e descendentes, geralmente representadas em
uma rvore hierrquica.
Polimorfismo: capacidade de redefinir mtodos e propriedades de uma classe em seus descendentes.
3.2
Variveis
No Delphi, toda varivel tem que ser declarada antes de ser utilizada. As declaraes podem ser feitas
aps a palavra reservada var, onde so indicados o nome e o tipo da varivel. Os nomes de variveis
no podem ter acentos, espaos ou caracteres especiais como &, $ ou % e o primeiro caractere de um
nome de varivel tem que ser uma letra ou um sublinhado. O Delphi ignora o caso das letras.
Variveis Globais
As variveis abaixo so globais, declaradas da Interface da Unit. Podem ser acessadas por qualquer
Unit usuria.
var
I: Integer;
Usuario: string;
A, B, Soma: Double;
Ok: Boolean;
Variveis Locais
As variveis abaixo so locais ao mtodo, ou seja, elas s existem dentro do mtodo, no podem ser
acessadas de fora, mesmo que seja na mesma Unit. Na verdade essas variveis so criadas quando o
mtodo chamado e destrudo quando ele encerrado, seu valor no persistente.
11
3.3
Atributos
Os atributos so variveis de instncia. Para declarar um atributo em uma classe basta definir o
identificador e o tipo do atributo na declarao da classe, feita na seo type da Interface da Unit,
como abaixo.
type
TFrmSomar = class(TForm)
private
{ Private declarations }
A, B: Double;
public
{ Public declarations }
Soma: Double;
end;
3.4
Encapsulamento
Os principais nveis de visibilidade dos atributos e mtodos de uma classe so mostrados abaixo.
Nvel
Visibilidade
Os itens declarados nesse nvel s podem ser acessados na mesma unit.
Nesse nvel, qualquer unit usuria poder acessar o item.
Os itens s podero ser acessados em outra unit se for em uma classe descendente
o nvel default, igual ao Public, mas define propriedades e eventos usados em
tempo de projeto.
Private
Public
Protected
Published
3.5
Classes
Classes so tipos de objetos, uma classe declarada na clusula type da seo interface e os mtodos
so definidos na seo implementation. Examine o cdigo de um Form para identificar os elementos
de sua classe.
interface
type
TFrmSomar = class(TForm)
EdtA: TEdit;
EdtB: TEdit;
BtnSoma: TButton;
procedure BtnSomaClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
procedure TFrmSoma.BtnSomaClick(Sender: TObject);
begin
ShowMessage(EdtA.Text + EditB.Text);
end;
12
3.6
Objetos
Um Objeto tratado como uma varivel cujo tipo uma classe. A declarao de objetos igual
declarao de uma varivel simples, tendo no lugar do tipo a classe do objeto.
var
FrmSomar: TFrmSomar;
3.7
Literais
Valores literais so valores usados em atribuies e expresses. Cada tipo tem uma sintaxe diferente.
Tipo
Inteiro
Inteiro Hexadecimal
Real
Caractere
String
3.8
Definio
Seqncia de dgitos decimais (0 a 9), sinalizados ou no
Seqncia de dgitos hexadecimais (0 a F), precedidos por um sifro ($)
Igual ao tipo Inteiro, mas pode usar separador decimal e notao cientfica
Letra entre apstrofos ou o caracter # seguido de um nmero inteiro entre 0 e 255 (ASCII)
Seqncia de caracteres delimitados por apstrofos
Constantes
So declaradas na seo const, podem ser usadas como variveis, mas no podem ser alteradas.
Geralmente o nome das constantes escrito em letras maisculas e na declarao dessas constantes
no indicado o tipo.
const
G = 3.94851265E-19;
NUM_CHARS = '0123456789';
CR = #13;
SPACE = ' ';
MAX_VALUE = $FFFFFFFF;
Constantes Tipadas
Na verdade, constantes tipadas so variveis inicializadas com valor persistente, que podem ser
alteradas normalmente, como qualquer varivel. A nica diferena de sintaxe entre constantes tipadas
e simples que o tipo da constante indicado explicitamente na declarao. Se uma constante tipada
for declarada localmente, ela no ser destruda quando o mtodo for encerrado. Para diferenciar das
constantes normais, costuma-se declarar estas com letras de caso varivel, como abaixo.
const
Cont: Integer = 1;
Peso: Double = 50.5;
Empresa: string = 'SENAC';
3.9
Instrues
13
possvel se usar vrias instrues agrupadas em uma instruo composta, como se fosse uma s
instruo. Uma instruo composta delimitada pelas palavras reservadas begin e end. Toda instruo,
simples ou composta, terminada com um ponto-e-vrgula.
if CheckBox1.Checked then
begin
ShowMessage('O CheckBox ser desmarcado.');
CheckBox1.Checked := False;
end;
Estilo de Codificao
As instrues e todo o cdigo de uma Unit devem ser distribudos para facilitar o mximo a leitura.
Para isso, podemos usar a indentao, geralmente de dois espaos para indicar os nveis de cdigo.
Procure criar um estilo prprio, que melhor se molde sua realidade. Se for desenvolver em grupo,
melhor que todos usem o mesmo estilo para evitar confuses.
3.10
Comentrios
Cuidado com as diretivas de compilao, pois elas so delimitadas por chaves e podem ser
confundidas com comentrios. A diretiva de compilao mostrada abaixo includa em todas as Units
de Forms.
{$R*.DFM}
3.11
O Delphi trata vrios tipos de dados padro, segue uma descrio sucinta desses tipos.
Tipos Inteiros
So tipos numricos exatos, sem casas decimais. O tipo Integer o tipo inteiro padro.
Tipo
Tamanho em Bytes
Valor Mnimo
Valor Mximo
ShortInt
SmallInt
Longint
Byte
Word
Integer
Cardinal
1
2
4
1
2
4
4
-128
-32768
-2147483648
0
0
-2147483648
0
127
32767
2147483647
255
65535
2147483647
2147483647
Tipos Reais
So tipos numricos com casas decimais. O tipo Double o tipo real padro.
Tipo
Tamanho em Bytes
Valor Mnimo
Valor Mximo
Dgitos Significativos
Real
Single
Double
Extended
Comp
Currency
6
4
8
10
8
8
10-39
10-45
10-324
10-4932
-1018
-1012
1038
1038
10308
104932
1018
1012
11-12
7-8
15-16
19-20
19-20
19-20
Tipos Texto
Os tipos texto podem operar com caracteres simples ou grupos de caracteres. O tipo texto padro o
tipo string.
14
Descrio
Um nico caractere ASCII
Texto alocado dinamicamente, pode ser limitado a 255 caracteres conforme configurao
String terminada em nulo (#0), usada geralmente nas funes da API do Windows
Char
String
PChar
O operador + pode ser usado para concatenar strings e voc pode usar uma varivel do tipo string
como uma lista de caracteres.
ShowMessage('5 letra do ttulo da janela: ' + Caption[5]);
Label1.Text := '2 letra do Edit: ' + Edit1.Text[2];
Existem vrias funes de manipulao de strings, veja algumas das mais importantes mostradas
abaixo.
Funo
AnsiCompareText
AnsiLowerCase
AnsiUpperCase
Copy
Delete
Insert
Length
Pos
Trim
TrimLeft
TrimRight
Format
Descrio
Compara 2 strings sem sensitividade de maisculas/minsculas
Converte todas as letras de uma string para minsculas
Converte todas as letras de uma string para maisculas
Retorna parte de uma string
Apaga parte de uma string
Insere uma string em outra
Nmero de caracteres de uma string
Posio de uma string em outra
Remove todos os espaos de uma string
Remove os espaos esquerda de uma string
Remove os espaos direita de uma string
Formata uma string com uma srie de argumentos de vrios tipos
Por exemplo, para comparar o texto de dois Edits, poderamos usar a funo AnsiCompareText.
if AnsiCompareText(EdtA.Text, EdtB.Text) = 0 then
ShowMessage('O texto dos dois Edits so iguais.');
Um detalhe que deve ser observado que as propriedades dos objetos no podem ser usadas
como variveis em funes. Veja a declarao do procedimento Delete no help.
procedure Delete(var S: string; Index, Count:Integer);
Digamos que voc deseje apagar as 5 primeiras letras de um Edit, como a string do Delete
varivel, no poderia usar o cdigo abaixo.
Delete(Edit1.Text, 1, 5);
Para voc poder fazer a operao desejada, teria que usar uma varivel como varivel auxiliar.
var
S: string;
begin
S := Edit1.Text;
Delete(S, 1, 5);
Edit1.Text := S;
end;
Tipos Ordinais
Tipos ordinais so tipos que tem uma seqncia incremental, ou seja, voc sempre pode dizer qual o
prximo valor ou qual o valor anterior a um determinado valor desses tipos. So tipos ordinais o Char,
15
os tipos inteiros, o Boolean e os tipos enumerados. Algumas rotinas para ordinais so mostradas
abaixo.
Funo
Descrio
Dec
Inc
Odd
Pred
Succ
Ord
Low
High
Por exemplo, use o cdigo abaixo no evento OnKeyPress de um Edit e veja o resultado.
Inc(Key);
Boolean
Variveis do tipo Boolean podem receber os valores lgicos True ou False, verdadeiro ou falso. Uma
varivel Boolean ocupa 1 byte de memria.
TDateTime
O tipo TDateTime guarda data e hora em uma estrutura interna igual ao tipo Double, onde a parte
inteira o nmero de dias desde 31/12/1899 e a parte decimal guarda a hora, minuto, segundo e
milissegundo. As datas podem ser somadas ou subtradas normalmente.
Existem vrias rotinas de manipulao de datas e horas, usadas com o tipo TDateTime, veja
algumas a seguir.
Rotina
Descrio
Date
Now
Time
DayOfWeek
DecodeDate
DecodeTime
EncodeDate
EncodeTime
No help de cada uma das funes acima voc vai encontrar alguns exemplos, veja os colocados
abaixo.
if DayOfWeek(Date) = 1 then
ShowMessage('Hoje Domingo, p de cachimbo!')
else
ShowMessage('Hoje no Domingo, p de cachimbo!');
var
A, M, D: Word;
begin
DecodeDate(Date, A, M, D);
ShowMessage(Format('Dia %.2d do ms %.2d de %d.', [D, M, A]));
end;
16
Variant
Tipo genrico, que pode atribuir e receber valores de qualquer outro tipo. Evite usar variveis do tipo
Variant, pois o uso dessas variveis pode prejudicar o desempenho do programa, alm de diminuir a
legibilidade do cdigo fonte e a integridade do executvel, veja o trecho de cdigo abaixo e note como
esse tipo de varivel tem um comportamento estranho.
var
V1, V2, V3: Variant;
begin
V1 := True;
V2 := 1234.5678;
V3 := Date;
ShowMessage(V1 + V2 + V3);
end;
3.12
Converses de Tipo
Freqentemente voc vai precisar converter um tipo de dado em outro, como um nmero em uma
string. Para essas converses voc pode usar duas tcnicas, o TypeCasting e as rotinas de converso de
tipos.
TypeCasting - uma converso direta de tipo, usando o identificador do tipo destino como se
fosse uma funo. Como o Delphi no faz nenhuma verificao se a converso vlida, voc deve
tomar um certo cuidado ao usar um TypeCast para no criar programas instveis.
var
I: Integer;
C: Char;
B: Boolean;
begin
I := Integer('A');
C := Char(48);
B := Boolean(0);
Application.MessageBox(PChar('Linguagem de Programao' + #13 + 'Delphi 3'),
'SENAC',
MB_ICONEXCLAMATION);
end;
Rotinas de Converso
As principais rotinas de converso esto listadas na tabela abaixo. Caso voc tente usar uma dessas
rotinas em uma converso invlida, pode ser gerada uma exceo.
Rotina
Chr
StrToInt
IntToStr
StrToIntDef
IntToHex
Round
Trunc
StrToFloat
FloatToStr
FormatFloat
DateToStr
StrToDate
TimeToStr
StrToTime
DateTimeToStr
StrToDateTime
FormatDateTime
Descrio
Byte em Char
String em Integer
Integer em String
String em Integer, com um valor default caso haja erro
Nmero em String Hexadecimal
Arredonda um nmero real em um Integer
Trunca um nmero real em um Integer
String em Real
Real em string
Nmero real em string usando uma string de formato
TDateTime em string de data, de acordo com as opes do Painel de Controle
String de data em TDateTime
TDateTime em Strind de Hora
String de hora em TDateTime
TDateTime em string de data e hora
String de data e hora em TDateTime
TDateTime em string usando uma string de formato
17
VarCast
VarAsType
Val
Str
Veja alguns exemplos de como usar essas rotinas. Converso de dados uma operao muito
comum na programao em Object Pascal, seeria interessante dar uma olhada no help de cada uma das
funes acima.
var
I: Integer;
D: Double;
S1, S2: string;
begin
D := 10.5;
I := Trunc(D);
S1 := FloatToStr(D);
S2 := IntToStr(I);
ShowMessage(S1 + #13 + S2);
end;
var
A, B, Soma: Bouble;
begin
A := StrToFloat(EdtA.Text);
B := StrToFloat(EdtB.Text);
Soma := A + B;
ShowMessage(Format('%f + %f = %f', [A, B, Soma]);
end;
3.13
Expresses
A + 12 * C
Date - 4
StrToInt(Edit1.Text + Edit2.Text)
StrToDate(Edit2.Text) - StrToDate(Edit1.Text)
12 * A / 100
A < B
3.14
Operadores
@
not
18
and
shl
shr
Operadores Aditivos
+
or
xor
Operadores Relacionais
Igual
Diferente
Menor
Maoir
Menor ou igual
Maior ou igual
Pertinncia a conjuntos
Compatibilidade de tipos (RTTI)
=
<>
<
>
<=
>=
in
is
Para forar uma expresso de menor precedncia a ser executada antes, voc pode usar os
parnteses, como mostrado abaixo.
(5 - 2) * 3;
(A > B) and (A < C)
Para fazer potenciao, use a funo Power, abaixo temos que A igual a A elevado a 4.
A := Power(A, 4);
3.15
Estruturas de Deciso
Case - permite que o fluxo da execuo seja desviado em funo de vrias condies de acordo com o
valor do argumento, que tem que ser ordinal, caso o valor do argumento no corresponda a nenhum
dos valores listados, podemos incluir um else.
case Ch of
' ': ShowMessage('Espao');
'0'..'9': ShowMessage('Dgito');
'+', '-', '*', '/': ShowMessage('Operador');
else
ShowMessage('Caractere especial');
end;
case
0:
1:
2:
end;
3.16
CbbBorda.ItemIndex of
BorderStyle := bsDialog;
BorderStyle := bsSingle;
BorderStyle := bsSizeable;
Estruturas de Repetio
While - executa uma instruo at que uma condio deixe de ser verdadeira.
19
For - executa uma instruo um nmero determinado de vezes, incrementando uma varivel de
controle automaticamente a cada iterao. Caso seja preciso que a contagem seja decremental, pode-se
usar downto em vez de to.
for I := 1 to ComponentCount do
ShowMessage('O ' + IntToStr(I) + ' Componente ' + Components[I 1].Name);
for I := Length(Edit1.Text) downto 1 do
ShowMessage(Edit1.Text[I]);
Quebras de Lao - em qualquer um dos laos mostrados podemos usar o procedimento Break para
cancelar a repetio e sair do lao, podemos tambm forar a prxima iterao com o procedimento
Continue.
I := 1;
while true do
begin
Inc(I);
if I < 10000000 then
Continue;
ShowMessage('Chegamos a dez milhes');
Break;
end;
3.17
O usurio tambm pode declarar tipos no definidos pelo Delphi. Essas declaraes so feitas na seo
type, da interface ou implementation, sendo que na implementation esses tipos no podero ser usados
em outras Units. Mas, de fato, dificilmente voc ter que definir tipos, a no ser classes, pois os tipos
padro do Delphi so o bastante para a maioria das aplicaes.
Strings Limitadas - caso se deseje limitar o nmero de caracteres que uma string pode receber,
podemos criar um tipo de string limitada.
TNome = string[40];
TEstado = string[2];
20
Enumeraes - define uma seqncia de identificadores como valores vlidos para o tipo. A cada
elemento da lista de identificadores associado internamente um nmero inteiro, iniciando pelo
nmero 0, por isso so chamados de tipos enumerados.
TBorderIcon = (biSystemMenu, biMinimize, biMaximize, biHelp);
TDiaSemana = (Seg, Ter, Qua, Qui, Sex, Sab, Dom);
Records - o tipo record uma forma de criar uma nica estrutura com valores de diferentes tipos de
dados. Cada um dos dados de um record chamado de campo.
TData = record
Ano: Integer;
Mes: TMes;
Dia: Byte;
end;
var
Festa: TData;
begin
Festa.Ano := 1997;
Festa.Mes := Mai;
Festa.Dia := 8;
end;
Arrays - Fornecem uma forma de criar variveis que contenham mltiplos valores, como em uma
lista ou tabela, cujos elementos so do mesmo tipo. A seguir, alguns exemplos de arrays de dimenses
variadas.
TTempDia = array [1..24] of Integer;
TTempMes = array [1..31, 1..24] of Integer;
TTempAno = array [1..12, 1..31, 1..24] of Integer;
var
TD: TTempDia;
I: Integer;
begin
for I := 1 to 24 do
TD[I] := StrToIntDef(InputBox('Temperaturas', 'Digite a temperatura na
hora '
+ IntToStr(I), ''), 30);
end;
Um array pode ser definido como constante tipada, onde todos os seus elementos devem ser
inicializados.
FAT: array[1..7] of Integer = (1, 2, 6, 24, 120, 720, 5040);
O tipo dos elementos de um array pode ser qualquer um, voc pode ter uma array de objetos, de
conjuntos, de qualquer tipo que quiser, at mesmo um array de arrays.
TTempMes = array [1..31] of TTempDia;
TBtnList = array [1..10] of TButton;
Sets - So conjuntos de dados de um mesmo tipo, sem ordem, como os conjuntos matemticos.
Conjuntos podem conter apenas valores ordinais, o menor que um elemento pode assumir zero e o
maior, 255.
TBorderIcons = set of BorderIcon;
21
Os conjuntos podem ser definidos como constantes ou constantes tipadas, como abaixo.
DIG_HEXA = ['0'..'9', 'A'..'Z', 'a'..'z'];
DIG_HEXA: set of Char = ['0'..'9', 'A'..'Z', 'a'..'z'];
3.18
As aes de um objeto devem ser definidas como mtodos. Quando a ao no pertence a um objeto,
como uma transformao de tipo, essa ao deve ser implementada em forma de procedimentos e/ou
funes.
Procedimentos
So sub-rotinas, que realizam uma tarefa e no retornam um valor. A declarao de um procedimento
feita na seo interface e a definio, na seo implementation. Ao chamar o identificador do
procedimento, com os parmetros necessrios, esse procedimento ser executado. Veja abaixo o
exemplo de uma unit com a implementao um procedimento.
unit Tools;
interface
procedure ErrorMsg(const Msg: string);
implementation
uses Forms, Windows;
procedure ErrorMsg(const Msg: string);
begin
Application.MessageBox(PChar(Msg), 'Operao invlida', MB_ICONERROR);
end;
end.
Funes
So muito semelhantes com procedimentos; a nica diferena que as funes retornam um valor. O
tipo do valor de retorno deve ser informado no cabealho da funo. Na implementao da funo
deve-se atribuir o valor de retorno palavra reservada Result ou ao identificador da funo. Pode-se
ento usar a funo em expresses, atribuies, como parmetros para outras funes, em qualquer
lugar onde o seu valor possa ser usado.
function Average(A, B: Double): Double;
begin
Result := (A + B) / 2;
end;
Mtodos
So funes ou procedimentos que pertencem a alguma classe, passando a fazer parte de qualquer
objeto dessa classe. Na implementao de um mtodo precisamos indicar qual a classe qual ele
pertence. Para chamar um mtodo em algum lugar no pertencente sua classe, como procedimentos,
funes ou mtodos de outras classes, deve ser indicado o objeto que deve executar o mtodo. Os
mtodos usam os mesmos nveis de encapsulamento dos atributos.
type
TFrmMsg = class(TForm)
LblMsg: TLabel;
BtnOk: TButton;
BtnCancelar: TButton;
ImgMsg: TImage;
public
22
Parmetros
Existem trs tipos de passagem de parmetros, que devem ser indicados na declarao da funo ou
procedimento. Parmetros de tipos diferentes de vem ser separados por ponto e vrgula.
function MultiStr(const S: string;
3.19 With
Usado para facilitar o acesso s propriedades e mtodos de um objeto.
with Edt do
begin
CharCase := ecUpperCase;
MaxLenght := 10;
PasswordChar := '*';
Text := 'Brasil';
end;
3.20
Self
Self usado quando se quer referenciar a instncia atual da classe. Se voc precisar referenciar a
instncia atual de uma classe, prefervel usar Self em vez de usar o identificador de um Objeto, isso
faz com que o cdigo continue funcionando para as demais instncias da classe e em seus
descendentes.
var
Btn: TBitBtn;
begin
Btn := TBitBtn.Create(Self);
With Btn do
begin
Parent := Self;
Kind := bkClose;
Caption := '&Sair';
Left := Self.ClientWidth - Width - 8;
Top := Self.ClientHeight - Height - 8;
end;
end;
23
Porm, se voc no precisar referenciar o Objeto, poderia criar uma instncia sem referncia.
with TBitBtn.Create(Self) do
begin
Parent := Self;
Kind := bkClose;
Caption := '&Sair';
Left := Self.ClientWidth - Width - 8;
Top := Self.ClientHeight - Height - 8;
end;
Para destruir um objeto, use o mtodo Free. Para Forms, recomendado usar o Release, para
que todos os eventos sejam chamados. O parmetro do mtodo Create usado apenas em
Componentes, para identificar o componente dono. Ao criar Forms, poderamos usar o Objeto
Application.
FrmSobre := TFrmSobre.Create(Application);
FrmSobre.ShowModal;
FrmSobre.Release;
Para criar objetos no componentes, voc no precisa de nenhum parmetro no mtodo Create.
var
Lst: TStringList;
begin
Lst := TStringList.Create;
Lst.Add('Al, Teresinha!');
Lst.Add('Uhh uhh...');
Lst.SaveToFile('Teresinha.txt');
Lst.Free;
end;
3.22
RTTI
Run Time Type Information a informao de tipo dos objetos em tempo de execuo. O operador is
usado para fazer comparaes e o operador as usado para fazer um TypeCast seguro com objetos.
for I := 0 to ComponentCount - 1 do
if Components[I] is TEdit then
TEdit(Components[I]).Clear;
(Sender as TEdit).Color := clYellow;
3.23
Excees
O tratamento de exceo um mecanismo capaz de dar robustez a uma aplicao, permitindo que os
erros sejam manipulados de uma maneira consistente e fazendo com que a aplicao possa se
recuperar de erros, se possvel, ou finalizar a execuo quando necessrio, sem perda de dados ou
recursos.
Para que uma aplicao seja segura, seu cdigo necessita reconhecer uma exceo quando esta
ocorrer e responder adequadamente a essa exceo. Se no houver tratamento para uma exceo, ser
exibida uma mensagem padro descrevendo o erro e todos os processamentos pendentes no sero
executados. Uma exceo deve ser respondida sempre que houver perigo de perda de dados ou de
recursos do sistema.
Excees so classes definidas pelo Delphi para o tratamento de erros. Quando uma exceo
criada, todos os procedimentos pendentes so cancelados e, geralmente mostrada uma mensagem de
erro para o usurio. As mensagens padro nem sempre so claras, por isso indicado criar seus
prprios blocos protegidos.
24
Blocos Protegidos
Um bloco protegido um grupo de comandos com uma seo de tratamento de excees.
try
A := StrToFloat(EdtA.Text);
B := StrToFloat(EdtB.Text);
ShowMessage(Format('%f / %f = %f', [A, B, A + B]));
except
ShowMessage('Nmeros invlidos.');
end;
Algumas vezes voc pode precisar especificar quais excees quer tratar, como mostrado abaixo.
try
Soma := StrToFloat(EdtSoma.Text);
NumAlunos := StrToInt(EdtNum.Text);
ShowMessage(Format('Mdia igual a %f.', [Soma / NumAlunos]));
except
on EConvertError do
ShowMessage('Valor invlido para soma ou nmero de alunos.');
on EZeroDivide do
ShowMessage('O nmero de alunos tem que ser maior que zero.');
else
ShowMessage('Erro na operao, verifique os valores digitados.');
end;
Principais Excees
O Delphi define muitas excees, para cada erro existe uma exceo correspondente.
Classe
Exception
EAbort
EAccessViolation
EConvertError
EDivByZero
EInOutError
EIntOverFlow
EInvalidCast
EInvalidOp
EOutOfMemory
EOverflow
ERangeError
EUnderflow
EVariantError
EZeroDivide
EDatabaseError
EDBEngineError
Descrio
Exceo genrica, usada apenas como ancestral de todas as outras excees.
Exceo silenciosa pode ser gerada pelo procedimento Abort e no mostra nenhuma mensagem.
Acesso invlido memria, geralmente ocorre com objetos no inicializados.
Erro de converso de tipos.
Diviso de inteiro por zero.
Erro de Entrada ou de Sada reportado pelo sistema operacional.
Resultado de um clculo inteiro excedeu o limite.
TypeCast invlido com o operador as.
Operao invlida com nmero de ponto flutuante.
Memria insuficiente.
O resultado de um clculo, com nmero real, excedeu o limite.
Valor excede o limite do tipo inteiro ao qual foi atribuda.
O resultado de um clculo, com nmero real, menor que a faixa vlida.
Erro em operao com variant.
Diviso de real por zero.
Erro genrico de banco de dados, geralmente no usado diretamente.
Erro da BDE, descende de EDatabaseError e traz dados que podem identificar o erro.
Blocos de Finalizao
Blocos de finalizao so executados sempre, haja ou no uma exceo. Geralmente os blocos de
finalizao so usados para liberar recursos.
FrmSobre := TFrmSobre.Create(Application);
try
FrmSobre.Img.LoadFromFile('Delphi.bmp');
FrmSobre.ShowModal;
finally
FrmSobre.Release;
end;
25
Gerao de Excees
Voc pode provocar uma exceo usando a clusula raise.
raise EDatabaseError.Create('Erro ao alterar registro.');
Se voc quiser que uma exceo continue ativa, mesmo depois de tratada, use a clusula raise
dentro do bloco de tratamento da exceo. Geralmente isso feito com excees aninhadas.
try
Tbl.Edit;
TblContador.Value := TblContador.Value + 1;
Tbl.Post;
except
ShowMessage('Erro ao alterar contador.');
raise;
end;
Note que a varivel E, que vai identificar o erro, s precisa ser declarada no bloco de
tratamento da exceo. No help voc pode consultar outras propriedades de EDBEngineError que
podem ser importantes.
Voc tambm pode usar os eventos de erro do componente Table, sem precisar de blocos de
tratamento.
procedure TFrmCadCli.TblCliPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
if(E is EDBEngineError) then
with EDBEngineError(E) do
26
Alguns cdigos de erro da BDE esto listados abaixo. Todas as constantes e funes
relacionadas API da BDE no Delphi 3 esto na Unit BDE, que deve ser adicionada clusula uses.
No BDE API Help voc pode encontrar referncia sobre as funes nativas da BDE, como tambm
alguns exemplos em Delphi.
Constante
DBIERR_KEYVIOL
DBIERR_MAXVALERR
DBIERR_FORIEGNKEYERR
DBIERR_LOCKED
DBIERR_FILELOCKED
DBIERR_NETMULTIPLE
DBIERR_MINVALERR
DBIERR_REQDERR
DBIERR_LOOKUPTABLEERR
Descrio
Violao de chave primria
Valor mximo excedido
Erro de chave externa, como em integridade referencial
Registro travado
Arquivo travado
Mais de um diretrio usado como NetFileDir
Campo com valor mais baixo que valor mnimo
Campo obrigatrio faltando
Erro em tabela Lookup
Note que foi usada uma outra tcnica de identificao do erro, usando a prpria mensagem de
erro e no o cdigo, como mostrado anteriormente. Voc pode usar a funo criada acima mandando
como parmetro os valores mostrados abaixo, que podem ser encontrados no help da BDE.
Constante
ecTABLENAME
EcFIELDNAME
EcUSERNAME
EcFILENAME
EcINDEXNAME
EcDIRNAME
EcKEYNAME
EcALIAS
EcDRIVENAME
Descrio
Nome da Tabela
Nome do campo
Nome do usurio, muito usado para identificar qual usurio travou o registro
Nome do arquivo
Nome do ndice
Pasta
Chave primria
Alias
Drive
27
Para desenvolver um sistema genrico de tratamento de erros, considere a opo de criar esse
tratamento em um DataModule genrico para ser usado como ancestral por todos os DataModules do
sistema, utilizando a herana visual.
Se o nico problema for traduzir as mensagens, localize os arquivos CONSTS.INT e
DBCONSTS.INT e crie uma nova Unit de definio de strings com uma estrutura semelhante a
mostrada abaixo e juntando todas as definies das constantes das duas Units devidamente traduzidas.
Depois, basta usar essa Unit em seus projetos que as novas mensagens iro sobrepor s anteriores.
unit NewConsts;
interface
resourcestring
SAssignError = 'No possvel atribuir %s a %s';
SFCreateError = 'No possvel criar arquivo %s';
SFOpenError = 'No possvel abrir arquivo %s';
SInvalidFieldSize = 'Tamanho de campo invlido';
SInvalidFieldRegistration = 'Registro de campo invlido';
SUnknownFieldType = 'Campo ''%s'' tem um tipo desconhecido';
implementation
end.
Uma outra opo seria criar um mtodo para o evento OnException do objeto Application,
esse mtodo seria chamado sempre que houvesse uma exceo em qualquer parte do sistema.
BIBLIOTECA DE CLASSES
4.1
Nomenclatura
Para nomear os componentes podemos usar uma conveno muito usada, onde as primeiras letras,
minsculas, identificam o tipo do componente e o restante identifica a funo deste, assim, btnSair,
seria o boto de sair.
Se a funo do componente for um nome composto esse nome deve ser escrito com os
primeiros nomes abreviados e com letras de caso varivel, como em btnRelVendas, que seria o boto
do relatrio de vendas ou btnRelVenProduto, que seria o boto do relatrio de vendas por produto.
4.2
Propriedades
As propriedades so caractersticas dos componentes, como foi mostrado anteriormente. Para alterar
propriedades em cdigo use a sintaxe de ponto, como mostrado a seguir.
Tipos de Propriedade
Tipo String
Button1.Caption := 'Fechar';
Label1.Caption := Edit1.Text + '/' + Edit2.Text;
Tipo Numrico
Button2.Height := Button2.Height * 2;
Width := Button1.Width + Button2.Width + 12;
Tipo Enumerado
BorderStyle := bsDialog;
28
Propriedades Comuns
Propriedade
Align
Canvas
Caption
Color
ComponentCount
Components
Ctl3D
Enabled
Font
Height
HelpContext
Hint
Left
Name
PopupMenu
ShowHint
TabOrder
TabStop
Tag
Top
Visible
Width
4.3
Descrio
Determina o alinhamento do componente
Superfcie de desenho, do tipo TCanvas, onde pode se desenhar a imagem do componente
Legenda do componente (& indica tecla de atalho para alguns componentes)
Cor do componente
O nmero de componentes possudos
Matriz de componentes possudos
Define a aparncia 3D do componente
Define se o componente est ativo, se pode ser usado
Fonte utilizada no componente
Altura
Nmero utilizado para chamar o Help on-line
String utilizada em dicas instantneas
Posio esquerda
Nome do componente
Menu de contexto do componente
Define se o Hint ser mostrado
A ordem de tabulao do componente, usada quando o usurio tecla TAB
Indica se o componente ser selecionado quando o usurio teclar TAB
Propriedade no utilizada pelo Delphi, que pode ser usada como propriedade personalizada.
Posio superior
Define se o componente est visvel
Largura
Eventos
Eventos Comuns
Evento
OnChange
OnClick
OnDblClick
Descrio
O contedo do componente alterado
O componente acionado
Duplo-clique no componente
29
OnEnter
OnExit
OnKeyDown
OnKeyPress
OnKeyUp
4.4
Mtodos
Os mtodos realizam aes definidas pelo componente, veja os exemplos abaixo e atente para os
parmetros passados. Note que podemos chamar os mtodos de evento como qualquer outro mtodo e
que os mtodos de evento pertencem ao Form, no aos componentes.
Edit1.Clear;
Form2.Show;
Close;
ScaleBy(110, 100);
Button1.ScrollBy(10, 10);
Button1.OnClick(Sender);
Button1Click(Self);
Form2.Button1Click(Sender);
Mtodos Comuns
Mtodo
Create
Free
Show
Hide
SetFocus
Focused
BringToFront
SendToBack
ScrollBy
ScaleBy
SetBounds
4.5
Descrio
Cria um novo Objeto de uma Classe
Destri um Objeto e libera a memria ocupada por ele
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
Move o componente
Gradua o componente em determina escala
Muda a posio e o tamanho do componente
Janelas
Todo aplicativo Windows composto por janelas, que so o elemento bsico no desenvolvimento
Delphi, sobre o qual um aplicativo construdo. O tipo TForm usado no Delphi como classe base
para todas as janelas, veja abaixo algumas propriedades, eventos e mtodos dessa classe.
Propriedade
Active
ActiveControl
AutoScroll
BorderIcons
BorderStyle
FormStyle
Icon
Menu
Position
WindowMenu
WindowState
Evento
OnCreate
OnDestroy
OnShow
OnCloseQuery
Descrio
Indica se o Form est ativo
Determina o controle que receber o foco por default
Adiciona barras de rolagem automaticamente, quando necessrio
Define quais cones de controle sero visveis, quais botes vo aparecer na barra de
ttulo
Estilo da borda do Form
Tipo de Form, normal, MDI pai, MDI filho ou sempre visvel
cone do Form
Indica qual o menu do Form
Permite controlar a posio e tamanho do Form na exibio
Automatiza o item de menu Window (MDI)
Estado do Form, maximizada, minimizada ou normal
Descrio
Quando o Form instanciado
Quando o Form liberado da memria
Exatamente antes de mostrar o Form
chamada para validar se o Form pode ser fechado
30
OnClose
OnActivate
OnDeactivate
OnResize
Mtodo
Cascade
Tile
ArrangeIcons
ShowModal
Show
Close
Previous
Next
4.6
Componentes Padro
Cancel
Default
ModalResult
Mtodo
Click
Descrio
Dispara o evento OnClick do boto quando a tecla ESC pressionada em qualquer
controle
Dispara o evento OnClick do boto quando a tecla ENTER pressionada em qualquer
controle
Associa o boto a opo de fechamento de um Form modal
Descrio
Ativa o evento OnClick do boto
Glyph
LayOut
Margin
Spacing
Kind
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
Seleciona um tipo padro para o boto, mudando vrias propriedades, como Glyph e
ModalResult
Down
GroupIndex
AllowAllUp
Flat
Descrio
Estado do boto (Pressionado ou no)
Indica quais botes pertencero ao mesmo grupo
Permite que todos os botes de um grupo possam ficar no pressionados
Define se a borda do boto deve aparecer apenas quando ele for apontado
Alignment
AutoSize
WordWrap
Transparent
FocusControl
ShowAccelChar
Descrio
Alinhamento do texto no componente
Define se o tamanho do componente ser automaticamente ajustado ao tamanho do
Caption
Retorno automtico de linha
Define se o componente ser transparente
Componente que receber o foco quando a tecla de atalho do Caption (&) for pressionada
Indica se o caractere & ser usado para definir tecla de atalho
31
Text
AutoSelect
MaxLength
CharCase
PasswordChar
ReadOnly
Descrio
Texto do componente
Indica se o texto ser ou no selecionado quando o componente receber o foco
Nmero mximo de caracteres permitidos
Define se as letras aparecero em maisculo, minsculo ou normal
Caractere utilizado para esconder o texto digitado (Senhas)
Define se ser permitido alterar o texto
Mtodo
Clear
ClearSelection
Descrio
Limpa o contedo do componente
Limpa o texto selecionado no componente
TmaskEdit - Permite entrada de dados texto em uma linha, utilizando uma mscara de edio.
Possui todas as propriedades do componente TEdit.
Propriedade
EditMask
Descrio
Mscara de edio
Mscaras - uma mscara composta por trs partes, a primeira parte a mscara propriamente dita,
a segunda parte indica se os caracteres literais sero salvos e a terceira parte indica qual o caractere
utilizado para representar os espaos a serem digitados no texto.
Estes so os caracteres especiais que podem compor a mscara de edio:
Caractere
!
>
<
\
l
L
a
A
9
0
c
C
#
:
/
Descrio
Espaos em branco no sero considerados no texto
Todos os caracteres seguintes sero maisculos at que aparea o caractere <
Todos os caracteres seguintes sero minsculos at que aparea o caractere >
Indica um caractere literal
Somente caractere alfabtico
Obrigatoriamente um caractere alfabtico
Somente caractere alfanumrico
Obrigatoriamente caractere alfanumrico
Somente caractere numrico
Obrigatoriamente caractere numrico
Permite um caractere
Obrigatoriamente um caractere
Permite um caractere numrico ou sinal de mais ou de menos, mas no os requer.
Separador de horas, minutos e segundos
Separador de dias, meses e anos
Tmemo - Permite entrada de dados texto em mltiplas linhas. Contm propriedades e mtodos do
TEdit.
Propriedade
Lines
WantReturns
WantTabs
ScrollBar
Descrio
Propriedade do tipo TStrings que armazena as linhas de texto do componente
Define se a tecla ENTER ser tratada como quebra de linha
Define se a tecla TAB ser tratada como espao de tabulao
Define as barras de rolagem
Tstrings - Muitos componentes, como o TMemo, 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 lista.
Propriedade
Count
Text
Mtodo
Descrio
Nmero de strings
Contedo do memo na Forma de uma nica string
Descrio
32
Add
Insert
Move
Delete
Clear
IndexOf
LoadFromFile
SaveToFile
AllowGrayed
Checked
State
Descrio
Determina se o checkbox ter trs possibilidades de estado
Determina se o checkbox est marcado
Estado atual do checkbox
TradioButton - Usado em grupo, pode ser utilizado para obter inFormaes lgicas mutuamente
exclusivas, mas recomendado usar o RadioGroup em vez de RadioButtons.
Columns
Items
ItemIndex
Descrio
Nmero de colunas de RadioButtons
Lista de strings com os itens do RadioGroup, cada item da lista
RadioButton
Item selecionado, iniciando em 0
representa um
BevelInner
BevelOuter
BevelWidth
BorderStyle
BorderWidth
Descrio
Estilo da moldura interna do painel
Estilo da moldura externa do painel
Largura das molduras
Estilo da Borda
Largura da borda, distncia entre as molduras interna e externa
Shape
Style
Descrio
Tipo de moldura a ser desenhada
Define alto ou baixo relevo para a linha
Columns
MultiSelect
ExtendedSelect
IntegralHeight
Items
ItemIndex
Selected
Descrio
Nmero de colunas de texto 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
Lista de strings com os itens da lista
ndice do item selecionado, comeando em 0
De acordo com o ndice indica se um item em particular esta selecionado
33
SelCount
Sorted
Items
DropDownCount
Style
Descrio
Lista de strings com os itens da lista
Nmero de itens visveis da lista suspensa
Estilo do ComboBox, os principais estilos so csDropDown, csDropDownList,
csSimple
Center
Picture
Stretch
Descrio
Determina de a figura ser centralizada no componente
Figura a exibida, pode ser BMP, ICO, WMF ou EMF
Define se o tamanho da figura deve ser ajustada ao do componente
Tpicture - classe usada para guardar cones, Bitmaps, meta arquivos do Windows ou grficos
definidos pelo usurio.
Mtodo
LoadFromFile
SaveToFile
Descrio
Carrega figura de um arquivo
Salva figura para um arquivo
TpageControl - usado para criar controles com mltiplas pginas, que podem ser manipuladas, em
tempo de projeto, atravs do menu de contexto. Cada pgina criada um objeto do tipo TTabSheet.
Propriedade
ActivePage
MultiLine
TabHeigth
TabWidth
Evento
OnChange
OnChanging
Mtodo
FindNextPage
SelectNextPage
Descrio
Pgina ativa
Define mltiplas linhas de guias de pginas
Altura das guias
Largura das guias
Descrio
Aps uma mudana de pgina
Permite a validao de uma mudana de pgina
Descrio
Retorna a prxima pgina
Seleciona a prxima pgina
Descrio
Ordem da pgina
Define se a aba da pgina visvel
Brush
Pen
Shape
Descrio
Preenchimento da figura, objeto do tipo TBrush
Tipo da linha, objeto do tipo TPen
Forma geomtrica
Interval
Evento
OnTimer
Descrio
Tempo em milissegundos quando o componente ir disparar o evento OnTimer
Descrio
Chamado a cada ciclo de tempo determinado em Interval
34
SimplePanel
SimpleText
SizeGrip
Panels
Descrio
Indica se haver apenas um panel
Texto exibido caso SimplePanel seja True
Define se a ala de redimensionamento padro deve ser mostrada
Propriedade do tipo TStatusPanels, com os painis do StatusBar
Count
Items
Descrio
Nmero de panels
Lista de panels, cada panel um objeto do tipo TStatusPanel
Mtodo
Descrio
Add
Text
Width
Bevel
Alignment
4.7
Descrio
Texto do panel
Largura em pixels
Moldura do panel
Alinhamento do texto de um panel
Caixas de Dilogo
Descrio
Mostra a caixa de dilogo e retorna True caso o usurio clique em Ok
Execute
FileName
DefaultExt
Filter
FilterIndex
InitialDir
Title
Options
Descrio
Nome do arquivo
Extenso padro para os arquivos
Filtro, com os tipos de arquivos que sero abertos ou salvos
ndice do filtro default
Pasta inicial
Ttulo da janela
Define caractersticas gerais do dilogo
Device
MinFontSize
MaxFontSize
Options
Evento
OnApply
4.8
Descrio
Define se deve utilizar fontes para tela, impressora ou ambos
Tamanho mnimo da fonte
Tamanho mximo da fonte
Define caractersticas das fontes
Descrio
Ocorre aps o usurio pressionar o boto Aplicar, antes da janela fechar
Menus
No Delphi os menus sero desenhados no Menu Designer, que pode ser acessado no menu de contexto
de qualquer componente de menu.
35
Items
Descrio
Itens de menu, essa propriedade guarda todas as alteraes feitas no Menu Designer
Checked
GroupIndex
RadioGroup
ShortCut
4.9
Descrio
Indica se o item est marcado ou no
ndice do grupo do item, semelhante ao SpeedButton
Indica se o item pode ser mutuamente exclusivo com outros itens do mesmo grupo
Tecla de atalho do item
Classes No Visuais
Tapplication - todo programa tem um objeto global nomeado Application, do tipo TApplication,
esse objeto representa a aplicao para o Windows.
Propriedade
ExeName
MainForm
Hint
Title
HelpFile
Evento
OnHint
OnException
OnHelp
Mtodo
MessageBox
Run
Terminate
Descrio
Caminho e nome do arquivo executvel
Form principal da aplicao
Hint recebido pela aplicao
Ttulo da aplicao
Caminho e nome do arquivo help
Descrio
Quando um hint recebido pela aplicao
Quando ocorre uma exceo
Quando acontece uma solicitao de help
Descrio
Apresenta um quadro de mensagem
Executa a aplicao
Finaliza a aplicao normalmente
MB_ABORTRETRYIGNORE
MB_ICONERROR
MB_ICONEXCLAMATION
MB_ICONINFORMATION
MB_ICONQUESTION
MB_OK
MB_OKCANCEL
MB_RETRYCANCEL
MB_SYSTEMMODAL
MB_YESNO
MB_YESNOCANCEL
Valor de Retorno
IDABORT
IDCANCEL
IDIGNORE
Item Mostrado
Botes de Abortar, Repetir e Ignorar
cone de erro
cone com ponto de exclamao
cone com letra i, usada para mostrar inFormaes
cone de pergunta
Boto de Ok
Botes de Ok e Cancelar
Botes de Repetir e Cancelar
O Windows s poder ser usado quando o quadro for fechado
Botes de Sim e No
Botes de Sim, No e Cancelar
Boto Escolhido
Abortar
Cancelar
Ignorar
36
IDNO
IDOK
IDRETRY
IDYES
No
Ok
Repetir
Sim
Esses quadros so usados quando se deseja uma resposta simples do usurio, principalmente
numa confirmao ou pergunta para o usurio, como o cdigo abaixo, usado no evento OnCloseQuery
do Form principal.
if Application.MessageBox('Deseja fechar a aplicao?', 'Sair do sistema',
MB_ICONQUESTION +
MB_YESNO) = IDNO then
CanClose := False;
Tscreen - o Delphi automaticamente cria a varivel Screen do tipo Tscreen, essa varivel guarda
caractersticas do vdeo, como mostrado abaixo.
Propriedade
ActiveForm
FormCount
Cursor
Forms
Fonts
PixelsPerInch
Height
Width
Descrio
Form com o foco
Nmero de Forms no vdeo
Cursor do mouse
Lista dos Forms disponveis
Lista de Fontes de tela disponveis
Nmero de pixels por polegada da Fonte usada pelo sistema
Altura da tela em pixels
Largura da tela em pixels
Tprinter - na Unit Printers declarado um objeto do tipo TPrinter nomeado Printer que encapsula
toda a interface de impresso do Windows e pode ser usado para imprimir diretamente, sem usar
componentes de relatrio, como o QuickReport.
Propriedade
Canvas
Printers
Orientation
PageHeight
PageWidth
PageNumber
Mtodo
BeginDoc
EndDoc
Abort
Descrio
Superfcie de desenho, do tipo TCanvas, onde ser desenhada a imagem a ser impressa
Lista de impressoras instaladas
Retrato ou Paisagem
Altura da pgina
Largura da pgina
Pgina atual
Descrio
Inicia o processo de desenho
Finaliza o processo de desenho e envia a imagem do Canvas para a impressora
Aborta a impresso
Tcanvas - um objeto da classe TCanvas uma superfcie de desenho, onde podem ser usados vrios
mtodos de plotagem grfica. Todos os controles visveis possuem uma propriedade Canvas, do tipo
TCanvas, que geralmente usada nos Forms e no objeto Printer.
Propriedade
Brush
Pen
Font
Mtodo
TextOut
Ellipse
Polygon
Rectangle
Descrio
Padro de preenchimento, propriedade do tipo TBrush
Estilo de linha, propriedade do tipo TPen
Fonte usada nas plotagens de texto
Descrio
Desenha texto na superfcie
Desenha uma elipse
Desenha um polgono
Desenha um retngulo
37
Tlist - estrutura de dados polimrfica que pode gerenciar uma lista de objetos de qualquer classe e
possui mtodos semelhantes aos de TStrings.
TstringList - lista de strings descendente de TStrings usada para manter listas de strings
independentes de qualquer componente.
BANCOS DE DADOS
5.1
Conceitos Importantes
5.2
A BDE (Borland Database Engine) fornece a capacidade de acesso padronizado a banco de dados
para Delphi, C++ Builder e outros ambientes de programao da Borland, oferecendo um grande
conjunto de funes para auxiliar no desenvolvimento de aplicaes Desktop e Cliente/Servidor.
Os controladores da BDE podem ser usados para acessar bases de dados dBase, Paradox,
Access, FoxPro, Interbase, Oracle, Sybase e MS-SQL Server, DB2, Informix, alm de um controlador
de acesso a arquivos texto. Voc tambm pode utilizar fontes de dados ODBC, podendo acessar
qualquer base de dados compatvel.
As funes que compe uma API da BDE so usadas internamente pelos componentes de
acesso a dados do Delphi e muito raramente voc teria que us-las diretamente, mas isso totalmente
possvel. A referncia completa das funes da BDE, com exemplos em Delphi, est no BDE API
Help na pasta do Delphi no Menu Iniciar.
Para configurar o acesso a um banco de dados, voc tem vrias opes, criar um Alias, usar o
componente TDatabase ou os dois juntos.
Fonte de Dados
Uma Fonte de Dados (ou Alias) um nome lgico, um atalho para um banco de dados. Todo o
trabalho do Delphi com um banco de dados pode ser feito baseado na Fonte de Dados, de forma que
para mudar de banco de dados, s necessrio mudar o Fonte de Dados. Para criar um Fonte de Dados
voc pode usar Database Explorer, o BDE Administrator ou o prprio Database Desktop.
5.3
Arquitetura de Acesso
A acesso e manipulao de um banco de dados por um programa Delphi realizada como mostrado a
seguir, note que a aplicao no acessa os dados diretamente, mas usa sempre a BDE.
38
Assim, para uma aplicao de bancos de dados funcionar, preciso que a BDE esteja instalada
na mquina, no bastando apenas o arquivo executvel.
5.4
Data Access
Componente
Utilidade
TDataBase
TDataModule
TTable
TQuery
TUpdateSQL
TStoreProc
TSession
TBatchMove
AliasName
Connected
DatabaseName
DataSetCount
DataSets
DriverName
InTransaction
KeepConnection
LoginPrompt
Params
Descrio
Nome do Alias do banco de dados, usado quando voc criar um Alias da BDE
Define se a conexo com o banco de dados est ativa
Nome do Alias local a ser usado pelos outros componentes do Delphi
Nmero de DataSets (Tabelas) abertos no banco de dados
Lista com os DataSets abertos
Driver usado para criar um Alias local, automaticamente cancela a propriedade AliasName
Define se o Database est em transao
Define se a conexo com o banco de dados ser mantida, mesmo sem DataSets abertos
Define se ser mostrado o quadro de login padro da BDE
Parmetros do banco de dados, com itens semelhantes seo Definition do Database
39
TransIsolation
Mtodos
Close
CloseDataSets
Commit
Open
Rollback
StartTransaction
Eventos
OnLogin
Explorer
Nvel de isolamento da transao, define como uma transao ir enxergar outra
Descrio
Encerra a conexo com o banco de dados, todos os DataSets sero fechados
Fecha todos os DataSets abertos, mas a conexo no encerrada
Grava alteraes feitas durante a transao
Abre a conexo com o banco de dados
Anula todas as alteraes feitas durante a transao
Inicia uma transao
Descrio
Evento usado quando voc quiser escrever seu prprio mtodo de conexo com o banco de
dados
Para acessar uma base de dados Access, voc poderia usar os valores mostrados na descrio
textual a seguir.
AliasName = 'Northwind'
DatabaseName = 'Dados'
LoginPrompt = False
KeepConnection = True
Params.Strings = (
'DATABASE NAME=C:\Meus Documentos\NorthWind.mdb'
'USER NAME=paulo'
'OPEN MODE=READ/WRITE'
'LANGDRIVER=intl850'
'PASSWORD=elvis')
Para ajudar a preencher os parmetros de um Database, clique duas vezes sobre o componente
e clique em Defaults, todos os parmetros defaults sero apresentados.
Para acessar uma base Paradox, use as propriedades abaixo, note que para o Paradox, a nica
informao realmente significante o Path, a pasta onde esto as tabelas.
AliasName = 'DBDEMOS'
DatabaseName = 'Dados'
LoginPrompt = False
KeepConnection = True
Params.Strings = (
'PATH=d:\Borland\Delphi 3\Demos\Data'
'ENABLE BCD=FALSE'
'DEFAULT DRIVER=PARADOX')
Aps a criao do Alias da BDE ou do Alias local, usando o componente TDatabase, o banco
de dados est configurado e pronto para ser usado.
Ttable - Componente usado para acessar uma tabela em um banco de dados. Esse componente o
mais importante quando acessamos bases de dados Desktop. Muitas dos itens mostrados abaixo esto
definidos na classe TDataSet, ancestral do TTable.
Propriedades
Active
BOF
CanModify
Descrio
Define se a tabela esta aberta ou fechada
Informa se est no incio da tabela
Define se a aplicao pode inserir, deletar ou alterar registros
40
DatabaseName
EOF
Exclusive
FieldCount
FieldDefs
Fields
Filter
Filtered
IndexFieldNames
IndexName
IndexDefs
MasterFields
MasterSource
Modified
ReadOnly
RecNo
RecordCount
State
TableName
TableType
Mtodo
AddIndex
Append
AppendRecord
Cancel
Close
CreateTable
Delete
DeleteIndex
DeleteTable
DisableControls
Edit
EmptyTable
EnableControls
FieldByName
FindKey
FindNearest
First
Insert
InsertRecord
IsEmpty
Last
Locate
LockTable
Lookup
MoveBy
Next
Open
Post
Prior
Refresh
RenameTable
UnlockTable
Evento
AfterCancel
Nome do banco de dados onde est a tabela, deve ser escolhido um Alias, que pode ser local
Informa se est no fim da tabela
Define se a tabela pode ser compartilhada por outro usurio
Nmero de campos da tabela
Lista com a Definio dos campos da tabela
Lista de objetos do tipo TField, que representam os campos da tabela
String com uma condio de filtragem
Define se a tabela filtrada
Nome dos campo de ndice, usados para ordenar os registros da tabela
Nome do ndice atual, vazia quando o ndice for a chave primria
Lista com a definio dos ndices
Campos usados no relacionamento com a tabela mestre
DataSource da tabela mestre em uma relao Mestre/Detalhe
Define se o registro atual foi modificado
Define se a tabela somente para leitura
Nmero do registro atual
Nmero de registros
Estado da tabela
Nome da tabela
Tipo da tabela
Descrio
Cria um novo ndice, a tabela deve ser exclusiva
Entra em modo de insero e, ao gravar, o registro ser colocado no fim do arquivo
Insere um registro no final do arquivo atravs de cdigo
Cancela as alteraes feitas no registro atual
Fecha a tabela
Cria uma tabela, depende de FieldDefs e IndexDefs
Exclui o registro corrente
Exclui um ndice
Exclui a tabela
Desabilita a atualizao dos controles visuais
Permite a alterao dos campos do registro atual
Apaga todos os registro da tabela, para isso a tabela no pode esta sendo compartilhada
Habilita os controles visuais
Acessa um campo, do tipo TField, pelo nome
Procura o registro com os valores exatos aos dos parmetros nos campos do ndice atual
Procura o registro com os valores mais aproximados aos dos parmetros nos ndices
Move para o primeiro registro
Entra em modo de insero de um novo registro na posio atual
Adiciona um novo registro, j com os dados, na posio atual
Define se a tabela est vazia
Move para o ltimo registro
Procura um registro, usando ou no ndices, de acordo com a disponibilidade
Trava a tabela
Procura um registro e retorna valores dos campos deste
Move um nmero especfico de registros
Move para o prximo registro
Abre a tabela
Grava as alteraes no registro atual
Move para o primeiro registro
Atualiza a tabela com os dados j gravados
Renomeia a tabela
Destrava a tabela
Descrio
Aps do mtodo Cancel
41
AfterClose
AfterDelete
AfterEdit
AfterInsert
AfterOpen
AfterPost
AfterScroll
BeforeCancel
BeforeClose
BeforeDelete
BeforeEdit
BeforeInsert
BeforeOpen
BeforePost
BeforeScroll
OnCalcFields
OnDeleteError
OnEditError
OnFilterRecord
OnNewRecord
OnPostError
Descrio
dsInactive
dsBrowse
dsEdit
dsInsert
dsSetKey
dsCalcFields
Abrindo e Fechado DataSets - antes que uma aplicao possa acessar dados atravs de um
dataset, o dataset deve ser aberto. Existem dois meios para abrir o dataset:
Ativando a propriedade Active para True, isto pode ser feito atravs do Object Inspector ou
programavelmente em tempo de execuo.
Table1.Active := True;
Para fechar o processo e semelhante s muda o a propriedade para False e o evento para
Close;
Lendo Valores do Campo - existem algumas maneiras de ler dados de um dataset:
Edit1.text := Table1Nome_Clie.asstring;
Edit1.text := Table1.Fields[1].asstring;
Edit1.text := Table1.FieldByName(Nome_Clie).asstring;
42
Para associar outros tipos de campos que no texto a uma caixa de edio (que s aceita
valores do tipo string), devemos utilizar propriedades de converso do componente TField:
AsBoolean, AsDataTime, AsFloat (Real), AsInteger, AsString.
Para atribuir valores para o dataset o procedimento o mesmo s que no sentido inverso,
desde que que a tabela esteja em modo de edio ou insero.
Inserindo Registros - para inserir registros em cdigo voc pode usar os mtodos AppendRecord e
InsertRecord, caso voc no precise de algum campo, mesmo assim ele deve ser informado com o
valor Null.
Table1.AppendRecord([Null, EdtDescricao.Text, EdtPreco.Text]);
Alterando Registros - para alterar registros em cdigo, colocamos a tabela em modo de edio,
alteramos o valor dos campos e gravamos as alteraes, se for necessrio.
Table1.Edit;
Table1Data.Value := Date;
Table1Hora.Value := Time;
Table1.Post;
Verificando Alteraes - onde for necessrio a verificao de alteraes feitas em uma Tabela, por
exemplo no evento OnClose de um Form de manuteno, voc pode usar a propriedade Modified,
como mostrado no exemplo abaixo.
if Table1.Modified then
if Application.MessageBox('Gravar alteraes?', 'Dados Alterados',
MB_ICONQUESTION + MB_YESNO) = IDYES then
Table1.Post
else
Table1.Cancel;
Valores Default - caso voc queira especificar valores Default para os campos de uma tabela, use o
evento OnNewRecord, pois nesse evento o registro no marcado como modificado.
Table1Data.Value := Date;
43
Descrio
GetIndexNames
Retorna uma lista de nomes disponiveis de ndeces para uma tabela do banco de
dados.
Nmero de Campos do ndice.
Vetor de nomes de campos usados no ndice
Para usar o ndice primrio de uma tabela Paradox.
Para muda o ndice para qualquer campo.
IndexFieldCount
IndexFields
IndexName
IndexFieldNames
Percorrendo uma Tabela - utilize um cdigo semelhante ao mostrado abaixo para percorrer uma
tabela do incio ao fim.
Table1.DisableControls;
Total := 0;
Table1.First;
while not Table1.EOF do
begin
Total := Total + Table1Valor.Value;
Table1.Next;
end;
Table1.EnableControls;
Localizando Registros - para localizar registros voc pode usar vrios mtodos, mas o melhor
deles o Locate, no exemplo abaixo feita uma pesquisa exata.
if not Table1.Locate('CodCli', Edt.Text, []) then
ShowMessage('Cliente no encontrado.');
Voc tambm pode fazer uma pesquisa parcial e/ou sem sensitividade de caso usando o
terceiro parmetro, que um conjunto de opes.
Table1.Locate('Nome', Edt.Text, [loPartialKey, loCaseInsensitive]);
Se voc precisar fazer uma pesquisa por mais de um campo, separe os nomes dos campos por
ponto e vrgula e use a funo VarArrayOf para criar um array com os valores que voc quer procurar.
if not Table1.Locate('Vendedor;Data', VarArrayOf([EdtVendedor.Text, EdtData.Text]),
[loCaseInsensitive]) then
ShowMessage('O vendedor no realizou nenhuma venda nessa data');
Caso os campos pesquisados sejam indexados, a pesquisa ser muito mais eficiente, seno ser
criado um filtro temporrio da BDE para localizar os registros
Filtros - usando o Filter, voc pode filtrar os registro de uma tabela usando uma expresso lgica,
como nos exemplos abaixo. Para tornar um filtro ativo, basta colocar Filtered igual a True.
Table1.filter := 'Data = '20/04/1998''
Table1.filter := (Data = '20/04/1998') AND (Vendedor = 'Gilherme Augusto da
Fonseca')
Table1.filter := (Nome > 'A') AND (Nome < 'B')
Contudo, se a condio de filtragem for muito varivel, prefervel usar um cdigo como o
mostrado abaixo no evento OnFilterRecord da Table, para fazer uma filtragem dinmica, com a
propriedade Filter vazia e Filtered igual a True.
45
Obter um filtro dos registros de clientes com cdigo entre 100 e 199.
Sincronizando Tabelas - o mtodo GotoCurrent um mtodo que sincroniza dois componentes
table ligados a uma mesma tabela em um banco de dados e usando o mesmo indce.
Table1.GotoCurrent(Table2);
Tfield - a classe TField usada como ancestral para todos as classes dos campos.
Geralmente iremos usar objetos de classes descendentes de TField, mas em todos eles
podemos encontrar os itens mostrados abaixo.
Propriedades
Alignment
AsBoolean
AsCurrency
AsDateTime
AsFloat
AsInteger
AsString
AsVariant
Calculated
CanModify
ConstraintErrorMessage
CustomConstraint
DataSet
DataSize
DataType
DefaultExpression
DisplayLabel
DisplayText
DisplayWidth
EditMask
FieldKind
FieldName
FieldNo
Index
IsIndexField
Descrio
Alinhamento do texto do campo nos controles visuais
Valor do campo convertido para Boolean
Valor do campo convertido para Currency
Valor do campo convertido para DataTime
Valor do campo convertido para Double
Valor do campo convertido para Integer
Valor do campo convertido para string
Valor do campo convertido para Variant
Indica se o campo calculado em tempo de execuo
Indica se um campo pode ser modificado
Mensagem de erro se a condio de CustomConstraint no for satisfeita
Condio de validao do campo
DataSet onde est o campo
Tamanho do campo, em Bytes
Propriedade do tipo TFieldType, que indica o tipo do campo
Expresso com valor Default do campo para novos registros
Ttulo a ser exibido para o campo
Texto exibido nos controles visuais associados ao campo
Nmero de caracteres que deve ser usado para mostrar o campo no controles visuais
Mscara de edio do campo
Propriedade do tipo TFieldKind que indica o tipo do campo, como Calculado ou Lookup
Nome do campo na tabela
Posio fsica do campo na tabela
Posio do campo nos controles visuais
Indica se um campo vlido para ser usado como ndice
46
IsNull
KeyFields
Lookup
LookupCache
LookupDataSet
LookupKeyFields
LookupResultField
ReadOnly
Required
Size
Text
Value
Visible
Eventos
OnChange
OnSetText
OnGetText
OnValidate
Mtodo
Assign
FocusControl
Clear
Esto listadas abaixo algumas classes que realmente iremos manipular no tratamento dos
campos de uma tabela, so classes descendentes de TField.
TStringField
TSmallintField
TFloatField
TCurrencyField
TBooleanField
TDateField
TBlobField
TIntegerField
TWordField
TAutoIncField
TBCDField
TDateTimeField
TTimeField
TBytesField
TVarBytesField
TGraphicField
TMemoField
Em alguns desses campos voc pode encontrar as propriedades mostradas abaixo, que no
esto presentes em TField.
Propriedades
MaxValue
MinValue
DisplayFormat
EditFormat
Currency
DisplayValues
Mtodos
LoadFromFile
SaveToFile
Descrio
Valor mximo para o campo
Valor mnimo para campo
Formato de apresentao do campo, como ,0.00 % ou ,0.## Km
Formato de edio do campo
Define se um campo monetrio
Usado com campos Boolean, define o texto para True e False, como Sim;No
Descrio
Carrega o contedo do campo de um arquivo
Salva o contedo do campo para um arquivo
Fields Editor - para criar objetos para os campos de uma tabela clique duas vezes no componente
TTable ou escolha Fields Editor no seu menu de contexto, na janela do Fields Editor, clique com o
boto direito do mouse e escolha Add, na janela Add Fields, escolha os campos que voc vai querer
usar e clique em Ok.
No Fields Editor podemos tambm remover os campos criados, alterar sua ordem de
apresentao e usar suas propriedades e eventos no Object Inspector. Para cada campo criado um
objeto de um tipo descendente de TField, como TStringField, TIntegerField, TFloatField. As
principais propriedades dos objetos TField esto listadas na tabela abaixo.
47
Se voc no criar nenhum objeto TField, todos os campos da tabela estaro disponveis, mas
caso voc crie algum, somente os campos que voc criar estaro disponveis.
Se voc selecionar os campos no Fields Editor e arrastar para o Form, sero criados os controles
visuais para esses campos, Label, DBEdit e outros, mas antes coloque a descrio dos campos na
propriedade DisplayLabel.
Converso de Tipos - a converso de tipo de um campo pode ser feita atravs as propriedades tipo
As..., como AsString.
Table1.AsString := EdtData.Text;
Validao - para validar os valores de um campo, voc pode usar a propriedade CustomConstraint,
por exemplo para garantir que a quantidade de um item seja maior que zero, use em CustomConstraint
Quantidade > 0, e em CustomConstraint coloque a mensagem para o usurio caso a condio seja
falsa. Outra forma, mais flexvel, usando o evento OnValidate, com um cdigo como abaixo, onde
gerada uma exceo para cancelar a atribuio do valor ao campo.
if Table1Quantidade.Value <= 0 then
raise Exception.Create('Quantidade deve ser maior que zero.');
Formatao Personalizada - caso queira fazer uma formatao personalizada do campo, pode
usar os eventos OnGetText e OnSetText. Por exemplo, se tiver um campo Estado, e quiser que quando
o valor do campo for C fosse mostrado Casado e S, Solteiro, no evento OnGetText use um cdigo
como o abaixo.
if TblEstado.Value = 'C' then
Text := 'Casado'
else if TblEstado.Value = 'S' then
Text := 'Solteiro';
Como controle visual para o usurio escolher o valor do campo, voc poderia usar o
DBComboBox, com Solteiro e Casado na propriedade Items, e no evento OnGetText do campo o
cdigo mostrado abaixo.
if Text = 'Casado' then
TblEstado.Value := 'C'
else if Text := 'Solteiro' then
TblEstado.Value = 'S';
Campos Calculados - para criar campos calculados, clique com o direito no Fields Editor e escolha
New Field, no quadro NewField, digite o nome do campo, o nome do objeto ser automaticamente
informado, o tipo do campo, seu tamanho e escolha Calculated em Field type.
Para colocar um valor nesse campo usaremos o evento OnCalcFields do componente TTable,
em nenhuma outra parte os valores desses campos podem ser alterados.
O cdigo do evento OnCalcFields deve ser enxuto, pois este chamado vrias vezes durante a
edio de um registro e um procedimento pesado pode comprometer a performance do sistema.
procedure TDtmAluno.TblCalcFields(DataSet: TDataSet);
begin
if TblFaltas.Value > DtmTurma.TblMaxFaltas.Value then
TblSituacao.Value := 'Evadido'
else if TblNota.Value >= 7 then
TblSituacao.Value := 'Aprovado'
else
TblSituacao.Value := 'Retido'
end;
48
Campos Lookup - para fazer um relacionamento, s vezes precisamos criar um campo de descrio,
por exemplo em uma biblioteca, na tabela de emprstimos, temos o cdigo do Livro, mas gostaramos
de mostrar o Ttulo, esses campos so chamados de campos Lookup.
Para criar um campo Lookup, siga os passos abaixo, tomando como exemplo o caso do livro no
emprstimo.
1. Abra o Fields Editor do Table desejado, Emprstimos
2. Clique com o direito e escolha New Field
3. No quadro New Field, escolha as propriedades do campo como descrito em campos calculados,
mas em Field type, escolha Lookup
4. Em Key Fields escolha o campo da tabela que faz parte do relacionamento, CodLivro
5. DataSet a tabela onde est a descrio, Livros
6. Em Lookup Keys, escolha o campo de DataSet que faz parte do relacionamento, CodLivro
7. Finalmente, escolha em Result field o campo de DataSet que vai ser mostrado para o usurio,
Ttulo
Essas opes correspondem a algumas propriedades do objeto TField gerado, que podem ser
alteradas no Object Inspector, KeyFields, LookupDataSet, LookupKeyFields, LookupDataSet e
LookupResultField.
Quando esses campo so exibidos em um DBGrid, por padro criado um boto de lookup que
mostrar os valores da outra tabela uma lista. Para colocar esses campos em um Form, devemos usar o
DBLookupComboBox, apenas com as propriedades padro, DataSource e DataField, onde deve ser
escolhido o campo Lookup, quando voc arrastar o campo para o Form isso ser feito
automaticamente.
TdataSource - componente usado para fazer a ligao entre um DataSet e os componentes visuais.
Propriedade
AutoEdit
DataSet
Evento
OnDataChange
OnStateChange
OnUpdateData
Descrio
Define se a tabela entrar em modo de edio assim que o usurio digitar novos valores nos
controles
DataSet ao qual o TDataSource faz referncia
Descrio
Ocorre quando o DataSet alterado, ao mudar de registro ou mudar os valores dos campos
Ocorre quando o estado do DataSet alterado
Ocorre antes de uma atualizao
Tquery -componente usado para enviar um comando SQL para um banco de dados ou uma instruo
SELECT. Muitas dos itens mostrados abaixo esto definidos na classe TDataSet, ancestral do TTable.
Propriedades
Active
BOF
DatabaseName
EOF
FieldCount
FieldDefs
Fields
Filter
Filtered
IndexFieldNames
IndexName
IndexDefs
Param
RecNo
RecordCount
SQL
State
Descrio
Define se a instruo SQL ser executada ou no. Usado somente para instrues SELECT.
Informa se est no incio da tabela
Nome do banco de dados onde est a tabela, deve ser escolhido um Alias, que pode ser local
Informa se est no fim da tabela
Nmero de campos da tabela
Lista com a Definio dos campos da tabela
Lista de objetos do tipo TField, que representam os campos da tabela
String com uma condio de filtragem
Define se a tabela filtrada
Nome dos campo de ndice, usados para ordenar os registros da tabela
Nome do ndice atual, vazia quando o ndice for a chave primria
Lista com a definio dos ndices
Lista de objetos do tipo TParam, que representam parmentros dentro de uma instruo SQL
Nmero do registro atual
Nmero de registros
Define a instruo SQL que ser enviada para o Gerenciador
Estado da tabela
49
UpdateObject
Mtodo
Close
ExecSQL
FieldByName
FindKey
FindNearest
First
IsEmpty
ParamByName
Last
Locate
Lookup
MoveBy
Next
Open
Post
Prior
Refresh
Evento
AfterCancel
AfterClose
AfterOpen
AfterScroll
BeforeClose
BeforeDelete
BeforeOpen
BeforeScroll
OnCalcFields
OnFilterRecord
Tparam - lista de parmentros para uma instruo SQL. Um parmetro como uma varivel na
instruo SQL. Para definir um parmentro na instruo SQL basta colocar dois pontos ( : ) antes da
varivel.
Query1.SQL := 'Select * from Autor where id_autor = :pid_autor';
Query1.ParamByName( 'pid_autor' ).asinteger := 10;
Query1.Open;
InsertSQL
DeleteSQL
ModifySQL
Mtodo
ExecSQL
5.5
Descrio
Define a instruo SQL para inserir registros
Define a instruo SQL para apagar registros
Define a instruo SQL para alterar registros
Descrio
Executa um comando SQL. No parmentro (ukModify, ukInsert, ukDelete) defini qual
instruo ser usada
Data Controls
Controles usados na interface com o usurio. Todos esses componentes tem uma propriedade
DataSource, que deve ter o DataSource do Table ao qual esto ligados.
50
Componente
TDBGrid
TDBNavigator
TDBText
TDBEdit
TDBCheckBox
TDBRadioGroup
TDBMemo
TDBRichEdit
TDBImage
TDBListBox
TDBComboBox
TDBLookupList
TDBLookupCombo
TDBChart
Utilidade
Grade padro de controle de dados que possibilita visualizar e editar dados de forma
tabular, semelhante a uma planilha; faz uso extensivo das propriedades do TField
(estabelecidos no Editor de Campos(Fields Editor)) para determinar a visibilidade de uma
coluna, formato da visualizao, ordem, etc.
Botes de navegao para controle de dados que move o apontador do registro corrente de
uma tabela para o posterior ou anterior, inicia insero ou modo de edio; confirma novos
ou modificaes de registros; cancela o modo de edio; e refresca(refaz) a tela para
recuperar dados atualizados.
Rtulo de controle de dados que pode mostrar um campo corrente do registro ativo.
Caixa de edio de controle de dados que pode mostrar ou editar um campo corrente do
registro ativo.
Caixa de verificao de controle de dados que pode mostrar ou editar dados lgico de
uma campo corrente do registro ativo.
Grupos de radio de controle de dados com botes de rdio que pode mostrar ou setar
valores de colunas.
Caixa memo de controle de dados que pode mostrar ou editar dados textos BLOB do
registro corrente ativo.
Caixa Rich Edit de controle de dados que pode mostrar ou editar dados textos BLOB do
registro corrente ativo no formato (.RTF).
Caixa de Imagem de controle de dados que pode mostrar, cortar ou colar imagens BLOB do
registro corrente ativo.
Caixa de Lista de controle de dados que pode mostrar valores da coluna de uma tabela.
Caixa de Lista mvel de controle de dados que pode mostrar ou editar valores da coluna de
uma tabela.
Caixa de Lista de controle de dados que mostrar valores mapeados atravs de outra tabela
em tempo de compilao.
Caixa de Combo de controle de dados que mostrar valores mapeados atravs de outra
tabela em tempo de compilao.
Usado para criar grficos partir de DataSet
Columns
DataSource
Fields
Options
SelectedField
SelectedIndex
SelectedRows
TitleFont
FixedColor
Eventos
OnCellClick
OnColEnter
OnColExit
OnColumnMoved
OnDrawDataCell
OnEditButtonClick
OnTitleClick
Descrio
Lista do tipo TDBGridColumns, com as colunas da Grid, cada item da lista do tipo
TColumn
Componente DataSource que o controle est ligado
Lista de objetos TField mostrados nas colunas
Set com as opes da Grid, como ConfirmDelete, MultiSelect, ColumnResize
Campo da coluna selecionada
ndice da coluna selecionada
Lista do tipo TBookmarkList, com os registros selecionados em uma Grid com MultiSelect
Fonte do ttulo das colunas
Cor Fixa, usada nas colunas e indicadores
Descrio
Ao clicar em uma clula da Grid
Quando uma clula de alguma coluna da Grid recebe o foco
Quando uma clula de alguma coluna da Grid perde o foco
Quando o usurio mover uma coluna
Evento usado para personalizar a forma de desenhar os dados que so apresentados na
Grid
Ao clicar no boto de edio de uma clula, mostrado pela propriedade ButtonStyle da
coluna
Ao clicar no ttulo das colunas
51
Tcolumn - item de uma lista TDBGridColumns, usada na propriedade Columns da Grid, objetos
desse tipo representam uma coluna da Grid. s vezes as propriedades definidas para o campo
sobrepem as propriedades
Propriedades
ButtonStyle
Field
FieldName
PickList
Title
Descrio
Boto mostrado ao editar as clulas da coluna
Objeto TField ligado coluna
Nome do campo ligado coluna
TStrings com os itens da lista DropDown usada nas clulas da coluna
Propriedade do tipo TColumnTitle com as opes do ttulo da coluna
Podemos personalizar o DBNavigator usando as suas propriedades e eventos, mas se quisermos mudar
a figura dos botes teremos que editar diretamente o arquivo LIB\DBCTRLS.RES, na pasta do Delphi.
Propriedades
DataSource
VisibleButtons
Hints
ConfirmDelete
Eventos
BeforeAction
OnClick
Descrio
Componente DataSource que o controle est ligado
Define os botes que sero visveis
Hints exibidos pelos botes
Define se ser solicitado uma confirmao antes da excluso
Descrio
Quando um boto do Navigator pressionado, antes da ao ser executada
Quando um boto do Navigator pressionado, depois da ao ser executada
Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado
Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado
TDBCheckBox - usado em campos que podem receber apenas dois valores, como campos lgicos.
Propriedades
DataField
DataSource
ValueChecked
ValueUnchecked
Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado
Valor a ser armazenado quando est selecionado
Valor a ser armazenado quando no est selecionado
Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado
Ttulo para cada boto de rdio
Valor a ser armazenado para cada boto de rdio
52
TDBMemo - usado para editar/visualizar campos com textos longos mas no usa formatao de
caractere e de paragrafos. Geralmentes so armazenados nos SGBD em campos do tipo BLOB.
Propriedades
DataField
DataSource
Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado
TDBRichEdit - usado para editar/visualizar campos com textos longos e usa formatao de caractere
e de paragrafos. Geralmentes so armazenados nos SGBD em campos do tipo BLOB.
Propriedades
DataField
DataSource
Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado
DataField
DataSource
Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado
Propriedades
DataField
DataSource
Items
Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado
Lista de valores vlidos para o campo
DataField
DataSource
ListSource
ListField
KeyField
Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado
Componente DataSource que contm os valores a serem exibidos na lista
Campo de ListSource que ser exibido
Campo de ListSource usado no relacionamento
53
DataSource
ColorSource
XLabelsSource
Descrio
Componente DataSource que o controle est ligado
Campo que contm o valor nunrico para pintar o grfico
Campo que ser visualizado no titulo da srie do grfico
RELATRIOS
6.1
Impresso de Texto
A impresso de um relatrio contendo somente texto pode ser feita utilizando o mtodo tradicional do
Pascal, com poucas modificaes:
var
<relatrio>: TextFile;
begin
AssignPrn(<relatrio>);
Rewrite(<relatrio>);
Printer.Title := <ttulo do relatrio>;
Writeln(<relatrio>, ...);
.
.
.
CloseFile(<relatrio>);
end;
Para cancelar a impresso durante a gerao do relatrio pode-se utilizar o mtodo Abort do
objeto Printer. O objeto Printer e o procedimento AssignPrn esto definidos na unit Printers.
6.2
Impresso Grfica
Propriedades
Printing
Title
PageHeight
PageWidth
Orientation
Canvas
PageNumber
Mtodos
BeginDoc
EndDoc
NewPage
Abort
Descrio
Inicia a impresso
Finaliza a impresso
Inicia uma nova pgina
Cancela uma impresso
Descrio
Escreve um texto em uma determinada posio
Move o posio de desenho para uma determinada posio
54
LineTo
PolyLine
Arc
Pie
Rectangle
RoundRect
FillRect
FloodFill
Ellipse
Draw
StretchDraw
CopyRect
6.3
O ReportSmith uma ferramenta que gera relatrios para diversas linguaguens de programao. A
ferramenta permite criar relatrio a partir de um ambiente grfico. Cada relatrio criado salvo em um
arquivo, que deve acompanhar a aplicao desenvolvida.
Ele possui alguns relatrios padres, tais como relatrios colunados (mostra os dados em
formas de colunas), referncia cruzada entre tabelas (mostra os dados tipos uma planilha, associando
duas ou mais tabelas), etiquetas (gera etiquetas em formatos padro), relatrios em modo de pgina
(mostra os registros de uma determinada tabela um por pgina).
A ferramenta QuickReport mas disponvel gratuitamente com o Delphi 2.0, mas nas demais
verses do delphi ele no gratuito.
Atravs do ReportSmith, e possvel gerar relatrios com as seguintes caractersticas:
Combinao de dados entre vrias tabelas;
Ordem e grupo livre de dados atravs de determinados campos;
Insero de cabealhos e rodaps;
Funes de soma, mdia, mximo e mnimo;
Criao de caixas de dilogo para insero de informaes, filtragem dos dados;
Criao de relatrios do tipo master/details;
Execuo de macros durante o relatrio; e
Acesso as mais variadas bases de dados, entre elas:
6.4
A verso 2.0 do Delphi traz uma soluo visual para a elaborao rpida de relatrios, o QuickReport.
A soluo utiliza o editor de formulrios do prprio Delphi e se basea no fato de que a maior parte dos
relatrios composta por faixa de informaes.
Componentes
QuickReport
QRBand
QRLabel
QRDBText
QRDBCalc
QRSysData
QRShape
QRMemo
QRDetailLink
QRGroup
Descrio
o controlador do relatrio.
Transforma o formulrio do Delphi em um relatrio. ativado pelos mtodos Print e
Preview. Permite visualizar o relatrio em tempo de desenvolvimento ao se selecionar
a opo Preview no menu sensvel ao contexto.
Define as faixas de informaes do relatrio, que podem ser
Define rtulos a serem impressos
Imprime campos de um DataSet
Exibe o somatrio, mdia ou quantidade de registros, valor mximo e mnimo em um
campo
Imprime informaes do sistema como data, hora, nmero da pgina, etc.
Imprime linhas e figuras
Imprime um rtulo com mais de uma linha
Utilizado na criao de relatrios mestre-detalhe
Define um grupo de informaes
55
QRPreview
QRPrinter
QuickReport
Propriedades
CollumnMarginInches
CollumnMarginMM
Columns
DisplayPrintDialog
LeftMarginInches
LeftMarginMM
Orientation
RestartData
ShowProgress
Mtodos
Preview
Print
Descrio
Espao, em 1/10 de polegadas, entre colunas num relatrio MultiColuna.
O mesmo que CollumnMarginInches, sendo que em milmetros.
Nmero de colunas a serem impressas.
Exibe a caixa de dilogo de impresso quando o mtodo QuickReport.Print executado.
Margem esquerda, em 1/10 de polegadas.
O mesmo que LeftMarginInches, sendo que em milmetros
Orientao do Papel (poPortait ou poLandscape)
Indica se o QuickReport ir para o primeiro registro do dataset ou inicia a partir do registro
corrente.
Indica se o formulrio de progresso ir aparecer na criao do formulrio. O formulrio de
progresso possui um boto Cancel.
Descrio
Exibe um preview do formulrio
Imprime o formulrio
QRBand
Propriedade
BandType
rbTitle
rbPageHeader
rbPageFooter
rbColumnHeader
rbDetail
rbSubDetail
rbGroupHeader
rbGroupFooter
rbSummary
Color
Enabled
Font
ForceNewPage
Frame
LinkBand
Ruler
Eventos
BeforePrint
AfterPrint
Descrio
Impresso uma vez no incio do relatrio
Impresso uma vez no incio de cada pgina
Impresso no rodap de cada pgina
Semelhante ao rbPageHeader exceto pelo fato que impresso para cada coluna no
caso de um relatrio multicoluna
Replicado para cada registro do DataSet
Usado como rbDetail em relatrios mestre-detalhe
Impresso como cabealho de grupo de informaes. Deve ser indicado em um
QRDetailLink
Impresso como rodap de grupo de informaes. Deve ser indicado em um
QRDetailLink
Impresso no fim do relatrio
Cor de fundo da faixa
Indica se o QRBand ser impresso
Fonte para os controles desse QRBand
Fora que a impresso seja feita numa nova pgina
Coloca molduras no QRBand
Liga QRBands entre si, forando que sejam impressos numa mesma pgina
Coloca uma rgua, em tempo de projeto, no QRBand
Descrio
Quando o QRBand vai ser impresso. A impresso pode ser cancelada atribuindo-se
False ao parmetro PrintBand
Ocorre aps a impresso ou tentativa de impresso de um QRBand. Se a impresso foi
cancelada no evento BeforePrint o parmetro BandPrinted tem o valor True
QRLabel
Propriedade
Alignment
AutoSize
Caption
Color
Font
Descrio
Alinhamento do texto
Controle automtico do tamanha do componente
Texto a ser impresso
Cor de fundo
Fonte utilizada
56
Transparente
Eventos
OnPrint
Descrio
Ocorre antes do componente ser impresso. O valor a ser impresso esta no
parmetro Value
QRDBText
Propriedade
Alignment
AutoSize
Color
DataSource
DataField
Font
Transparent
Eventos
OnPrint
Descrio
Alinhamento do texto
Define se o tamanho do componente ser ajustado automaticamente de acordo
com o seu contedo
Cor de fundo para o componente
Fonte de Dados
Campo
Fonte
Indica se o componente ser transparente
Descrio
Ocorre antes do componente ser impresso. O valor a ser impresso esta no
parmetro Value
QRDBCalc
Propriedade
AsInteger
AsReal
Operation
PrintMask
ResetBand
Eventos
OnPrint
Descrio
Retorna o Valor corrente com inteiro
Retorna o Valor corrente como real
Operao de Calculo a ser realizada
qrcSum - Somatrio de um campo
qrcCount
- Nmero de registro de um campo
qrcMax - Valor mximo de um campo
qrcMin
- Valor mnimo de um campo
qrcAverange
- Mdia de um campo
Mscara de sada do QRDBCalc
Zera os clculos sempre for impresso
Descrio
Antes do componente ser impresso
QRSysData
Propriedade
Data
Alignment
AutoSize
Color
Font
Transparente
Eventos
OnPrint
Descrio
Informao a ser exibida (Hora, Data, Nmero da Pgina, Ttulo do Relatrio,
Contado de Detalhes, Registro Corrente)
Alinhamento do texto
Controle automtico do tamanha do componente
Cor de fundo
Fonte utilizada
Define se o componente ser transparent
Descrio
Ocorre antes do componente ser impresso. O valor a ser impresso esta no
parmetro Value
QRShape
Propriedade
Brush
Pen
Shape
Height
Width
Descrio
Cor e Traado da Figura
Caneta usada na pintura
Tipo da Figura
Altura da figura
Largura da figura
57
Eventos
OnPrint
Descrio
Ocorre antes do componente ser impresso. O valor a ser impresso esta no
parmetro Value
QRMemo
Propriedade
Alignment
AutoSize
Lines
WordWrap
Color
Font
Transparente
Descrio
Alinhamento do texto
Controle automtico do tamanha do componente
Texto a ser impresso
Quebra automtica de linha de acordo com o tamanho do componente
Cor de fundo
Fonte utilizada
Define se o componente ser transparent
QRDetailLink
Propriedade
DataSource
DeatilBand
FooterBand
HeaderBand
Master
PrintBefore
Eventos
OnFilter
Descrio
Fonte de Dados na qual um relacionamento mestre-detalhe deve ter sido
defenido
QRBand detalhe
QRBand rodap
QRBand cabealho
QuickReport ou outro QRDetailLink. Um relacionamento mestre-detalhe deve
ser definido entre as tabelas envolvidas
Inidica se a informao mestre ser impresso antes ou depois dos detalhes
Descrio
Ocorre a cada movimento do ponteiro de registros no dataset e o parmetro
PrintRecord pode ser utilizado para evitar a impresso do registro corrente
QRGroup
Propriedade
DataSource
DataField
FooterBand
HeaderBand
Level
Descrio
Fonte de Dados
Campo que servir como base para o grupo
Rodap do grupo
Cabealho do grupo
Nvel do grupo
QRPreview
Propriedade
PageNumber
Zoom
Mtodos
ZoomToFit
ZoomToWith
Descrio
Escolha da pgina a ser exibida
Escolha do zoom
Descrio
Ajusta o zoom para caber todo o relatrio no formulrio
Ajusta o zoom horizontal para caber todo o relatrio no formulrio
CONCLUSO
Este trabalho apresentou as caractersticas gerais do ambiente de programao Delphi da Borland, sem
abordar os fundamentos de lgica de programao e outras peculiaridades de programao visual. Foi
enfatizada a forma de se utilizar Delphi juntamente com os recursos de Bases de Dados que podem ser
ento includos nos aplicativos.
No foi pretendido com essas notas didticas explorar todos recursos de programao que
podem ser obtidos no ambiente Delphi. No entanto, tem-se um conjunto bsico das referncias de
58
mecanismos e recursos que podem ser utilizados como suporte nas prticas de aplicativos que
precisam de suporte de Bases de Dados.
Remissivo
1
INTRODUO ............................................................................................................................................ 4
1.1 PRINCIPAIS CARACTERSTICAS DO DELPHI.................................................................................................. 4
1.2 CARACTERSTICAS DO DELPHI CLIENT/SERVER.......................................................................................... 5
59
Funes ........................................................................................................................................................ 22
Mtodos ........................................................................................................................................................ 22
Parmetros ................................................................................................................................................... 23
3.19
WITH .................................................................................................................................................... 23
3.20
SELF ..................................................................................................................................................... 23
3.21
CRIANDO E DESTRUINDO OBJETOS ...................................................................................................... 23
3.22
RTTI .................................................................................................................................................... 24
3.23
EXCEES ............................................................................................................................................ 24
Blocos Protegidos......................................................................................................................................... 25
Principais Excees...................................................................................................................................... 25
Blocos de Finalizao .................................................................................................................................. 25
Gerao de Excees ................................................................................................................................... 26
Erros de Bancos de Dados ........................................................................................................................... 26
4
BIBLIOTECA DE CLASSES.................................................................................................................... 28
4.1 NOMENCLATURA ...................................................................................................................................... 28
4.2 PROPRIEDADES ......................................................................................................................................... 28
Tipos de Propriedade ................................................................................................................................... 28
Propriedades Comuns .................................................................................................................................. 29
4.3 EVENTOS................................................................................................................................................... 29
Eventos Comuns ........................................................................................................................................... 29
4.4 MTODOS ................................................................................................................................................. 30
Mtodos Comuns .......................................................................................................................................... 30
4.5 JANELAS ................................................................................................................................................... 30
4.6 COMPONENTES PADRO ........................................................................................................................... 31
Tbutton. ........................................................................................................................................................ 31
TbitBtn .......................................................................................................................................................... 31
TspeedButton. ............................................................................................................................................... 31
Tlabel............................................................................................................................................................ 31
Tedit.............................................................................................................................................................. 32
TmaskEdit..................................................................................................................................................... 32
Tmemo. ......................................................................................................................................................... 32
TcheckBox. ................................................................................................................................................... 33
TradioButton. ............................................................................................................................................... 33
TradioGroup................................................................................................................................................. 33
Tpanel........................................................................................................................................................... 33
TscrollBox. ................................................................................................................................................... 33
TgroupBox. ................................................................................................................................................... 33
Tbevel. .......................................................................................................................................................... 33
TlistBox......................................................................................................................................................... 33
TcomboBox................................................................................................................................................... 34
Timage.......................................................................................................................................................... 34
Tpicture. ....................................................................................................................................................... 34
TpageControl................................................................................................................................................ 34
TtabSheet...................................................................................................................................................... 34
Tshape. ......................................................................................................................................................... 34
Ttimer. .......................................................................................................................................................... 34
TstatusBar. ................................................................................................................................................... 35
TstatusPanels................................................................................................................................................ 35
TstatusPanel. ................................................................................................................................................ 35
4.7 CAIXAS DE DILOGO ................................................................................................................................ 35
TOpenDialog / TsaveDialog......................................................................................................................... 35
TfontDialog. ................................................................................................................................................. 35
4.8 MENUS...................................................................................................................................................... 35
TmainMenu................................................................................................................................................... 36
TpopUpMenu................................................................................................................................................ 36
TmenuItem . .................................................................................................................................................. 36
4.9 CLASSES NO VISUAIS ............................................................................................................................. 36
60
Tapplication. ................................................................................................................................................ 36
Tscreen. ........................................................................................................................................................ 37
Tprinter......................................................................................................................................................... 37
Tcanvas......................................................................................................................................................... 37
Tlist............................................................................................................................................................... 38
TstringList .................................................................................................................................................... 38
Tregistry . ..................................................................................................................................................... 38
5
RELATRIOS ........................................................................................................................................... 54
6.1 IMPRESSO DE TEXTO............................................................................................................................... 54
6.2 IMPRESSO GRFICA ................................................................................................................................ 54
6.3 IMPRESSO COM O REPORTSMITH ............................................................................................................ 55
6.4 IMPRESSO COM O QUICKREPORT ............................................................................................................ 55
QuickReport.................................................................................................................................................. 56
QRBand ........................................................................................................................................................ 56
QRLabel ....................................................................................................................................................... 56
QRDBText .................................................................................................................................................... 57
QRDBCalc.................................................................................................................................................... 57
QRSysData ................................................................................................................................................... 57
QRShape....................................................................................................................................................... 57
QRMemo....................................................................................................................................................... 58
QRDetailLink................................................................................................................................................ 58
QRGroup ...................................................................................................................................................... 58
QRPreview.................................................................................................................................................... 58
CONCLUSO ............................................................................................................................................ 58
61