ND_42

download ND_42

of 61

Transcript of ND_42

UNIVERSIDADE DE SO PAULO Instituto de Cincias Matemticas e de ComputaoISSN - 0103-2585

3URJUDPDomR'HOSKL omR' DSRLDQGRDFRQVWUXomRGH RDFR RGH DSOLFDWLYRVGH%DVHVGH'DGRV VGH% VGH' GRV

Enzo Seraphim Renata Pontin de Mattos Fortes

Notas Didticas n0 42

So Carlos, dezembro de 1999

Programao Delphi apoiando aplicativos de Bases de Dados

ndice1 INTRODUO ............................................................................................................................................ 4 1.1 PRINCIPAIS CARACTERSTICAS DO DELPHI.................................................................................................. 4 1.2 CARACTERSTICAS DO DELPHI CLIENT/SERVER.......................................................................................... 5 2 O AMBIENTE DELPHI .............................................................................................................................. 5 2.1 2.2 2.3 2.4 2.5 3 COMO FORMADA UMA APLICAO EM DELPHI ........................................................................................ 5 CDIGO FONTE DO ARQUIVO PROJECT(.DPR)............................................................................................. 7 CDIGO FONTE DO ARQUIVO UNIT (.PAS) .................................................................................................. 7 ARQUIVOS GERADOS PELA COMPILAO ................................................................................................... 9 AMBIENTE DE PROGRAMAO.................................................................................................................... 9

FUNDAMENTOS DE OBJECT PASCAL............................................................................................... 11 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21 3.22 3.23 CONCEITOS DE PROGRAMAO ORIENTADA A OBJETOS .......................................................................... 11 VARIVEIS ................................................................................................................................................ 11 ATRIBUTOS ............................................................................................................................................... 12 ENCAPSULAMENTO ................................................................................................................................... 12 CLASSES ................................................................................................................................................... 12 OBJETOS ................................................................................................................................................... 13 LITERAIS ................................................................................................................................................... 13 CONSTANTES ............................................................................................................................................ 13 INSTRUES.............................................................................................................................................. 13 COMENTRIOS...................................................................................................................................... 14 TIPOS DE DADOS PADRO .................................................................................................................... 14 CONVERSES DE TIPO .......................................................................................................................... 17 EXPRESSES ......................................................................................................................................... 18 OPERADORES ........................................................................................................................................ 18 ESTRUTURAS DE DECISO .................................................................................................................... 19 ESTRUTURAS DE REPETIO ................................................................................................................ 19 TIPOS DEFINIDOS PELO USURIO.......................................................................................................... 20 PROCEDIMENTOS, FUNES E MTODOS.............................................................................................. 22 WITH .................................................................................................................................................... 23 SELF ..................................................................................................................................................... 23 CRIANDO E DESTRUINDO OBJETOS ...................................................................................................... 23 RTTI .................................................................................................................................................... 24 EXCEES ............................................................................................................................................ 24

4

BIBLIOTECA DE CLASSES.................................................................................................................... 28 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 NOMENCLATURA ...................................................................................................................................... 28 PROPRIEDADES ......................................................................................................................................... 28 EVENTOS................................................................................................................................................... 29 MTODOS ................................................................................................................................................. 30 JANELAS ................................................................................................................................................... 30 COMPONENTES PADRO ........................................................................................................................... 31 CAIXAS DE DILOGO ................................................................................................................................ 35 MENUS...................................................................................................................................................... 35 CLASSES NO VISUAIS ............................................................................................................................. 36

5

BANCOS DE DADOS ................................................................................................................................ 38 5.1 5.2 5.3 5.4 5.5 CONCEITOS IMPORTANTES ........................................................................................................................ 38 BORLAND DATABASE ENGINE .................................................................................................................. 38 ARQUITETURA DE ACESSO ........................................................................................................................ 38 DATA ACCESS ........................................................................................................................................... 39 DATA CONTROLS ...................................................................................................................................... 50

6

RELATRIOS ........................................................................................................................................... 54

2

Programao Delphi apoiando aplicativos de Bases de Dados

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

3

Programao Delphi apoiando aplicativos de Bases de Dados

1

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: S Delphi Standard para estudantes, sem classes para armazenamento de estruturas de dados. S Delphi Professional com classes para armazenamento de estruturas de dados, mas sem suporte a arquitetura cliente/servidor. S Delphi Client/Server Suite verso completa com fontes dos componentes. 1.1 Principais Caractersticas do Delphi Construtor Visual de Interface com o Usurio - o IDE (Interface Development Environment) permite criar visualmente aplicaes Client/Server de forma rpida atravs da seleo de componentes na paleta. Arquitetura Baseada em Componentes - os componentes asseguram que as aplicaes Delphi sejam robustas, reutilizveis e de fcil manuteno. Com facilidade de criao de componentes nativos, alm de controles ActiveX, inclusive com disponibilidade do cdigo fonte dos componentes padro Compilador de Cdigo Nativo de Alta Performance - compilador/otimizador de cdigo mais rpido do mercado, gerando executveis rpidos e puros, sem run-time 4

Programao Delphi apoiando aplicativos de Bases de Dados

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

1.2

O Delphi Client/Server Edition inclui todas as caractersticas do Delphi Professional e as seguintes caractersticas especficas ao ambiente 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.

2 2.1

O AMBIENTE Delphi Como formada uma Aplicao em Delphi5

Programao Delphi apoiando aplicativos de Bases de Dados

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

.DPR

.EXE

FORM 1

FORM 2

FORM N

.DCU

.DCU

.DCU

FORM 1

FORM 2

FORM N

.DFM .PAS

UNIT 1

.DFM .PAS

UNIT 2

.DFM .PAS

UNIT N

ROTINAS

.PAS

Extenso Arquivo .DPR

Quadro 1. Arquivos Gerados no desenvolvimento em Delphi Definio FunoCdigo fonte em Pascal do arquivo principal do projeto. Lista todos os formulrios e units no projeto, e contm cdigo de inicializao da aplicao. Criado quando o projeto salvo. Cdigo fonte da Unit (Object Um arquivo .PAS gerado por cada formulrio Pascal) que o projeto contm. Seu projeto pode conter um ou mais arquivos .PAS associados com algum formulrio. Contem todas as declaraes e procedimentos incluindo eventos de um formulrio. Arquivo grfico do Arquivo binrio que contm as propriedades do formulrio desenho de um formulrio contido em um projeto. Um .DFM gerado em companhia de um arquivo .PAS para cada formulrio do projeto. Arquivo de opes do Arquivo texto que contm a situao corrente das projeto opes do projeto. Gerado com o primeiro salvamento e atualizado em subseqentes alteraes feitas para as opes do projeto. Arquivo de Recursos do Arquivo binrio que contm o cone, mensagens Compilador da aplicao e outros recursos usados pelo projeto. Arquivo do Projeto

.PAS

.DFM

.OPT

.RES

6

Programao Delphi apoiando aplicativos de Bases de Dados

.~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

Gerado quando o projeto salvo pela segunda vez. Se um .PAS alterado, este arquivo gerado. Se voc abrir um .DFM no editor de cdigo e fizer alguma alterao, este arquivo gerando quando voc salva o arquivo. Este arquivo armazena informaes sobre a situao da rea de trabalho especifica para o projeto em opes de ambiente (Options Environment).

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

Cdigo fonte do arquivo Project(.DPR)

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

Cdigo fonte do arquivo Unit (.PAS)

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

Programao Delphi apoiando aplicativos de Bases de Dados

WinProcs = acesso a GDI, USER e KERNEL do Windows Wintypes= tipos de dados e valores constantes Messages=constantes com os nmeros das mensagens do Windows e tipos de dados das Mensagens Classes=elementos de baixo nvel do sistema de componentes Graphics=elementos grficos Controls=elementos de nvel mdio do sistema de componentes Forms=componentes de forma e componentes invisveis de aplicativos Dialogs=componentes de dilogo comuns Seo Type - declara os tipos definidos pelo usurio. Subsees: Private, declaraes privativas da Unit. Public declaraes publicas da Unit. Seo Var - declara as variveis privadas utilizadas. Seo Implementation - contm os corpos (cdigos que implementam) das funes e procedures declaradas nas sees Interface e Type. Nesta seo tambm esto definidos todos os procedimentos dos componentes que esto includos no Form. As declaraes desta seo so visveis apenas por ela mesma. Esta seo formada pelo seguinte cdigo: {$R*.DFM} - Diretiva compiladora que inclui toda a interface, propriedades da forma e componentes do arquivo *.DFM {$S+} - Diretiva compiladora que ativa verificao de pilha. Seo uses adicional - serve para declarar Units que ativam esta. Inicialization - nesta seo, que opcional, pode ser definido um cdigo para proceder as tarefas de inicializao da Unit quando o programa comea. Ela consiste na palavra reservada inicialization seguida por uma ou mais declaraes para serem executadas em ordem. Quando se abre um projeto novo, a Unit possuir o seguinte contedo:

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.

8

Programao Delphi apoiando aplicativos de Bases de Dados

2.4

Arquivos Gerados pela CompilaoDefinioArquivo compilado executvel Cdigo objeto da Unit

Extenso Arquivo .EXE

FunoEste um arquivo executvel distribuivel de sua aplicao. Este arquivo incorpora todos os arquivos .DCU gerados quando sua aplicao compilada. O Arquivo .DCU no necessrio distribuir em sua aplicao. A compilao cria um arquivo .DCU para cada .PAS no projeto.

.DCU

Obs.: Estes arquivos podem ser apagados para economizar espao em disco.

2.5

Ambiente de ProgramaoJanela 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 S Incluir: Selecionar o componente na paleta e clicar no Form Designer. S 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. S 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. S Selecionar: Segurar SHIFT para selecionar vrios componentes individuais e CTRL para escolher uma rea retangular do Form e selecionar todos os componentes nesta rea. S Alinhamento: Para alinhar componentes selecione-os e escolha View / Alignment Palette. S 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

9

Programao Delphi apoiando aplicativos de Bases de Dados

em Toggle Form/Unit no menu View, ou no boto corresponde da Barra de Ferrramentas. Para cada Form aberto criado um Form Designer e uma nova guia no Editor de Cdigo. Configurao do Ambiente - grande parte das opes de configurao do ambiente podem ser acessadas atravs do item Environment Options do menu Tools. A maioria das opes desse dilogo so bastante claras e atravs delas podemos definir, desde as opes do Form Designer, at o Editor de Cdigo e o caminho das Livrarias. No menu Tools, podemos escolher tambm Configure Tools, para permitir abrir aplicaes externas a partir do ambiente do Delphi, como o Image Editor e o Database Desktop. Project Manager - para ajudar no gerenciamento de projetos, podemos usar o Project Manager pelo menu View. O Project Manager lista as Units, os Forms existentes nessas Units e o path, se a Unit no estiver na pasta do projeto. Atravs dos botes do Project Manager voc pode adicionar, excluir e visualizar Units e Forms que compem o projeto. Project Options - atravs do item Options, do menu Project, podemos escolher diversos aspectos de um projeto. Forms - nessa pgina, podemos definir o Form principal da aplicao e a os Forms que sero criados automaticamente. Se um Form no for criado automaticamente, voc ter que instanciar esse Form explicitamente. Application - nessa pgina podemos definir o ttulo, o arquivo help e o cone da aplicao. Compiler - usamos essa pgina para definir as opes de compilao, para o projeto atual. Essas opes iro interferir diretamente no executvel gerado. Linker - essa pgina muito pouco usada, mas somente atravs dela podem modificar a memria exigida por uma aplicao. Directories/Conditionals - pode-se especificar pastas de sada para os arquivos gerados na compilao do projeto e opes de compilao condicional. Version Information - informaes da verso do executvel. Packages - Nesta pgina voc pode especificar parte do cdigo para ser includo em Packages, fora do executvel, permitindo compartilhamento de componentes entre vrias aplicaes Delphi. Gerenciamento de Projetos - segue uma descrio das mais importantes opes de menu para o gerenciamento de projetos, algumas dessas opes tem um boto correspondente na barra de ferramentas. File Abre um dilogo com novos itens que podem ser adicionados ao projeto New Abrir projetos, pode abrir tambm Units, Forms e texto no editor de cdigo Open Salva o arquivo aberto no editor de cdigo Save Salva o projeto com outro nome ou local Save Project As Faz com que a Unit atual possa usar outra Unit do projeto Use Unit Adiciona uma Unit em disco ao projeto Add to Project Remove from Remove uma Unit do projeto Project View Mostra o gerenciador de projeto Project Manager Mostra o cdigo do projeto Project Source Mostra o Object Inspector Object Inspector Alterna entre o Form e a Unit Toggle Form/Unit Mostra o cdigo fonte de uma Unit ou do Projeto a partir de uma lista Units Seleciona um Form a partir de uma lista Forms Project Compila o projeto Compile Opes do projeto, como cone do executvel, nome da aplicao e opes de compilao Options Run Compila e executa o projeto Run 10

Programao Delphi apoiando aplicativos de Bases de Dados

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 3.1

FUNDAMENTOS DE Object Pascal Conceitos de Programao Orientada a Objetos

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

Programao Delphi apoiando aplicativos de Bases de Dados procedure TFrmExemplo.BtnTrocarClick(Sender: TObject); var Aux: string; begin Aux := EdtA.Text; EdtA.Text := EdtB.Text; EdtB.Text := Aux; end;

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

Private Public Protected Published

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.

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

Programao Delphi apoiando aplicativos de Bases de Dados

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

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

3.8

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. constG = 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. constCont: Integer = 1; Peso: Double = 50.5; Empresa: string = 'SENAC';

3.9

Instrues

Os programas so compostos por instrues, que so linhas de cdigo executvel. Exemplos de instrues simples so atribuies, mensagens entre objetos, chamadas de procedimentos, funes e mtodos, como mostradas abaixo. As instrues podem ser divididas em vrias linhas, o que indica o fim de uma instruo o ponto e vrgula no final. Quando uma instruo quebrada, costuma-se dar dois espaos antes das prximas linhas, para melhorar a leitura do cdigo.Caption := 'Gabba Gabba Hey!'; Form2.ShowModal; Application.MessageBox('Voc executou uma operao ilegal, o programa ser finalizado.', 'Falha geral', MB_ICONERROR);

13

Programao Delphi apoiando aplicativos de Bases de Dados

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(* Comentrio do Pascal Padro *) { Comentrio do Turbo Pascal } // Comentrio de linha do C++

Existem trs estilos de comentrio no Delphi, como mostrado abaixo.

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

Tipos de Dados Padro

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

Programao Delphi apoiando aplicativos de Bases de Dados Tipo 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.');

A funo Format especialmente til na formatao de strings, veja alguns exemplos.ShowMessage(Format('O nmero %d a parte inteira do nmero %f.', [10, 10.5])); ShowMessage(Format('Este texto%sfoi formatado%susando o caractere #%d.', [#13, #13, 13])); ShowMessage(Format('O preo do livro %s %m.', ['Como Programar em Delphi', 50.7]));

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 OrdinaisTipos 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

Programao Delphi apoiando aplicativos de Bases de Dados

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

Decrementa varivel ordinal Incrementa varivel ordinal Testa se um ordinal mpar Predecessor do ordinal Sucessor do ordinal Ordem de um valor na faixa de valores de um tipo ordinal Valor mais baixo na faixa de valores Valor mais alto na faixa de valores

Por exemplo, use o cdigo abaixo no evento OnKeyPress de um Edit e veja o resultado. Inc(Key);

BooleanVariveis do tipo Boolean podem receber os valores lgicos True ou False, verdadeiro ou falso. Uma varivel Boolean ocupa 1 byte de memria.

TDateTimeO 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

Retorna a data do sistema

Now TimeDayOfWeek

Retorna a data e hora do sistema Retorna a hora do sistemaRetorna o dia da semana de uma data especificada

DecodeDate DecodeTime EncodeDate EncodeTime

Decodifica um valor TDateTime em Words de dia, ms e ano Decodifica um valor TDateTime em Words de hora, minuto, segundo e milissegundos Retorna um TDateTime a partir de Words de dia, ms e ano Retorna um TDateTime a partir de Words de hora, minuto, segundo e milissegundos

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

Programao Delphi apoiando aplicativos de Bases de Dados

VariantTipo 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 sefosse 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 ConversoAs 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

Programao Delphi apoiando aplicativos de Bases de Dados

VarCast VarAsType Val Str

Qualquer tipo em outro usando argumentos do tipo Variant Variante em qualquer tipo String em nmero, real ou inteiro Nmero, real ou inteiro, em String

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

Uma expresso qualquer combinao de operadores, variveis, constantes, valores literais e chamadas de funes que resultem em um valor de determinado tipo. Uma expresso usada sempre que precisamos de um valor que possa ser obtido por uma expresso. Alguns exemplos so apresentados a seguir.

A + 12 * C Date - 4 StrToInt(Edit1.Text + Edit2.Text) StrToDate(Edit2.Text) - StrToDate(Edit1.Text) 12 * A / 100 A < B

3.14

Operadores

Os operadores so usados em expresses e a ordem em que as expresses so executadas depende da precedncia desses operadores. Veja abaixo a lista de operadores em ordem descendente de precedncia.Operadores Unrios Endereo No booleano ou bit voltado para no Operadores Multiplicativos e de direo de Bit Multiplicao ou interseo de conjuntos * Diviso de Real / Diviso de Inteiro div Resto de diviso de Inteiros mod TypeCast seguro quanto ao tipo (RTTI) as

@ not

18

Programao Delphi apoiando aplicativos de Bases de Dados

and shl shrOperadores Aditivos

E booleano ou bit voltado para e Deslocamento de bits esquerda Deslocamento de bits direita Adio ou unio de conjuntos Subtrao ou diferena de conjuntos Ou booleano ou bit voltado para ou Ou exclusivo booleano ou bit voltado para ou exclusivo Igual Diferente Menor Maoir Menor ou igual Maior ou igual Pertinncia a conjuntos Compatibilidade de tipos (RTTI)

+ or xorOperadores Relacionais

= < > = 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

If - uma estrutura de deciso usada para realizar instrues em determinadas condies. O if considerado uma s instruo, por isso, s encontramos o ponto-e-vrgula no final. O else opcional.if Opn.Execute then Img.Picture.LoadFromFile(Opn.FileName); if Nota < 5 then ShowMessage('Reprovado') else ShowMessage('Aprovado');

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; CbbBorda.ItemIndex of BorderStyle := bsDialog; BorderStyle := bsSingle; BorderStyle := bsSizeable;

3.16

Estruturas de Repetio

While - executa uma instruo at que uma condio deixe de ser verdadeira. 19

Programao Delphi apoiando aplicativos de Bases de Dados I := 10; while I >= 0 do begin ShowMessage(IntToStr(I)); Dec(I); end;

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]);

Repeat - executa instrues at que uma condio seja verdadeira.I := 1; repeat S := InputBox('Acesso', 'Digite a senha', ''); Inc(I); if I > 3 then Halt; until S = 'fluminense';

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

Tipos Definidos pelo Usurio

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];

Tipo Sub-Faixa - um subconjunto de um tipo ordinal e possui as mesmas propriedades do tipo original.TMaiusculas = 'A'..'Z'; TMes = 1..12;

20

Programao Delphi apoiando aplicativos de Bases de Dados

Enumeraes - define uma seqncia de identificadores como valores vlidos para o tipo. A cadaelemento 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);

Ponteiros - armazenam endereos de memria, todas as classes em Object Pascal so implementadas como ponteiros:TIntPtr: ^Integer; Quanto desejo o ponteiro de um outro objeto: TIntPtr := @Tvarnum; Quanto desejo manipular o objeto e no o ponteiro: showmessage ( IntToStr ( TIntPtr^ ) );

Records - o tipo record uma forma de criar uma nica estrutura com valores de diferentes tipos dedados. 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 umalista 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

Programao Delphi apoiando aplicativos de Bases de Dados BorderIcons := [biSystemMenu, biMinimize]; if MesAtual in [Jul, Jan, Fev] then ShowMessage('Frias');

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

Procedimentos, Funes e Mtodos

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.

ProcedimentosSo 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.

FunesSo 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;

MtodosSo 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

Programao Delphi apoiando aplicativos de Bases de Dados procedure ShowMsg(const Msg: string); end; procedure TFormMsg.ShowMsg(const Msg: string); begin LblMsg.Caption := Msg; ShowModal; end;

ParmetrosExistem 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; N: Double; var Erro: Integer): string;

Quando no indicado o tipo de passagem, passado o valor do parmetro, como constante. Ao usar a palavra-chave var no enviado o valor do parmetro, mas a referncia a ele, tornando possvel mudar o valor do parmetro no cdigo do procedimento. Como alternativa voc pode passar um parmetro por referncia constante, para isso use a palavra const antes da declarao do parmetro.

3.19 WithUsado 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.

3.21 Criando e Destruindo ObjetosAntes de tudo, voc deve declarar o objeto, se quiser referenci-lo. Para cri-lo, use o mtodo Create, que um mtodo de classe. Para voc usar um mtodo de classe, referencie a classe, no o Objeto, como mostrado a seguir.

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

Programao Delphi apoiando aplicativos de Bases de Dados

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

Programao Delphi apoiando aplicativos de Bases de Dados

Blocos ProtegidosUm 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 ExceesO 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 FinalizaoBlocos 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

Programao Delphi apoiando aplicativos de Bases de Dados

Voc pode usar blocos de proteo e finalizao aninhadosFrmOptions := TFrmOptions.Create(Application); try FrmOptions.ShowModal; try Tbl.Edit; TblValor.AsString := EdtValor.Text; except on EDBEngineError do ShowMessage('Alterao no permitida.'); on EConvertError do ShowMessage('Valor invlido.'); end; finally FrmOptions.Release; end;

Gerao de ExceesVoc pode provocar uma exceo usando a clusula raise.raise EDatabaseError.Create('Erro ao alterar registro.');

Tambm possvel criar seus prprios tipos de excees.type EInvalidUser = class (Exception); raise EInvalidUser.Create('Voc no tem acesso a essa operao.');

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;

Erros de Bancos de DadosA exceo EDBEngineError permite a identificao de erros de bancos de dados gerados pela BDE (Borland Database Engine).try TblCli.Post; except on E: EDBEngineError do if E.Errors[0].ErrorCode = DBIERR_KEYVIOL then ShowMessage('Cliente j cadastrado.'); 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

Programao Delphi apoiando aplicativos de Bases de Dados case Errors[0].ErrorCode of DBIERR_KEYVIOL: ShowMessage('Cliente j cadastrado.'); DBIERR_REQDERR: ShowMessage('Campo obrigatrio no preenchido.'); end else ShowMessage('Erro no banco de dados:' + #13#13 + E.Message); Action := daAbort; end;

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

Se voc quiser mais informaes a respeito do erro pode usar o procedimento DBIGetErrorContext, como na funo mostrada abaixo que retorna determinadas informaes sobre o erro.function GetErrorInfo(Context: SmallInt): string; begin SetLength(Result, DBIMAXMSGLEN + 1); try DbiGetErrorContext(Context, PChar(Result)); SetLength(Result, StrLen(PChar(Result))); except Result := ''; end; end;

No evento OnEditError, usado no exemplo abaixo, se ocorrer um erro ao tentar alterar um registro, podemos identificar o usurio da rede que est alterando esse registro usando a funo criada anteriormente.if Pos('locked', E.Message) > 0 then ShowMessage('Usurio ''' + GetErrorInfo(ecUSERNAME) + ''' est alterando o registro.');

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

Programao Delphi apoiando aplicativos de Bases de Dados EcNATIVECODE EcNATIVEMSG EcLINENUMBER Cdigo de erro nativo Mensagem de erro nativa Nmero da linha, usado em instrues SQL

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.

4 4.1

BIBLIOTECA DE CLASSES 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 StringButton1.Caption := 'Fechar'; Label1.Caption := Edit1.Text + '/' + Edit2.Text;

Tipo Numrico

Button2.Height := Button2.Height * 2; Width := Button1.Width + Button2.Width + 12;

Tipo Enumerado 28

BorderStyle := bsDialog;

Programao Delphi apoiando aplicativos de Bases de Dados Panel1.Color := clWindow;

Propriedades Aninhadas de Classe

Memo1.Lines.Text := 'E agora, Jos?'; Label1.Font.Color := clBlue;

Propriedades Aninhadas de Conjunto

BorderIcons := [biSystemMenu, biMaximize]; Label1.Font.Style := [fsBold, fsItalic];

Propriedades ComunsPropriedade

Align Canvas Caption Color ComponentCount Components Ctl3D Enabled Font Height HelpContext Hint Left Name PopupMenu ShowHint TabOrder TabStop Tag Top Visible Width

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

4.3

Eventos

Os Eventos acontecem em resposta a uma ao do usurio ou do prprio sistema, ao programar um mtodo de evento, devemos levar em considerao que este s ser executados quando o evento acontecer. Uma das tarefas mais importantes na programao baseada em eventos determinar quais eventos sero usados e qual a ordem desses eventos, por exemplo, quando o usurio clicar em um boto, qual evento acontecer primeiro, OnEnter, OnMouseDown ou OnClick? Os eventos podem ser compartilhados entre componentes, dessa Forma, voc pode ter um boto na barra de ferramentas que faz a mesma coisa que uma opo de menu. Para isso, basta escolher o evento na lista em vez de clicar duas vezes no Object Inspector. Podemos tambm mudar os mtodos de evento em cdigo, pois os eventos tambm so propriedades e podem ser usados como tal. Voc pode atribuir um evento de outro componente ou diretamente o nome do mtodo, como mostrado abaixo.Button1.OnClick := Edit1.OnExit; Button2.OnClick := Edit2Click;

Eventos ComunsEvento

OnChange OnClick OnDblClick

Descrio O contedo do componente alterado O componente acionado Duplo-clique no componente

29

Programao Delphi apoiando aplicativos de Bases de Dados

OnEnter OnExit OnKeyDown OnKeyPress OnKeyUp

O componente recebe o foco O componente perde o foco Tecla pressionada Uma tecla pressionada e solta Tecla solta

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 ComunsMtodo

Create Free Show Hide SetFocus Focused BringToFront SendToBack ScrollBy ScaleBy SetBounds

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

4.5

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 WindowStateEvento

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

Programao Delphi apoiando aplicativos de Bases de Dados

OnClose OnActivate OnDeactivate OnResizeMtodo

Cascade Tile ArrangeIcons ShowModal Show Close Previous Next

Quando o Form fechado Quando o Form recebe o foco Quando o Form perde o foco Quando o Form muda de tamanho Descrio Organiza as Forms filhos em cascata (MDI) Organiza as Forms filhos lado a lado (MDI) Organiza os cones dos Forms Filhos minimizados (MDI) Ativa o Form modal, que o usurio tem que fechar para poder continuar a usar a aplicao Mostra o Form Fecha o Form Ativa o Form anterior (MDI) Ativa a prximo Form (MDI)

4.6

Componentes Padro

Tbutton - Componente boto padro do Windows, utilizado para executar aes.Propriedade

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

TbitBtn - Boto especializado, com Bitmap.Propriedade

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

TspeedButton - Boto com Bitmap, normalmente utilizado em barras de ferramentas.Propriedade

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

Tlabel - Utilizado para exibir rtulosPropriedade

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

Programao Delphi apoiando aplicativos de Bases de Dados

Tedit - Utilizado para entrada de texto em uma nica linha.Propriedade

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 doTEdit.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 TextMtodo

Descrio Nmero de strings Contedo do memo na Forma de uma nica string Descrio

32

Programao Delphi apoiando aplicativos de Bases de Dados

Add Insert Move Delete Clear IndexOf LoadFromFile SaveToFile

Adiciona uma nova string no final da lista Insere uma nova string numa posio especificada Move uma string de um lugar para outro Apaga uma string Apaga toda a lista Retorna o ndice do item e - 1 caso no encontre Carrega texto de um arquivo Salva texto para um arquivo

TcheckBox - Utilizado para obter informaes de checagem.Propriedade

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 mutuamenteexclusivas, mas recomendado usar o RadioGroup em vez de RadioButtons.

TradioGroup - Componente que agrupa e controla RadioButtons automaticamente.Propriedade

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

Tpanel - Componente Container utilizado para agrupar componentes em um painel.Propriedade

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

TscrollBox - Container com barras de rolagem automticas. TgroupBox - Componente container com um ttulo e borda 3D. Tbevel - Moldura ou linha com aparncia 3D.Propriedade

Shape Style

Descrio Tipo de moldura a ser desenhada Define alto ou baixo relevo para a linha

TlistBox - Utilizado para exibir opes em uma lista.Propriedade

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

Programao Delphi apoiando aplicativos de Bases de Dados

SelCount Sorted

Indica quantos itens esto selecionado Define se os itens aparecero ordenados

TcomboBox - Caixa combinada com lista suspensa.Propriedade

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

Timage - componente usado para exibir figuras.Propriedade

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 grficosdefinidos 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, emtempo de projeto, atravs do menu de contexto. Cada pgina criada um objeto do tipo TTabSheet.Propriedade

ActivePage MultiLine TabHeigth TabWidthEvento

OnChange OnChangingMtodo

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

TtabSheet - pgina de um PageControl.Propriedade PageIndex TabVisible Descrio Ordem da pgina Define se a aba da pgina visvel

Tshape - grfico de uma Forma geomtrica.Propriedade

Brush Pen Shape

Descrio Preenchimento da figura, objeto do tipo TBrush Tipo da linha, objeto do tipo TPen Forma geomtrica

Ttimer - permite a execuo de um evento a cada intervalo de tempo.Propriedade

IntervalEvento

OnTimer

Descrio Tempo em milissegundos quando o componente ir disparar o evento OnTimer Descrio Chamado a cada ciclo de tempo determinado em Interval

34

Programao Delphi apoiando aplicativos de Bases de Dados

TstatusBar - utilizado para criar barras de status para exibir inFormaes.Propriedade

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

TstatusPanels - lista de panels de um StatusBar.Propriedade

Count ItemsMtodo

Descrio Nmero de panels Lista de panels, cada panel um objeto do tipo TStatusPanel

DescrioAdiciona um novo panel lista

Add

TstatusPanel- panel de um StatusBar.Propriedade

Text Width Bevel Alignment

Descrio Texto do panel Largura em pixels Moldura do panel Alinhamento do texto de um panel

4.7Mtodo

Caixas de DilogoDescrio Mostra a caixa de dilogo e retorna True caso o usurio clique em Ok

Grupo de caixas de dilogo comuns do Windows.Execute

TOpenDialog / TsaveDialog - caixas de dilogo para abrir e salvar arquivos.Propriedade

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

TfontDialog - caixa de dilogo de escolha de fonte.Propriedade

Device MinFontSize MaxFontSize OptionsEvento

OnApply

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

4.8

Menus

No Delphi os menus sero desenhados no Menu Designer, que pode ser acessado no menu de contexto de qualquer componente de menu.

35

Programao Delphi apoiando aplicativos de Bases de Dados

TmainMenu - menu principal de um Form.Propriedade

Items

Descrio Itens de menu, essa propriedade guarda todas as alteraes feitas no Menu Designer

TpopUpMenu - Menu de contexto de um componente. Cada componente tem uma propriedadePopUpMenu, que indica seu menu de contexto.

TmenuItem - item de menu.Propriedade

Checked GroupIndex RadioGroup ShortCut

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

4.9

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 HelpFileEvento

OnHint OnException OnHelpMtodo

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

Quadros de Mensagem - o mtodo Application.MessageBox mostra quadros de mensagem com chamadas a funes da API do Windows. Os flags de mensagem mais usados e os valores de retorno desse mtodo so mostrados abaixo.Flag

MB_ABORTRETRYIGNORE MB_ICONERROR MB_ICONEXCLAMATION MB_ICONINFORMATION MB_ICONQUESTION MB_OK MB_OKCANCEL MB_RETRYCANCEL MB_SYSTEMMODAL MB_YESNO MB_YESNOCANCELValor 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

Programao Delphi apoiando aplicativos de Bases de Dados

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 guardacaractersticas 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 encapsulatoda 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 PageNumberMtodo

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 vriosmtodos 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 FontMtodo

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

Programao Delphi apoiando aplicativos de Bases de Dados

Tlist - estrutura de dados polimrfica que pode gerenciar uma lista de objetos de qualquer classe epossui mtodos semelhantes aos de TStrings.

TstringList - lista de strings descendente de TStrings usada para manter listas de stringsindependentes de qualquer componente.

Tregistry - interface com a API de manipulao do Registry do Windows, banco de dados deconfigurao do sistema.

5 5.1

BANCOS DE DADOS Conceitos Importantes

O gerenciamento de bancos de dados essencial para o desenvolvimento comercial, em particular para sistemas de informao que possuem grande volume de informaes para serem proessadas. Para se criar um banco de dados eficiente necessrio o conhecimento prvio de modelagem de bancos de dados relacionais. Conceitos como banco de dados, tabelas, campos, registros, ndices, chaves, relacionamentos, normalizao, dentre outros so pr-requisitos bsicos para o desenvolvimento desse contedo.

5.2

Borland Database Engine

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 DadosUma 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

Programao Delphi apoiando aplicativos de Bases de Dados

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 UtilidadeInstala uma conexo permanente com um banco de dados, especialmente um banco de dados remoto requerendo um login do usurio e uma senha. uma Unit que pode ser conter as classes TTable e TQuery para evitar repeties destes componentes