3193 Delphi

Embed Size (px)

Citation preview

Delphi

Linguagem de Programao DELPHI

Pgina 1

Linguagem de Programao DELPHI

Introduo Programao Com Delphi

Edberto Ferneda.

Pgina 2

Parte

IAmbiente Integrado de Desenvolvimento IDE

O Ambiente DELPHIO ambiente de desenvolvimento do Delphi possui as caractersticas IDE (Integrated Developer Environment Ambiente Integrado de Desenvolvimento).

1

O DELPHI possui um conjunto de ferramentas que permitem facilitar e agilizar a construo de programas, permitindo uma melhor interao entre o programador e o computador. Seus principais componentes so: Janela Principal Janela OBJECT INSPECTOR Janela FORM DESIGNER Janela CODE EDITOR

Janela PrincipalA janela principal controla o funcionamento do Delphi. atravs dessa janela que mantemos o Delphi aberto, que identificamos qual projeto est ativo, que executamos os comandos de compilao, entre outras funcionalidades. Esta janela pode ser dividida em trs partes: Menu Principal: contm as opes de utilizao do DELPHI; Barra de Ferramentas: contm botes que agilizam determinadas funes do DELPHI;

Paleta de Componentes: contm diversas pginas de componentes que podem ser utilizados na construo do projeto.

A Janela Principal: dividida em trs partes.

Menu PrincipalAssim como toda aplicao Windows, no menu principal esto presentes os comandos de abertura, criao, compilao, configurao do ambiente e chamadas a ferramentas auxiliares como, por exemplo, o Image Editor. File Abrir, salvar, fechar e imprimir projetos e arquivos, e acrescentar novos formulrios ou Units ao projeto que est aberto.Comando New New Application New Form New Data Module Open Reopen Save Save As Save Project As Save All Close Close All Use Unit Add to Project Remove From Project Print Exit Descrio Abre a caixa de dilogo New Items que contm novos itens que podem ser criados. Cria um novo projeto contendo um novo formulrio, uma Unit e o arquivo .DPR. Cria e adiciona um novo formulrio ao projeto. Cria e adiciona um novo formulrio do tipo DataModule ao projeto. Abre uma caixa de dilogo para carregar um projeto, um formulrio ou uma Unit no Code Editor. Apresenta um menu contendo uma lista dos ltimos projetos e mdulos utilizados. Grava o arquivo ativo com o seu nome atual. Grava o arquivo ativo com um novo nome. Grava o projeto corrente com um novo nome. Grava todos os arquivos abertos, tanto o projeto como seus mdulos. Fecha uma Unit e/ou Formulrio ativo. Fecha todos os arquivos. Adiciona uma Unit clusula uses do mdulo ativo. Adiciona um arquivo (Unit/Formulrio) ao projeto. Remove um arquivo do projeto. Envia o arquivo ativo para a impressora. Fecha o projeto aberto e finaliza a execuo do Delphi.

Edit Comandos para manipular textos e componentes em tempo de projeto.

O Ambiente DELPHI

2

Comando Undelete (Undo) Redo Cut Copy Paste Delete Select All Align To Grid Bring To Front Send To Back Align Size Scale Tab Order Creation Order Lock Controls Add to interface

Descrio Desfaz a ltima ao efetuada. Reverte um comando Undo. Remove um item selecionado e o coloca no Clipboard. Coloca uma copia do item selecionado no Clipboard, permanecendo o item original. Copia o contedo do Clipboard na janela Code Editor ou no formulrio. Remove o item selecionado. Seleciona todos os componentes no formulrio. Alinha o componente selecionado grade do formulrio. Move o componente selecionado para a frente de outro componente. Move o componente selecionado para trs de outro componente. Alinha os componentes selecionados. Altera o tamanho dos componentes selecionado. Altera o tamanho de todos os componentes do formulrio. Altera a ordem (tabulao) dos componentes do formulrio ativo. Modifica a ordem em que os componentes no visuais sero criados. Quando acionado, no permite que componentes sejam movidos (arrastados) de suas posies Define um novo mtodo, evento ou propriedade para um componente ActiveX

Search Localiza texto, erros, objetos, units, variveis e smbolos no Code Editor.Comando Find Find In File Replace Search Again Incremental Search Go to Line Number Find Error Browse Symbol Descrio Procura por um texto especificado e marca a primeira ocorrncia encontrada no Code Editor Procura por um texto especificado e apresenta cada ocorrncia em uma janela abaixo do Code Editor. Procura por um texto especificado e o substitui por um novo texto. Repete a procura. Procura por um texto movendo o cursor diretamente prxima ocorrncia do texto digitado na barra de status. Move o cursor para uma determinada linha. Procura pelo erro de execuo mais recente. Procura por um determinado smbolo.

View Apresenta (ou esconde) diferentes elementos do ambiente Delphi e abre janelas do depurador de cdigo (debugger).Comando Project Manager Project Source Object Inspector Alignment Palette Descrio Mostra a janela do Project Manager. Apresenta o arquivo de projeto (.DPR) no Code Editor. Mostra o Object Inspector. Mostra uma janela contendo opes para alinhamento de componentes no formulrio (Alignment Palette). O Ambiente DELPHI 3

Browser Breakpoints Call Stack Watches Threads Modules Component List Window List Toggle Form/Unit Units Forms Type Library New Edit Window SpeedBar Component Palette

Mostra o Object Browser. Apresenta uma janela contendo uma lista dos breakpoints atualmente definidos (Breakpoints List). Apresenta uma lista da seqncia atual das rotinas chamadas por um programa (Call Stack). Apresenta uma janela para visualizar o contedo de variveis durante a execuo de um programa (Watch List). Apresenta um janela de status dos threads (Thread Status). Mostra uma janela contendo os mdulos da aplicao. (Modules). Apresenta uma lista de todos os componentes (Components). Apresenta uma lista das janelas abertas (Window list). Alterna entre o formulrio e sua Unit correspondente. Mostra as Units que fazem parte do projeto. Mostra os formulrios que fazem parte do projeto. Mostra a janela Type Library que permite examinar e criar informaes de tipo para controles ActiveX. Abre uma nova janela para o Code Editor. Esconde/mostra a Barra de Ferramentas (SpeedBar). Esconde/Mostra a Paleta de Componentes.

Project Permite adicionar ou remover novos mdulos em um projeto, bem como compil-lo;Comando Add to Project Remove from Project Import Type Library Add To Repository Compile Build All Syntax Check Information Web Deployment Options Web Deploy Descrio Adiciona um arquivo ao projeto. Remove um arquivo do projeto. Importa uma biblioteca de tipos para um projeto. Adiciona um projeto ao Object Repository. Compila todos mdulos que foram alterados desde a ltima compilao. Compila todos os arquivos do projeto. Compila o projeto sem passar pelo processo de link-edio. Mostra informaes sobre o projeto Configura um controle ActiveX ou ActiveForm para ser efetivamente utilizado em seu servidor Web. Aps configurar e compilar o projeto, utilize este comando para que o controle ActiveX ou ActiveForm seja utilizado pelo servidor Web. Apresenta a janela de opes do projeto (Project Options).

Options

Run Apresenta opes de execuo e depurao do projeto.Comando Run Parameters Register ActiveX Unregister ActiveX Servers Descrio Compila e executa a aplicao. Especifica parmetros de inicializao da aplicao. Registra o projeto no Windows. Disponvel Quando for um projeto ActiveX. Remove o projeto do registro Windows. Disponvel quando for um projeto ActiveX.

O Ambiente DELPHI

4

Step Over Trace Into Trace To Next Source Line Run To Cursor Show Execution Point Program Pause Program Reset Add Watch

Executa um programa linha por linha, sem passar pelas procedures ou functions. Executa um programa linha por linha, passando inclusive pelas procedures e funcitons. Executa um programa parando a cada prxima linha executvel. Executa a aplicao a partir da localizao do cursor na janela Code Editor. Posiciona o cursor no ponto de execuo. Suspende temporariamente a execuo de um programas. Finaliza a execuo do programa e libera a memria. Abre a janela Watch Properties onde podem ser definidas as variveis que sero visualizadas durante a execuo do programa. Abre o Edit Breakpoint onde podem ser definidos breakpoints (pontos de parada do programa). Abre a janela Evaluate/Modify onde pode-se calcular ou alterar o valor de uma expresso.

Add Breakpoint Evaluate/Modify

Component Permite a criao ou instalao de novos componentes no DELPHI.Comandos New Component Install Component Import ActiveX Control Create Component Template Install Packages Configure Palette Descrio Abre o Component Expert para criar uma Unit bsica para um novo componente. Instala um componente em um package (pacote) novo ou j existente. Adiciona bibliotecas de controles ActiveX em um projeto Delphi. Personaliza um componente e salva-o na Paleta de Componentes Especifica os packages (pacotes) requeridos pelo projeto. Abre a janela de configurao de componentes e paletas.

Database Possui ferramentas que permitem criar, modificar e visualizar Consultas e Tabelas de Banco de Dados.Comandos Explore Descrio Abre o Database Explorer ou o SQL Explorer, dependendo da verso do Delphi. Ambos permitem criar, visualizar e alterar dados e Alias. O SQL Monitor permite visualizar chamadas feitas atravs de ligaes SQL (SQL Links) um servidor remoto atravs do ODBC. O Form Wizard permite gerar facilmente formulrios que apresentam dados de um banco de dados InterBase, Paradox, dBASE, ou Oracle.

SQL Monitor

Form Wizard

Tools Permite visualizar e alterar configuraes de ambiente, modificar a lista de programas externos ao Delphi.Comandos Environment Options Descrio Configura o ambiente e personaliza a aparncia da Paleta de Componentes.

O Ambiente DELPHI

5

Repository

Apresenta a janela Object Repository para a configurao das pginas de componentes apresentados no comando New do menu File. Apresenta a janela Tools Options para adicionar ou remover programas do menu Tools. Cria e edita colees de packages (pacotes). As colees de pacotes so uma forma conveniente de agrupar pacotes para distribuio a outros programadores. Cria e edita arquivos de resource (.RES), icones, bitmaps, e cursores para serem usados em aplicaes Delphi. Cria, visualiza, modifica e consulta tabelas em formato Paradox, dBASE, e SQL.

Configure Tools Package Collection Editor

Image Editor Database Desktop

Workgroups Configura o controle de verses em projetos envolvendo vrios programadores. O controle de verses do Delphi feito pelo Intersolv PVCS Version Manager 5.1.Comandos Browse PVCS Projects Manage Archive Directories Descrio Apresenta a janela PVCS Project na qual pode ser feita todas as tarefas referentes ao controle de verses. Quando a janela PVCS est aberta, apresenta a janela Archive Directories que permite adicionar, remover ou criar diretrios para o PVCS Version Control armazenar informaes que compe um projeto. Permite salvar o projeto corrente em um diretrio de controle de verso. Apresenta a janela Data Directories para configurar a localizao de diretrios pblicos e privados.

Add Project to Version Control Set Data Directories

Help Ajuda do DELPHI.Comando Contents Descrio Selecione uma das pginas (Contedo, Indice ou Localizar). A pgina Contedo apresenta uma lista de tpicos organizada hierarquicamente. A pgina ndice apresenta os tpicos listados em ordem alfabtica. A pgina Localizar procura um texto especificado. Abre a janela Help posicionada na opo ndice, descrita anteriormente. Apresenta um resumo as novas caractersticas e extenses do Delphi 3.0 em relao s verses anteriores. Fornece informaes sobre as principais caractersticas do ambiente Delphi e os fundamentos de programao. Descreve a sintaxe e a semntica da linguagem de programao Object Pascal. Fornece informaes para tarefas avanadas. Fala sobre aplicaes de banco de dados, componentes personalizados e aplicaes Internet e Intranet. Explica como trabalhar com COM e ActiveX. Referncia completa da VCL, tipos, rotinas, variveis e constantes. Abre seu Web Browser e posiciona no site da Borland. Ligao direta para o site da Borland que se refere ao Delphi Ligao a sites de programas e servios. Fornece informaes sobre suporte tcnico. O Ambiente DELPHI 6

Keyword Search What's New Getting Started Using Object Pascal Developing Applications

Object and Component Reference Borland Home Page Delphi Home Page Borland Programs and Services

About

Apresenta os direitos autorais e informao sobre a verso utilizada. Possui tambm ligao para o site da Borland.

Barra de FerramentasA barra de ferramentas contm as principais opes do menu principal e utilizada para acessar os comandos de forma mais rpida. O conjunto de botes da barra de ferramentas pode ser personalizada pressionando-se o boto direito do mouse sobre ela e escolhendo-se a opo Properties no menu.

Paleta de ComponentesComponentes so programas que representam os botes, os ComboBoxes, as tabelas. Etc. Cada pgina apresenta um conjunto de cones que representam as classes cujos objetos que sero utilizados nos formulrios das aplicaes. Para adicionar componentes em um formulrio basta seleciona o componente e em seguida posiciona-lo no formulrio. Os componentes podem ser Visuais ou No-Visuais. Os componentes visuais so aqueles que podem ser redimensionados e aparecem no formulrio quando o projeto est sendo executado. Os componentes No-Visuais so visveis apenas em tempo de edio e no podem ser redimensionados. Todo componente Delphi um objeto que pertence a uma classe pr-definida. Em sua maioria um componente possui Propriedades, Mtodos e Eventos. Propriedades so dados relativos a um determinado componente, e que determinam suas caractersticas visuais e seu estado. Por exemplo, o tamanho de um boto, se uma tabela est aberta ou fechada. Eventos so trechos de programas (procedures) que so executados em resposta a uma determinada ao. Essa ao pode ser o clique do mouse sobre um boto da interface, a excluso de um registro em uma tabela, o fechamento de um formulrio, etc. Mtodos so procedimentos ou funes que executam uma determinada operao. Os mtodos esto associados a um determinado objeto e so declarados na classe que este objeto pertence. Por exemplo, existem mtodos para abrir tabelas, fechar formulrios, excluir registros, etc.

O Object InspectorA janela Object Inspector contm propriedades e eventos dos componentes inseridos em um formulrio e tambm do prprio formulrio. A janela do Object Inspector possui um ComboBox e est dividida em duas pginas.

O Ambiente DELPHI

7

A Janela OBJECT INSPECTOR: propriedades e eventos

A pgina Properties (Propriedades) permite que se altere os valores das propriedades dos componentes contidos no formulrio ou ainda as propriedades do prprio formulrio. J na pgina Events (Eventos) estabelecem-se aes a serem tomadas pelo componente a partir de um evento associado ao mouse, teclado, sistema operacional, etc. O ComboBox existente no Object Inspector mostra o componente atualmente selecionado no formulrio e apresenta uma lista com todos os componentes existentes no formulrio.

O Form DesignerUm formulrio (FORM) a janela onde o desenvolvedor constri sua aplicao. A partir de um formulrio que se estabelece a interao usurio-computador, atravs de botes, rtulos e outros componentes, estabelecendo-se funes, mtodos ou eventos que sero ativados. Os componentes so dispostos na rea til do FORM.

O Ambiente DELPHI

8

A Janela FORM: interface.

Existem quatro tipos de formulrios: Normal: o FORM padro; MDIForm: os FORMS do tipo MDI (Multiple Document Interface), podem conter outros FORMS do tipo MDIChild; MDIChild: so FORMS que sempre esto subordinados a um FORM MDIForm; StayOnTop: so FORMS que sempre ficam visveis na tela.

O Code EditorA janela Code Editor (Editor de Cdigo), onde se desenvolve o programa fonte. neste editor que se encontra a estrutura sinttica propriamente dita da Linguagem. Cabe ressaltar, no entanto, que boa parte do cdigo escrito gerado automaticamente. No topo do editor de cdigo encontra-se um controle de mltiplas pginas, onde cada pgina corresponde a um mdulo do programa (Unit). Geralmente as Units esto relacionadas aos formulrios da aplicao. A cada vez que se adiciona um novo formulrio na aplicao, o Delphi adiciona tambm uma nova pgina ao editor de cdigo.

O Ambiente DELPHI

9

A Janela CODE EDITOR: cdigo fonte

O Ambiente DELPHI

10

Biblioteca de ClassesPor ser uma linguagem de programao orientada a objetos o DELPHI possui uma biblioteca de classes denominada de VCL (Visual Component Library), para auxiliar na construo de programas. A biblioteca de classes do DELPHI pode ser visualizada no Browser (comando View|Browser do menu principal). No DELPHI existem as classes visveis e as no visveis. As classes no-visveis oferecem controles especializados que no so possveis ou necessrios atravs da interface visual. As classes no visveis mais comuns so a TApplication, a TScreen e a TPrinter.

2

Classes No-VisveisTApplicationQuando se inicia um projeto em DELPHI, automaticamente criada uma varivel Application que do tipo TApplication. Esta classe permite a interao de sua aplicao com o Windows. A atribuio de valores s propriedades do TApplication pode ser feita apenas em tempo de execuo, ou durante o desenvolvimento do projeto na opo do menu Project - Options. Os principais mtodos da classe TApplication so: Run(): faz com que a aplicao seja executada. Este comando colocado automaticamente no cdigo fonte do projeto (veja em View - Project Source). HelpCommand(): carrega o arquivo de help da aplicao. Algumas das principais propriedades da classe TApplication so: MainForm: contm o formulrio principal da aplicao; Title: contm o ttulo da aplicao que ser apresentado para quando estiver minimizada; HelpFile: armazena o nome do arquivo de Help da aplicao; Icon: contm o cone que representa a aplicao.

TScreenQuando se inicia um projeto em DELPHI, automaticamente criada uma varivel Screen que do tipo TScreen. Esta classe contm as caractersticas da tela na qual a aplicao est rodando. Algumas das principais propriedades da classe TScreen so: Cursor : contm o cursor que est em uso; Cursors: contm a lista dos cursores disponveis para a aplicao;

Fonts: contm a lista de fontes disponveis para a aplicao; Forms: contm a lista de formulrios da aplicao; Height: contm a altura da tela (em pixels); Width: contm a largura da tela (em pixels).

TPrinterQuando se inicia um projeto em DELPHI, automaticamente criada uma varivel Printer que do tipo TPrinter. Esta classe contm as caractersticas da impressora que est sendo utilizada pelo Windows, alm de permitir a impresso. Os principais mtodos da classe TPrinter so: BeginDoc(): inicia um processo de impresso. EndDoc(): finaliza um processo de impresso. Abort(): aborta o processo de impresso. NewPage(): inicia a impresso em uma nova pgina. Algumas das principais propriedades da classe TPrinter so: Printers: contm a lista de impressoras instaladas no Windows. PrinterIndex: contm o ndice da impressora ativada. Orientation: contm a orientao do papel. PageHeight: contm a altura da pgina de impresso. PageWidth: contm a largura da pgina de impresso. PageNumber: contm o nmero da pgina que est sendo impressa. Title: contm o ttulo da pgina impressa. Para a impresso de dados utilizando o TPrinter necessrio utilizar a classe TCanvas.

ComponentesAs classes visveis so aquelas que podem ser manipuladas atravs da Paleta de Componentes, ou seja, so os prprios componentes A paleta de componentes a biblioteca de classes que fornece recursos para o desenvolvimento visual em DELPHI. Os componentes VCL (Visual Component Library) representadas na Paleta de Componentes esto separados em pginas. Os componentes visuais podem ter sua forma e tamanho alteradas no formulrio, alm das propriedades e eventos que podem ser alterados no Object Inspector. Eles aparecem durante a execuo do aplicativo exatamente como foram definidos durante a construo do formulrio.

STANDARDA pgina Standard possui os componentes de interface mais comuns para a construo de aplicaes Windows95/NT.

Pgina Standard: componentes mais comuns

Biblioteca de Classes

12

MainMenu Cria uma barra de menus em um formulrio. Para definir as opes do menu, adicione o componente MainMenu no formulrio e d um duplo-click sobre ele para abrir o Menu Designer. PopupMenu Cria um menu popup que aparece quando o usurio clica o boto direito do mouse. Para definir as opes do menu e, adicione o componente PopupMenu no formulrio e d um duplo-click sobre ele para abrir o Menu Designer. Label Apresenta um texto que o usurio no poder selecionar ou manipular. Edit Apresenta um campo de edio onde o usurio poder digitar uma nica linha de texto. Memo Apresenta uma rea de edio onde o usurio poder digitar diversas linha de texto. Button Cria um boto que o usurio escolhe para iniciar uma determinada ao. CheckBox Representa uma informao do tipo Sim/No. Geralmente utilizado para representar um grupo de opes que no so mutuamente exclusivas, podendo-se selecionar mais de uma opo de um mesmo grupo. RadioButton Apresenta uma informao do tipo Sim/No. geralmente utilizado para representar um grupo de opes mutuamente exclusivas, podendo o usurio escolher apenas uma opo de um mesmo grupo. ListBox Apresenta uma lista de opes. ComboBox Apresenta um campo de edio onde o usurio digita informaes diretamente em uma linha de texto, ou escolher a partir de uma lista previamente definida. ScrollBar Fornece uma forma de alterar a rea visvel de uma lista ou um formulrio. GroupBox Permite definir uma rea para criar um grupo de componentes relacionados. RadioGroup Permite criar uma rea contendo um agrupamento de componentes RadioButton. Panel Permite cria uma rea que pode-se agrupar diversos tipos de componentes. Pode-se ainda utilizar o Panel para criar barra de ferramentas ou linhas de status.

ADDITIONALNa pgina Additional encontram-se outros componentes de interface.

Pgina Additional: componentes especializados BitBtn Cria um boto que pode conter, alm do texto, uma figura bitmap. SpeedButton Cria um boto que pode conter um texto e uma figura. Este tipo de boto freqentemente utilizado em grupos, em uma barra de ferramentas.

Biblioteca de Classes

13

MaskEdit Apresenta um campo de edio onde o usurio digita uma nica linha de texto, similar ao componente Edit. A diferena que o MaskEdit fornece uma forma de especificar um formato particular, tal como CEP, nmero de telefone, etc. StringGrid Cria uma tabela que pode ser usada para apresentar textos divididos em colunas e linhas. DrawGrid Cria uma tabela que pode ser usada para apresentar diversos tipos de dados em forma de tabela. Image Apresenta figuras bitmap, icon, etc. em um formulrio. Shape Desenha figuras geomtricas no formulrio. Bevel Cria linhas e caixas tridimensionais no formulrio. ScrollBox Cria uma rea que apresenta automaticamente barras de rolagem (scrollbars) quando necessrio. CheckListBox Apresenta um lista similar ao ListBox, exceto que cada item possui tambm um CheckBox. Splitter Um componente Splitter pode ser colocado entre dois componentes para permitir ao usurio alterar o tamanho desses componentes em tempo de execuo. StaticText Este componente possui um texto no editvel, como o componente Label. A diferena podese definir uma moldura ao redor do texto. Chart Este componente desenha grficos em um formulrio utilizando uma pequena planilha como fonte de dados

WIN32Os pgina de componente Win32 fornece a maioria dos controles encontrados na interface Windows 95/NT.

Pgina Win32: aplicativos com a aparncia do Windows 95/NT. TabControl Fornece uma rea contendo uma nica pgina de informao e um conjunto etiquetas (Label). PageControl Define mltiplas paginas ou sees de informao em uma mesma janela. Possui etiquetas para acessar cada uma dessas pginas. ImageList Coleo de imagens do mesmo tamanho que podem ser referenciadas atravs de um ndice. Este componente usado para se gerenciar eficientemente um grande conjunto de figuras (cones ou bitmaps). RichEdit Define uma rea de texto que suporta a definio de tipos diferentes de letras (fontes), alm de propriedades de formatao tais como alinhamento, tabulaes, etc. TrackBar Define um determinado valor atravs do deslocamento de um apontador sobre um rgua. Podese configurar a orientao como vertical ou horizontal. Biblioteca de Classes 14

ProgressBar Barra retangular que preenchida da esquerda para a direita, como aquela mostrada quando se copia arquivos no Windows Explorer. Fornece um retorno visual sobre o progresso de uma operao. UpDown Incrementa e decrementa valores atravs de uma seta para cima e uma para baixo.. HotKey Cria e apresenta combinaes de teclas que podero ser usadas como teclas de atalho. Animate Apresenta um vdeo .AVI (Audio Video Interleaved). Possui alguns vdeos pr definidos como aqueles que so apresentados pelo Windows 95 quando se exclui ou copia um arquivo, por exemplo.. DateTimePicker Apresenta um calendrio para a seleo de data. O usurio pode digitar, selecionar atravs de um calendrio ou atravs de setas para cima e para baixo. TreeView Permite apresentar informaes atravs de uma estrutura hierrquica. ListView Fornece diferentes formas de apresentar informaes sob forma de lista. HeaderControl Apresenta um cabealho que pode ser dividido colunas contendo textos ou nmeros. Pode-se configurar o comportamento de cada uma dessas colunas para que, como um boto, execute uma funo especifica quando o usurio clicar sobre ele. StatusBar Define uma rea para apresentar o estado atual de alguma operao, mensagens de erro ou de alerta, avisos, etc. ToolBar Agrupa um conjunto de botes e outros componentes, organizando-os em colunas e ajustando automaticamente seus tamanhos e posies. CoolBar Apresenta uma coleo de linhas (CoolBand) que podem ser movimentados pelo usurio em tempo de execuo.

SYSTEMA pgina System possui controles especializados que interagem com o Sistema Operacional ou com algumas caractersticas de Hardware.

Pgina System: Interao com o Sistema Operacional Timer Timer um componente no-visual que dispara um evento em determinada hora ou repetidamente aps um determinado intervalo de tempo. PaintBox Apresenta uma rea onde permitido apresentar e editar figuras. Este componente utilizado em aplicaes de desenho. MediaPlayer Apresenta um painel de controle para apresentar e gravar informaes multimdia. OleContainer Cria uma rea Object Linking and Embedding (OLE) em um formulrio.

Biblioteca de Classes

15

DdeClientConv DDE uma antiga tecnologia para implementao de comunicao. Para novos projetos deve-se utilizar OLE. O componente DDEClientConv fornece s aplicaes a habilidade de estabelecer uma converso DDE com uma aplicao servidora DDE. Este componente deve trabalhar em conjunto com um componente DDEClientItem para que sua aplicao seja uma aplicao cliente DDE completa. DdeClientItem O componente DDEClientItem define o item da converso DDE. Utilize este componente junto com o componente DDEClientConv para implementar uma aplicao cliente DDE. DdeServerConv Este componente fornece aplicao a habilidade de estabelecer uma converso DDE com um aplicao cliente. Ao utilizar este componentes, sua aplicao ser uma servidor DDE. Este componente utilizado em conjunto com o componente DDEServerItem para que sua aplicao seja um servidor DDE completa. DdeServerItem O componente DDEServerItem define o tpico de uma converso DDE com outra aplicao. Este componente utilizado em conjunto com um componente DDEServerConv.

INTERNETOs componentes da pgina Internet permitem implementar aplicaes que utilizem algum tipo de servio Internet.

Pagina Internet: Componentes para aplicaes Internet ClientSocket Acrescente este componente a um formulrio ou Data Module da sua aplicao para torn-la uma aplicao cliente TCP/IP. O componente ClientSocket define uma conexo a um servidor TCP/IP, gerencia a abertura e a finalizao de uma conexo. ServerSocket Acrescente este componente a um formulrio ou Data Module para tornar sua aplicao um servidor TCP/IP. O componente ServerSocket recebe as requisies TCP/IP de outras mquinas e estabelece tais conexes quando requisitadas. WebDispatcher Converte um Data Module em um WEB Module e permite que o servidor de aplicao Web responda s mensagens HTTP. PageProducer Converte um seqncia HTML em uma a string de comando HTML que pode ser interpretada por uma aplicao cliente, por exemplo, um Browser. QueryTableProducer Monta um seqncia de comandos HTML para gerar uma apresentao tabular de registros provenientes de um objeto Query. DataSetTableProducer Monta uma seqncia de comandos HTML para gerar uma apresentao tabular de registros provenientes de um objeto DataSet. FTP Controle ActiveX que fornece acesso fcil aos servios Internet File Transfer Protocol (FTP) para transferncia de arquivos e dados entre uma mquina remota e uma local.

Biblioteca de Classes

16

HTML Controle ActiveX que implementa um visualizador HTML, com ou sem recuperao automtica de documentos HTML e fornece interpretador HTML, assim como uma viso de uma pgina HTML. O componente HTML pode ainda ser usado como um interpretador HTML no-visual para analisar ou processar documentos HTML. HTTP Controle ActiveX que implementa o Protocolo Cliente HTTP, permitindo aos usurios recuperarem documentos HTTP diretamente, sem possibilidade de navegao. NNTP Controle ActiveX que permite s aplicaes acessarem o Protocolo NNTP, possibilitando leitura e escrita de mensagens no servidor de news POP Controle ActiveX que recupera correios eletrnicos de servidores UNIX ou outro servidor que suporta o protocolo POP3. SMTP Controle ActiveX que permitem as aplicaes acessarem a servidores de correio eletrnico SMTP e a capacidade de enviar mensagens. TCP Controle ActiveX que implementa o protocolo TCP para aplicaes cliente e aplicaes servidoras, fornecendo fcil acesso aos seus servios. UDP Controle ActiveX que fornece fcil acesso aos servios do protocolo UDP (UDP). Implementa o WinSock para cliente e servidor, e representa um ponto de comunicao utilizando servios UDP. Pode ainda ser usado para enviar e receber dados UDP.

DATA ACCESSDe uma forma geral, os componentes da pgina Data Access representam e do acesso aos dados armazenadas fisicamente.

Pgina DataAcess: Componentes de acesso a Banco de Dados DataSource Age como um condutor entre um componente Table, Query, StoredProc e componentes de apresentao de dados tais como DBGrid, DBEdit, etc. Table Recupera dados de um tabela atravs do BDE, fornecendo-os a um ou mais componentes DataSource. Query Utiliza declaraes SQL para recuperar dados de uma tabela atravs do BDE, fornecendo-os a um ou mais componentes do DataSource. StoredProc utilizado quando uma aplicao cliente deve executar um procedimento armazenado no servidor de banco de dados. constitudo de um grupo de instrues armazenados como se fosse uma tabela, e executa uma tarefa que se repete com freqente no servidor, retornando alguns resultados para a aplicao cliente. Database Configura uma conexo a um banco de dados, especialmente um banco de dados remoto. Session Fornece controles a grupos de componentes DataBase que podem ser associados a ele. Um componente Session default automaticamente criado para cada aplicao de Banco de Dados. A criao manual de componentes Session necessria somente na criao de aplicaes multithread que utilizam de banco de dados. Biblioteca de Classes 17

BatchMove Copia a estrutura de uma tabela ou os seus dados. Pode ser usado para copiar tabelas inteiras de um determinado formato para outro. UpdateSQL Permite utilizar o recurso de cached updates com um DataSet de apenas leitura. Por exemplo, poderia se utilizar um componente UpdateSQL para possibilitar a atualizao de um DataSets abilitando a atualizao de DataSets de apenas leitura. Provider Fornece dados de uma aplicao multi-tiered servidora para um DataSet de uma aplicao cliente (ClientDataSet). ClientDataSet utilizado como se fosse um componente DataSet na parte cliente de um aplicao multi-tiered. RemoteServer Em uma aplicao cliente, fornece a conexo a uma servidor de dados remoto. Report Permite que uma aplicao utilize relatrios desenvolvidos em geradores de relatrios independentes tal como o ReportSmith, que era distribudo juntamente com a verso 2.0 do Delphi.

DATA CONTROLSA pgina Data Controls fornecem componentes que permitem construir formulrios para trabalhar diretamente com dados (campos) que esto armazenados em tabelas de banco de dados.

Pgina DataControls: Componentes de interface para Banco de Dados DBGrid Permite visualizar e editar dados de forma tabular, como uma planilha. Pode-se determinar as colunas que sero visualizadas, o formato, a ordenamento, etc. DBNavigator Conjunto de botes que permitem fazer todas as operaes necessrias para a manuteno uma tabela de banco de dados. DBText Apresenta o valor de um campo do registro corrente de uma tabela. DBEdit Apresenta uma caixa de edio onde pode-se visualizar ou alterar o valor de um campo no registro corrente de uma tabela. DBMemo Permite visualizar e editar campos do tipo MEMO. DBImage Permite visualizar e editar imagens bitmap armazenadas no campo de uma tabela. DBListBox Permite visualizar e editar um campo cuja lista de possveis valores provm de uma lista fixa de valores pr-definidos. DBComboBox Componente to tipo Combo, que permite visualizar e editar um campo de uma tabela cuja lista de possveis valores provm de uma lista previamente definida. DBCheckBox Apresenta ou edita um campo booleano de uma tabela.

Biblioteca de Classes

18

DBRadioGroup Grupo de botes do tipo RadioButton que apresenta um conjunto de valores que podem ser armazenados em um campo de uma tabela. DBLookupListBox Apresenta um campo de uma tabela cuja lista de possveis valores provm de um campo de outra tabela. DBLookupComboBox Componente do tipo Combo, que permite visualizar e editar um campo de uma tabela cuja lista de possveis valores provm de um campo de outra tabela. DBRichEdit Controle de edio que permite apresentar e editar campos memo formatados. DBCtrlGrid Permite apresentar e editar dados de forma tabular, sendo que cada clula pode conter vrios campos de um mesmo registro. DBChart Este componente desenha grficos em um formulrio utilizando uma tabela de banco de dados como fonte de dados..

DECISION CUBEOs componentes da pgina Decision Cube (disponveis somente na verso Client/Server) acrescenta recursos para anlise multidimensional de dados atravs de referncia cruzada entre tabelas de banco de dados, utilizando as poderosas caracterstica da linguagem SQL.

Pgina DecisionCube: Anlise multidimensional de dados DecisionCube Um depsito de dados multidimensional. DecisionQuery Forma especializada de Query usada para definir dados em um Decision Cube. DecisionSource Define o piv atual de um componente DecisionGrid ou um componente DecisionGraph. DecisionPivot Botes utilizados para abrir ou fechar dimenses ou campos de um DecisionCube. DecisionGrid Apresenta dados multidimensionais de forma tabular. DecisionGraph Apresenta campos de um DecisionGrid como um grfico dinmico que se altera quando suas dimenses so modificadas.

QREPORTOs componentes da pgina QReport permitem construir relatrios atravs da definio de da definio de faixas, ttulos, cabealhos, sumrios, grupos, etc. Podese gerar relatrios a partir de qualquer tipo de DataSource: Table, Query, etc. Durante a montagem do relatrio possvel visualiza-lo atravs do Preview.

Pgina QReport: Componentes para a construo de relatrios Biblioteca de Classes 19

QuickRep Formulrio bsico para a construo de relatrios, onde so colocados todos componentes do relatrio. um componente visual que possui o tamanho do papel selecionado (A4, Legal, etc.). Um relatrio criado desenhando-se faixas e outros componentes sobre um QuickRep conectado a um DataSet. QRSubDetail Faz a ligao de DataSets adicionais em um relatrio. Tipicamente utilizado para construir relatrios do tipo Master/Detail. QRBand Adicione um componente QRBand em seu relatrio e configure a propriedade BandType para especificar o seu comportamento durante a gerao do relatrio. QRChildBand Faixas filhas (Child Bands) so usadas como extenses das faixas regulares de um relatrio. QRGroup Define o inicio e o final de um grupo de registros conforme determinado atributo. utilizado para a definio das quebras de um relatrio. QRLabel Imprime um texto ou outra informao que no provm de um banco de dados. QRDBText uma verso do componente QRLabel que imprime o valor de campos calculados e campos texto, incluindo campos string, numrico, data e memo. QRExpr Imprime campos de banco de dados, clculos e textos estticos. QRSysData Imprime informaes do sistema, tais como data, hora, nmero da pgina, etc. QRMemo Imprime uma grande quantidade de texto que no provm de um campo de banco de dados Pode ser texto esttico ou pode-se alterar durante a gerao do relatrio.. QRRichText Permite imprimir no relatrio um texto formatado. QRDBRichText Permite imprimir no relatrio o texto formatado armazenado em um campo de uma tabela. QRShape Apresenta figuras simples tais como retngulos, crculos e linha em um relatrio. QRImage Apresenta uma figura em um relatrio. QRDBImage Imprime imagens armazenadas em campos de banco de dados. QRCompositeReport QRPreview Define uma rea para a visualizao de relatrios, no formato em que iriam ser impressos. QRChart Permite a impresso de diversos tipos grficos.

DIALOGSOs componentes da pgina Dialogs implementam as caixas de dilogo do Windows 95/NT. Caixas de dilogo fornecem uma interface consistente para operaes com arquivo, tais como abertura, gravao e impresso.

Biblioteca de Classes

20

Pgina Dialogs: Caixas de dilogo j prontas. OpenDialog Apresenta uma caixa de dilogo para abertura de arquivos, comum nas aplicaes Windows 95/NT. SaveDialog Apresenta uma caixa de dilogo para gravar arquivos, comum nas aplicaes Windows 95/NT OpenPictureDialog Apresenta uma caixa de dilogo para abertura de arquivos grficos, onde o usurio pode visualizar a imagem armazenada no arquivo selecionado. SavePictureDialog Apresenta uma caixa de dilogo para gravao de arquivos grficos. Idntica ao SaveDialog, exceto que possui uma rea onde apresentado a imagem que ser gravada. FontDialog Apresenta uma caixa de dilogo que permite especificar o tipo de letra (fonte), seu tamanho e estilo. ColorDialog Apresenta a caixa de dilogo para seleo de cores. PrintDialog Mostra uma caixa de dilogo que permite especificar informaes de impresso, tais como as pginas a serem impressas, o nmero de cpias, etc. PrinterSetupDialog Mostra uma caixa de dilogo que permite a configurao da impressora. FindDialog Apresenta uma caixa de dilogo que permite especificar uma String de pesquisa. ReplaceDialog Mostra uma caixa de dilogo que permite especificar uma String de pesquisa e uma String para substituio.

Win 3.1Possui componentes de interface no padro Windows 3.1. Estes componentes servem para manter a compatibilidade com as aplicaes desenvolvidas em Delphi 1.0 (Windows 3.1).

Pgina Win3.1: Compatibilidade com o Windows 3.1

SAMPLESOs componentes da pgina Samples so exemplos de componentes personalizados. O cdigo fonte destes componentes esto disponveis no diretrio DELPHI 3\SOURCE\SAMPLES (instalao Default).

Pgina Samples: Alguns exemplos de componentes.

Biblioteca de Classes

21

Gauge Barra retangular que preenchida da esquerda para a direita. Fornece um retorno visual sobre o progresso de uma operao. ColorGrid Apresenta uma tabela de cores. SpinButton Semelhante ao componente UpDown. Uma diferena que o componente SpinButton permite definir uma figura para os botes. SpinEdit Semelhante ao componente UpDown. Uma diferena que j apresenta um campo onde apresentada a informao. DirectoryOutline Apresenta a rvore de diretrios do disco, semelhante ao que apresentado pelo Windows/NT Explorer. Calendar Implementao de um calendrio. IBEVentAlerter

ActiveXOs componentes na pgina ActiveX so objetos completos apresentados como exemplos. Para utiliza-los deve-se primeiro abrir um formulrio ActiveX em um projeto ActiveX. Aps posicionar um componente em um formulrio ActiveX, clique o boto direito do mouse para ser apresentadas as propriedades e outros comandos.

Pgina ActiveX: Exemplos da utilizao de componentes ActiveX Chartfx Permite criar grficos personalizados. Selecione as propriedades para apresentar um painel de controle que permite definir valores, aparncia e algumas outras caractersticas. VSSpell Visual Speller, um corretor ortogrfico personalizado. F1Book Formula One. Permite implementar uma planilha de clculo. VtChart Permite-se criar grficos 3D. VtChart Pinnacle Graph, permite gerar grficos 2D.

Biblioteca de Classes

22

Parte

IIProgramao Orientada a Objetos POO

Orientao a ObjetosO termo orientado a objetos tem sido to usado e abusado que o seu sentido concreto se perdeu. Tem caracterizado desde modelos de administrao a mtodos de auto-ajuda. Muitos produtos de softwares que alegam ser orientados a objetos no o so. s vezes possuem alguns recursos baseados em objetos, outras vezes nem isso. Toda essa confuso de conceitos fez com que ningum hoje soubesse mais o que realmente vem a ser orientado a objetos. A linguagem utilizada pelo Delphi (Object Pascal) uma orientada a objetos. Para melhor entender o Delphi importante compreender os conceitos da programao orientada a objetos (POO). Apesar de ser um assunto muito badalado, o conceito de POO no novo. Tem quase trinta anos de idade. Foi introduzido pela primeira vez na linguagem Simula-67. Desde ento surgiram vrias outras linguagens com esses conceitos como SmallTalk Eiffel. C++, a mais popular, na verdade uma linguagem hbrida. uma extenso do C com suporte a classes e objetos, mas permite que se desenvolva programas sem classes ou objetos.

3

Porque Usar Objetos?As vantagens de se usar objetos como blocos para a construo de aplicaes so muitas. Pode-se citar: Simplicidade: Os objetos escondem a complexidade do cdigo. Pode-se criar uma complexa aplicao grfica usando botes, janelas, barras de rolagem, etc.. sem conhecer detalhes do cdigo fonte utilizado para cri-los. Reutilizao de cdigo: Um objeto, depois de criado, pode ser reutilizado por outras aplicaes, Ter suas funes estendidas e serem usados como blocos fundamentais em sistemas mais complexos.

Elementos do Modelo Orientado a ObjetosOs autores divergem quanto s caractersticas que fazem uma linguagem ser orientada a objetos, mas a maioria concorda que o paradigma se baseia em quatro princpios bsicos: abstrao, encapsulamento, herana e polimorfismo.

Abstrao o processo de extrair as caractersticas essenciais de um objeto real. A abstrao essencial para se ter um modelo fiel da realidade. O conjunto de caractersticas resultante da abstrao forma um tipo abstrato de dado, com informaes sobre estado e comportamento. A abstrao nem sempre produz os mesmos resultados. Depende do contexto onde utilizado. Ou seja, a abstrao de um objeto por uma pessoa pode ser diferente na viso de outra. Por exemplo, para um mecnico, um carro caracterizado pela marca, modelo, potncia, etc. J um usurio comum o caracteriza pela cor, marca modelo,

preo. E finalmente, para o DETRAN, um carro totalmente caracterizado pela placa, proprietrio, marca, modelo, cor e nmero de chassi.

Encapsulamento o processo de combinar tipos de dados e funes relacionadas em um nico bloco de organizao e s permitir o aceso a eles atravs de mtodos determinados. Por exemplo, existe um nmero determinado de coisas que se pode fazer com um toca-fitas. Pode-se avanar, voltar, gravar, tocar, parar, interromper e ejetar a fita. Dentro do toca-fitas, porm, h varias outras funes sendo realizadas como acionar o motor, deslig-lo, acionar o cabeote de gravao, liberar o cabeote, e outras operaes mais complexas. Essas funes so escondidas dentro do mecanismo do toca fitas e no temos acesso a elas diretamente. Quando apertamos o play o motor ligado e o cabeote de reproduo acionado, mas no precisamos saber como isso feito para usar o toca fitas. Uma das principais vantagens do encapsulamento esconder a complexidade do cdigo. Outra, proteger os dados, permitindo o acesso a eles apenas atravs de mtodos. Dessa maneira evita-se que seus dados sejam corrompidos por aplicaes externas.

Herana o aproveitamento e extenso das caractersticas de uma classe j existente. Existem muitos exemplos de herana na natureza. No reino animal, os mamferos herdam a caracterstica de terem uma espinha dorsal por serem uma subclasse dos vertebrados. Acrescentam a essa caracterstica, vrias outras, como Ter sangue quente, amamentar, etc. Os roedores herdam todas as caractersticas dos vertebrados e mamferos e acrescentam outras, e assim por diante. Em programao, a herana ocorre quando uma classe aproveita a implementao (estrutura de dados e mtodos) de uma outra classe para desenvolver uma especializao dela. formada ento uma hierarquia de classes, onde cada nvel uma especializao do nvel anterior, que mais genrico.

Polimorfismo a propriedade de se utilizar um mesmo nome para fazer coisas diferentes. Por exemplo, mandar algum correr pode produzir resultados diferentes dependendo da situao. Se a pessoa estiver parada e em p, ir obedecer ordem simplesmente correndo. Ser a pessoa estiver no volante de um carro, o resultado ser o aumento da presso do p no acelerador. Em programao, uma mesma mensagem poder provocar um resultado diferente, dependendo dos argumentos que foram passados e do objeto que o receber. Por exemplo: o envio de uma instruo desenhe() para uma subclasse de polgono, poder desenha um tringulo, retngulo, pentgono, etc. dependendo da classe que a receber.

O que um Objeto?Objetos so a base da tecnologia orientada a objetos. Consistem de modelos (abstraes) de objetos reais, com seus estados e seus comportamentos. Qualquer objeto real pode ser abstrado, filtrando-se seus estados e comportamentos.

Orientao a Objetos

25

Objeto Carro Gato Caneta Toca-fitas

Estado

Comportamento acelera, d

Velocidade atual, marcha, cor, troca marchas, modelo, marca partida, freia.

nome, raa, com fome, com mia, dorme, se estica, brinca, preguia caa. cor, nvel da tinta escreve, coloca mais tinta ligado, sentido da fica, tocando, grava, toca, avana, volta, para, gravando pausa, ejeta, liga.

Em programao, o estado de um objeto representado por variveis, e seu comportamento implementado com mtodos (procedimentos). Os mtodos so o nico meio de mudar o estado das variveis. Por exemplo, para mudar o estado do toca-fitas para ligado, necessrio utilizar o mtodo liga().

Tudo o que o objeto de software sabe (seu estado) e tudo o que ele pode fazer (comportamento) determinado pelas suas variveis e mtodos. Vamos representar o modelo de um automvel atravs de um objeto de software. As variveis indicam o seu estado atual: Velocidade = 77 Km/h, marcha = 4 e cor = vermelho. DPartida(), acelera(), trocaMarcha() e freia() so mtodos que podem mudar o estado das variveis (velocidade e marcha). O objeto que vamos construir se chamar ferrari.

Orientao a Objetos

26

Um objeto sozinho no tem muita utilidade. Um carro sozinho, sem motorista, na garagem, s serve de enfeite. Para se conseguir alguma funcionalidade dos objetos, necessrio que haja uma interao com outros objetos. S assim se pode construir modelos de comportamento mais complexo. Objetos de software se comunicam entre si atravs de mensagens. No exemplo do automvel, o objeto motorista envia uma mensagem para o objeto ferrari, invocando o mtodo trocaMarcha(), com o parmetro 5 (quinta-marcha). Com esta informao, o mtodo desejado executado, provocando a mudana das variveis do objeto ferrari.

Para realizar a mudana acima em Delphi (Object Pascal), dentro do cdigo do objeto motorista haveria uma linha do tipo: ferrari.trocaMarcha(5) assim que o Object Pascal representa a invocao do mtodo de um objeto. O primeiro nome (ferrari) o objeto. Aps o ponto, vem uma varivel (atributo/propriedade) ou mtodo.Orientao a Objetos 27

O que so Classes?Classes so prottipos utilizados para construir objetos. As caractersticas de estado e comportamento do objeto ferrari, ilustrado nos exemplos anteriores, so caractersticas de qualquer automvel que sai da fbrica. Essas caractersticas so definidas nas classes. A figura abaixo representa uma classe. Observe a semelhana com o diagrama que utilizamos para representar os objetos. A classe no um objeto pois no possui um estado, nem um comportamento especfico. Ela no algo que existe e que possua estados.

Para produzir todos os automveis que saem da fbrica, poderamos definir uma classe chamada Automvel. Esta classe teria a declarao das variveis que sero utilizadas para armazenar a cor, velocidade e marcha, alm da implementao dos mtodos que cada automvel deve ter.

Os objetos so instncias das classes. Quando criamos um objeto, dizemos que instanciamos uma classe. Cada instncia uma entidade individual e pode ento receber valores para as suas variveis e modific-las atravs de mtodos. Com a classe Automvel, podemos criar agora vrios automveis com as mesmas caractersticas bsicas. Por exemplo, se ferrari, fusca, porsche so instncias de Automvel, todos possuem uma velocidade, uma posio de marcha e uma cor,Orientao a Objetos 28

e podem dar partida, acelerar, freiar e trocar marcha. Porsche pode ser vermelho e estar a 193 Km/h, enquanto fusca pode ser preto e estar parado. A grande vantagem de se usar classes a reutilizao do cdigo. Toda a estrutura de um objeto definida na classe, que depois utilizada quantas vezes for necessrio para criar vrios objetos.

HeranaNo bastasse a reutilizao do cdigo proporcionado pelas classes, na criao de objetos, a POO vai mais longe e define meios de permitir em uma classe, a reutilizao do cdigo de outras classes. As caractersticas cor, velocidade, marcha, etc. podem estar definidas em uma classe chamada de Veculo Motorizado, que declara mtodos trocaMarcha(), dPartida(), acelera(), etc. Esses mtodos e varveis podem ser herdadas pelas classes Automvel, Motocicleta e Caminho que so veculos motorizados.

Desta maneira, est formada uma hierarquia de classes. Veculo Motorizado superclasse de Automvel, Caminho e Motocicleta, que por sua vez, so subclasses de Veculo Motorizado. O cdigo escrito uma nica vez e usado por vrias classes diferentes. Cada classe herda caractersticas de sua superclasse, mas no est limitada implementao oferecida nela. A subclasse uma especializao da superclasse e pode definir novas variveis, novos mtodos e at sobrepor mtodos definidos na superclasse. Automvel, por exemplo, pode acrescentar novos mtodos como abrirPorta() e abrirMala(). Motocicleta deve sobrepor o mtodo acelera(), trocaMarcha(), dPartida() e freia() com umaOrientao a Objetos 29

implementao especfica para motos. Caminho pode acrescentar novas variveis capacidadeDeCarga, nmeroDeEixos, etc. para caracterizar melhor os objetos que sero produzidos.

Delphi e a POOPara se definir uma classe no DELPHI deve-se empregar a seguinte sintaxe:type classe = class(superclasse) atributos mtodos end;

atributos: seguem as regras das declaraes de variveis; mtodos: seguem as regras das declaraes de subprogramas (function e procedure). No DELPHI: A classe me denominada TObject. Esta classe deve ser utilizada quando a classe no tiver bem definida sua classe me. A definio de uma classe deve ser feita na rea de interface de uma UNIT. Convenciona-se iniciar o nome de uma classe com a letra T. A definio da classe TPessoa, em DELPHI, seria:type TPessoa = class(TObject) Nome : string; Endereo : string; procedure AtualizarDados (Nome, Endereo : string); end;

No entanto esta definio no est completa, pois deve-se definir o qualificador de acesso permitido para cada atributo ou mtodo.

Qualificadores de AcessoNo DELPHI pode-se definir o tipo de acesso que uma classe-objeto ter sobre os atributos ou mtodos de outra classe-objeto. Os principais qualificadores de acesso em DELPHI so: Private: as declaraes feitas nesta rea no podem ser acessadas por outras classes-objetos; Protected: as declaraes feitas nesta rea s podem ser acessadas pelas classes filhas da classe-objeto; Public: as declaraes feitas nesta rea podem ser acessadas por qualquer outra classe-objeto. Sendo assim, uma definio mais completa da sintaxe de uma classe, em DELPHI :

Orientao a Objetos

30

classe = class(superclasse) private {declaraes privativas} protected {declaraes protegidas} public {declaraes pblicas} end;

Uma nova definio para a classe TPessoa poderia ser:classe = pessoa(TObject) private Nome: String; Endereco: String; protected {declaraes protegidas} public procedure AtualizaDados( Nome, Endereco: String); end;

Definindo-se os atributos Nome e Endereo como private eles s podem ser alterados pelo mtodo AtualizarDados, que por sua vez poder ser acessado por qualquer outra classe-objeto. No entanto esta definio no est completa. Uma classe-objeto em DELPHI precisa ser criada ou destruda atravs de Construtores e Destrutores.

Construtores e DestrutoresQuando uma nova classe definida em DELPHI necessrio declarar construtores. Um construtor permite criar a instncia de uma classe, ou seja, um objeto. Convenciona-se chamar um construtor pelo nome de Create. Um construtor denotado pela palavra Constructor. Ao contrrio dos construtores, os destrutores so utilizados para liberar a instncia da classe. Ao destrutor convenciona-se o nome de Destroy. Um destrutor denotado pela palavra Destructor. Sendo assim, uma nova definio para a classe TPessoa poderia ser:type TPessoa = class(TObject) private Nome : string; Endereco : string; public procedure AtualizarDados(Nome, Endereco : string); protected constructor Create; destructor Destroy; end;

O constructor Create foi colocado na rea protected. Isto significa que ele s pode ser acessado pelas subclasses da classe TPessoa. Deste modo, a classe TPessoa nuncaOrientao a Objetos 31

poderia ser um objeto, pois seu construtor no pode ser acessado por outras classesobjetos. Poderamos considerar esta definio como definitiva. No entanto, falta agora a implementao dos mtodos AtualizarDados e Create.

Implementao de ClassesA implementao das classes deve ser feita na rea de implementation de uma UNIT, e segue as regras normais da linguagem Turbo Pascal. A seguir apresentada a implementao completa da classe TPessoa.unit Pessoas; interface type TPessoa = class(TObject) protected Nome : string; Endereco : string; constructor Create; destructor Destroy: public procedure AtualizarDados (Nome, Endereco: string); end; implementation constructor TPessoa.Create; begin inherited Create; Nome := ; Endereco := ; end; destructor TPessoa.Destroy; begin inherited Destroy; end; procedure TPessoa.AtualizarDados(Nome, Endereco: string); begin Self.Nome := Nome; Self.Endereco := Endereco; end; end.

Trs detalhes importantes devem ser notados na implementao da classe TPessoa: o constructor Create e as clusulas inherited e self.

Orientao a Objetos

32

Constructor CreateNo constructor Create podem ser omitidos as inicializaes dos atributos. Eles devem aparecer apenas quando deseja-se inicializar um atributo com um determinado valor.

InheritedA clusula inherited, no constructor Create, indica que o mtodo Create foi herdado da classe-me (no caso, TObject).

SelfA clusula self, na procedure AtualizarDados, indica que o atributo referenciado o da classe, e no a varivel passada como parmetro.

Orientao a Objetos

33

Object PascalA linguagem Object Pascal proveniente da linguagem Pascal, que durante a dcada de 80 fez grande sucesso comercial atravs do Turbo Pascal. A estrutura bsica da linguagem, a maioria de seus comandos e sua sintaxe elegante ainda permanecem. Porm, com a evoluo para a programao orientada a objetos, a forma de se trabalhar com a linguagem e algumas de suas caractersticas foram sendo alteradas. Passou-se do Turbo Pascal 7 para o Turbo Pascal para Windows, que no fez o mesmo sucesso. Com o Delphi, a linguagem Pascal assume outra vez o lugar de destaque que sempre mereceu. Agora com o nome Object Pascal, muitas de suas caractersticas, que muitos pensam ser fruto de atualizaes posteriores, na verdade j faziam parte da linguagem padro, idealizada e concebida pelo seu criador, Niklaus Wirth.

4

ComentriosComo ponto inicial, voc deve saber como fazer comentrios em seu programa Pascal. O Delphi suporta trs tipos de comentrios:{ Comentrios utilizando chaves } (* Comentrios usando parente e asterisco *) // Comentrios no estilo C++

VariveisA linguagem Object Pascal requer que se declare todas as variveis, antes de se iniciar uma procedure, function ou program. Isto significa que o cdigo escrito em Object Pascal, obedece a uma estrutura um pouco mais rgida do que em outras linguagens:Procedure Foo; Var x, y: integer; f: double; Begin X := 1; Inc(x); y := 2; // ... end;

A linguagem Object Pascal, diferentemente das linguagem C e C++, no consideram maisculas e minsculas como formas diferentes. Por exemplo, X e x se referem a uma mesma varivel.

Dica

A utilizao de letras MAISCULAS e minsculas pode ser til para dar clareza aos nomes de variveis, procedures, functions, etc. Por exemplo, a seguinte declarao Procedure estaprocedurenaofaznada; difcil de ler. Ficaria bem melhor da seguinte forma: Procedure EstaProcedureNaoFazNada; Note como a Object Pascal permite voc agrupar mais de uma varivel de mesmo tipo juntas em uma mesma linha:x, y: Integer;

Uma caracterstica implementada a partir da verso 2.0 do Delphi, permite se inicializar variveis globais na prpria declarao.Var I: integer = 10; P: Pointer = Nil; S: String = Alo mamae!; D: Double = 3.141579

A inicializao prvia de variveis permitida apenas para variveis globais e no aquelas que so locais a uma procedure ou function.

ConstantesAs constantes so definidas aps a clusula const, similar linguagem C, como no exemplo abaixo:const float AdecimalNumber = 3.14; const int i = 10; const char *ErrorStrng = Perigo, perigo, perigo!;

A diferena entre as constantes entre C e Object Pascal que em Pascal no preciso declara o tipo de uma constante. O compilador Delphi aloca automaticamente o espao apropriado para a constante baseado em seu valor.Const AdecimalNumber = 3.14; i = 10; ErrorString = Perigo, perigo, perigo!;

Opcionalmente pode-se especificar o tipo de uma constante.Const AdecimalNumber: double = 3.14; i: Integer = 10; ErrorString: string = Perigo, perigo, perigo!;

A linguagem Object Pascal permite o uso de algumas funes nas declaraes de constantes e variveis. Estas funes incluem Ord(), Chr(), Trunc(), Round(), High(), Low() e SizeOf().

Object Pascal

35

Type A = array[1..2] of integer; Const W: word = Sizeof(Byte); Var I: integer = 8; J: SmallInt = ord(a); L: LongInt = Trunc(3.14159); X: ShortInt = Roud(2.17828); B1: byte = High(A); B2: byte = Low(A); C: Char = Chr(46);

Se durante a execuo de um programa tentar-se alterar o valor de uma constante, o Delphi apresenta um erro de compilao.

OperadoresOs operadores so smbolos que habilitam a manipulao de todos os tipos de dados. Em Object Pascal os operadores esto definidos basicamente em: operador de atribuio, operadores aritmticos, operadores lgicos, operadores relacionais, etc.:

Operador de AtribuioO operador de atribuio utilizado para alterar o contedo das variveis. Para atribuir um valor a uma varivel utiliza-se o operador :=.PI := 3.1415; Mens := Pressione OK para sair

Operador de ComparaoO Object Pascal utiliza o operador = para realizar comparaes lgicas entre duas expresses ou dois valores.if X = Y then ...

Operadores LgicosO Pascal utiliza as palavras and, or e not como operadores lgicos.If (condio1) and (condio2) then FazIsso While (condio1) or (condio2) do FazAquilo If not (condio) then FacaAlgumaCoisa; Operador Atribuio Comparao Smbolo

:= =Object Pascal 36

Diferena Menor Maior Menor ou igual Maior ou igual

e lgico ou lgico not lgico

< > = and or not

Operadores AritmticosDe forma geral, os operadores aritmticos so os mesmos existentes em outras linguagens de programao. A diferena que o Pascal possui diferentes operadores de diviso. O operador div (diviso inteira) trunca automaticamente o resultado final da diviso.Operador Adio Subtrao Multiplicao Diviso Real Diviso Inteira Resto da Diviso Ateno Smbolo

+ * / div mod

Use o operador de diviso correto para os tipos de expresses que se est trabalhando. O compilador ir apresentar um erro ao dividir dois nmeros de ponto flutuante utilizando o operador inteiro div ou dois inteiros utilizando o operador /.

Operadores de Incremento e DecrementoOs operadores de incremento e decremento geram um cdigo mais otimizado para a adio e subtrao de variveis inteiras. Os comando Inc() e Dec() realizam a adio e a subtrao. Pode-se utilizar estes operadores como um ou dois parmetros.... var VInt: Integer; begin VInt := 10; Inc(VInt) := VInt + 1 Inc(VInt, 3) Dec(Vint, 5) end. // Produz resultado idntico a VInt // idntico a VInt := VInt + 3 // idntico a Vint := Vint - 5

Tipos de DadosA definio de tipos de dados corretos para as variveis muito importante, pois alm de permitirem a economia de memria, eles tem, em muitos casos, de ter compatibilidade com os seus respectivos tipos de dados do Windows.Object Pascal 37

Tipos de Dados NUMRICOS INTEIROSTipo Byte ShortInt Word SmallInt Longint Tamanho (em bytes) 1 1 2 2 4 Domnio 0..255 -128..127 0..65535 -32768..32768 -2147483648..2147483647

Os tipos inteiros genricos so CARDINAL e INTEGER. O tipo Cardinal representa um inteiro sem sinal e o tipo Integer representa um inteiro com sinal. O tamanho e formato do tipo Integer e do tipo Cardinal variam de acordo com as diferentes implementaes da linguagem Object Pascal, mas geralmente so aqueles resultam em operaes inteiras mais eficientes para uma determinada CPU ou Sistema Operacional.Tipo Cardinal Integer Cardinal Integer Tamanho (em bytes) 2 2 4 4 Domnio -32768.. 32767 0.. 65636 0.. 2147483647 -2147483648.. 2147483647

Tipos de dados NUMRICOS REAIS e MOEDATipo Single Real Double Extended Comp Currency Tamanho (em bytes) 4 6 8 10 8 8 Domnio 1.5 * 10-45 .. 3.4 * 1038 2.9 * 10-39 .. 1.7 * 1039 5.0 * 10-324 .. 1.7 * 10308 3.4 * 10-4932 .. 1.1 * 104392 -26310 .. 263-10 -922337203685477.5808.. 922337203685477.5807

O tipo Currency o tipo MOEDA. Ele tem preciso de quatro casas decimais e compatvel com os bancos de dados que representam dinheiro.

Tipos de dados BOOLEANOSTipo Boolean ByteBool WordBool LongBool Tamanho (em bytes) 1 1 2 4 Armazenamento 1 byte 1 byte uma palavra uma palavra dupla

A existncia de diversos tipos lgicos que armazenam a mesma coisa (TRUE ou FALSE) d-se pela necessidade de compatibilizao com os tipos do Windows.Object Pascal 38

Tipos de Dados CaracterTipo Char AnsiChar WideChar Tamanho (em bytes) 1 1 2 Armazenamento 1 caracter ANSI 1 caracter ANSI 1 caracter Unicode

AnsiChar: o padro de caracteres ANSI de 1 byte que todos ns conhecemos. WideChar: um tipo de 2 bytes surgido com o Delphi 2 para representar um caracter Unicode. Char: idntico ao AnsiChar.

Tipos de Dados StringTipo ShortString AnsiString String WideString Tamanho (em bytes) 255 at 3 Gb 255 ou at 3 Gb at 1,5 Gb Armazenamento ANSIChar ANSIChar ANSIChar WideChar

O tipo AnsiString padro. Quando declarada uma varivel como STRING assumido AnsiString. Este tipo surgiu com o Delphi 2 para facilitar a manipulao de strings que excediam o tamanho de 255 caracteres (ShortString). As variveis declaradas com este tipo so alocadas dinamicamente e s ocupam memria enquanto esto sendo utilizadas e a medida que vo aumentando de tamanho, o seu espao em memria realocado automaticamente.

Tipo PCharO tipo PChar permite tambm que voc manipule strings. Quando voc utiliza uma varivel com o tipo Pchar, o Delphi assume que todo o gerenciamento de alocao e liberao de memria ser realizado pelo cdigo do programa. As variveis do tipo PChar possuem como delimitador de fim de string o caracter especial #0.

Tipo VariantO tipo de dados variant um tipo nico que pode manipular diferentes tipos de dados. O tipo variant pode manipular strings, inteiros, reais, entre outros. Porm uma varivel do tipo variant no poder manipular tipos de dados dinmicos, como, por exemplo, os ponteiros (pointer) e as classes de dados (os objetos). Exemplo

Object Pascal

39

... Var V1, V2, V3: Variant; Begin V1 := 1200; V2 := Borland Delphi; V3 := 3.1415; V1 := V1 + V2 + V3; end.

Note que para o mesmo tipo foram atribudos trs diferentes tipos. Portanto, deve-se tomar cuidado quando realizar operaes envolvendo este tipo de dado. No exemplo acima, o contedo da varivel V1 ser igual a 1200Borland Delphi3.1415. Veja que neste caso o compilador ir converter todos as variveis envolvidas na operao para o tipo String e realizar uma concatenao.

Tipos Definidos pelo UsurioNmero inteiros, strings e ponto flutuante freqentemente no so suficientemente adequados para representar variveis nos problemas do mundo real. Neste casos deve-se criar tipos complexos para melhor representar variveis de um determinado problema. Em Pascal, os tipos definidos pelo usurio geralmente so da forma de registros (records) ou objetos.

ArraysA linguagem Object Pascal permite criar arrays (matrizes) de qualquer tipo. Por exemplo, uma varivel declarada como Array com oito nmeros inteiros:Var A: Array[0..7] of integer;

A declarao de arrays em Pascal possui uma propriedade que difere de outras linguagens: A array no precisa iniciar com um determinado nmero.Var A: Array[28..30] of integer;

RecordsO tipo record permite que se agrupe em uma nica varivel, um conjunto de tipos de dados diferentes. A aplicao deste tipo de dado bastante semelhante ao conceito de registro, ou seja, ou seja, uma varivel do tipo record composta por vrios campos. Record tipo estruturado em Pascal, equivalente ao struct do C.

Object Pascal

40

{ Pascal } Type MyRec = record I:integer; D:double; end

/* C */ typedef struct { int i; double d; }MyRec;

Quando se trabalha com records, utiliza-se o caracter ponto para acessar cada campo.... var N: MyRec Begin N.i := 23; N.d := 3.4; end;

PointersO tipo de dado Pointer uma varivel que armazena um endereo de memria, e no um valor, como estamos acostumados a trabalhar. Um exemplo de varivel do tipo pointer o tipo Pchar, mostrado anteriormente. Existem duas formas de implementao para o tipo pointer: pointer tipados e pointers no tipados. Uma varivel pointer tipada quando se conhece o tipo de dado que est armazenado no endereo de memria contido na varivel pointer.... var PP1: ^Integer; begin New(PP1); // Aloca memria para a varivel PP1 // apontada pela varivel PP1 Dispose(PP1); // Libera memria que foi alocada para PP1 end. PP1^ := 1998; // Atribui valor ao endereo de memria

Uma varivel pointer no-tipada uma varivel que armazena um endereo de memria que no se conhece o tipo de contedo deste endereo.... var PP2: Pointer; begin GetMem(PP2, 100); //Aloca 100 bytes para PP2 //memria apontado pela varivel PP2 FreeMem(PP2); end. // Libera memria alocada para PP2 StrPCopy(PP2, Delphi 3) //Atribui valor ao endereo de

muito comum a utilizao de variveis do tipo record juntamente com o pointer para a implementao de listas (pilhas, filas, rvores, grafos, etc.).

Object Pascal

41

ObjetosPode-se dizer que um objeto um record que contm functions e procedures.type TobjetoFilho = class( TObjetoPai ) V: Integer; procedure FazNada; end;

Estruturas de DecisoNo Object Pascal existem dois comandos para tomar decises durante a execuo de um programa. So as instrues IF e CASE.

O comando IFA instruo IF permite controlar a execuo de outras instrues (ou bloco de instrues) do programa, dependendo do valor de uma varivel ou expresso booleana. Quando a expresso booleana tem o valor True, a instruo (ou bloco) que segue a palavra THEN executada. Quando a expresso booleana tem o valor False, a instruo (ou bloco) que segue a palavra ELSE executada.IF expresso booleana THEN instruo;

IF expresso booleana THEN instruo1 ELSE instruo2;

IF expresso booleana THEN BEGIN instruo; ... instruo; END ELSE BEGIN instruo; ... instruo; END; expresso booleana: constante, varivel ou expresso boleana. instruo: Ateno qualquer instruo Pascal, inclusive outra instruo IF.

Se uma instruo if possui vrias condies (expresses booleanas) estas devem vir entre parntesis.if (x=7) and (y=8) then ...

Object Pascal

42

O Comando CASEO comando CASE equivalente a uma srie de comandos IF. Se a varivel de controle igual a uma das constantes de uma lista, a instruo ou bloco de instrues associada lista executada. Se a varivel de controle no igual a nenhuma das constantes, a declarao case no ter nenhum efeito e o computador passa para instruo seguinte do programa.CASE varivel-controle OF constante1: instruo1; constante2: instruo2; ... ELSE instruo1; END; varivel-controle: constantes: uma varivel do tipo inteiro, caracter ou definido pelo usurio, mas no pode ser do tipo real. pode ser um nico valor, vrios valores isolados separados por vrgula ou uma faixa de valores, indicadas pelo valor mnimo e mximo separados por dois pontos finais (..).

Estruturas de RepetioNa linguagem Pascal esto disponveis trs estruturas de repetio que fornecem uma grande flexibilidade na representao de um processo repetitivo. Um loop executa uma instruo (ou bloco de instrues) repetidamente. As trs estruturas de repetio em Pascal so representadas pelas palavras reservadas FOR, WHILE e REPEAT.

O Comando FORO comando FOR usado para repetir vrias vezes a mesma instruo ou bloco de instrues. Durante a execuo, uma varivel usada como ndice assume uma srie de valores, desde um dado valor inicial at um valor final. Na forma FOR-TO, o ndice assume valores crescentes; na forma FOR-DOWNTO, o ndice assume valores decrescentes. A forma geral da declarao a seguinte:FOR ndice := inicial TO final DO instruo

FOR ndice := inicial TO final DO BEGIN instruo1; instruo2; ... END;

Object Pascal

43

FOR ndice := inicial DOWNTO final DO BEGIN instruo1; instruo2; ... END; ndice: O ndice uma varivel ordinal. O ndice pode ser do tipo inteiro, caracter, byte ou definido pelo usurio. No pode ser uma varivel real. Valor inicial da varivel ndice. Valor final da varivel ndice. Qualquer instruo Pascal.

inicial: final: instruo:

As variveis ordinais possuem uma propriedade chamada ordem. Em outra palavras, faz sentido falar em nmero inteiro seguinte ou no caracter anterior. O nmero inteiro que vem depois de 6 7; o caracter que precede M L. As variveis reais no so ordinais. No faz sentido falar no nmero real seguinte, porque entre dois nmeros reais quaisquer sempre existe outro nmero real. importante notar que se inicial for maior ou igual a final, as instrues contidas no loop do tipo FOR-TO sero simplesmente ignoradas. O mesmo acontecer em um loop do tipo FOR-DOWNTO se inicial for menor que final.Ateno

O valor do ndice s definido no interior do loop. Depois que o programa sai de um loop FOR-TO ou FOR-DOWNTO, a varivel usada como ndice tem um valor indefinido. Se o valor dessa varivel for usada depois de o programa sair do loop, o programa ir se comportar de forma imprevisvel.

O Comando REPEATA instruo REPEAT faz com que uma instruo (ou bloco de instrues) seja executada repetidas vezes, at que uma certa condio seja satisfeita. Observe que na forma composta da declarao, as palavras BEGIN e END no so usadas para delimitar as declaraes que fazem parte do loop; este sempre comea pela palavra REPEAT e termina na palavra UNTIL.REPEAT instruo UNTIL condio;

REPEAT instruo1; instruo2; ... UNTIL condio; condio instruo uma expresso booleana. qualquer instruo Pascal.

Object Pascal

44

Como a condio verificada no final do loop, todo loop do tipo REPEAT executado pelo menos uma vez. Se a condio nunca assume o valor True, o loop s pra se o programa for interrompido do manualmente.

O Comando WHILEO loop WHILE semelhante ao loop REPEAT. A principal diferena est no fato de que o loop REPEAT sempre executado pelo menos uma vez; o loop WHILE pode no ser executado nenhuma vez.WHILE condio DO instruo.

WHILE condio DO BEGIN instruo1; instruo2; ... END; condio instruo uma expresso booleana. uma instruo Pascal. Na forma composta do loop WHILE no preciso colocar um ponto e vrgula depois da ltima instruo.

Procedimentos e FunesProcedimentos (procedures) e Funes (functions) so partes do programa que podem executar uma tarefa especfica quando chamamos de um dos mdulos do programa. Aps a execuo do procedimento ou funo, o controle da execuo retorna ao mdulo do programa que executou a chamada. Os procedimentos e funes so executados de forma bastante semelhante, porm, uma funo retorna um valor de retorno, enquanto que um procedimento apenas executa um bloco de comandos.Procedure ReajustaSalario; begin if Salario > 600 then Salario := Salario * 1.05 else Salario := Salario * 1.10; end;

Function HouveReajuste: Boolean begin if Salario > 600 then result := false else result := true; end;

Note que na implementao da funo necessrio indicar o tipo de retorno da funo. Para a funo retornar o valor desejado, deve-se utilizar a varivel de sistema Result.Object Pascal 45

begin while Salario < 600 do ReajustaSalario; end;

begin if HouveReajuste then ShowMessage(Reajuste); end;

Procedimentos e Funes com ParmetrosA linguagem Pascal permite se utilize parmetros na implementao de procedimentos e funes. O Pascal permite passagem de parmetros por valor ou por referncia. Os parmetros passados podem ter um tipo bsico ou um tipo definido pelo usurio ou arrays abertas (que ser visto mais adiante). Um parmetro pode tambm ser constante, caso seu valor no seja alterado durante a execuo da procedure ou da function.

Passagem de Parmetros por ValorA passagem de parmetros por valor a forma padro do Pascal. Quando um parmetro passado por valor, significa que uma copia local daquela varivel criada e a function ou procedure opera sobre essa cpia.... var m: String; procedure Mens(s: string ); begin s := Mensagem: + s; ShowMessage( s ); end; begin // Inicio do Programa Principal

m := teste de passagem de parametros; Mens( m ); end.

No exemplo acima, na chamada da procedure Mens, apenas o valor contido na varivel m passado para a varivel s da procedure. Desta forma, a procedure ir operar com a varivel s, sem afetar o contedo da varivel m.

Passagem de Parmetros por RefernciaPassar um parmetro por referncia significa que a funo ou procedimento poder alterar o valor da varivel enviada na sua chamada. Para passar uma varivel por referncia utiliza a palavra var na lista de parmetros da procedure ou function.

Object Pascal

46

procedure ChangeMe(var x: LongInt); begin x := x + 2; end; begin z := 10 ChangeMe( z ); end.

No exemplo acima, o endereo de memria da varivel x ser o mesmo endereo da varivel z, utilizada na chamada da procedure. Desta forma, toda a alterao realizada na varivel x ser refletida na varivel z. Assim sendo, aps a chamada da procedure ChangeMe( z ) a varivel z, que inicialmente continha o valor 10, ter o valor 12.

Parmetros ConstantesSe o valor de um parmetro no vai ser alterado durante a execuo da procedure ou function, pode-se declara-lo como constante atravs da clusula conts. A palavra const previne qualquer modificao de valor e tambm gera um cdigo otimizado.procedure ApresentaMensagem(const Mens: String);

Parmetros com Arrays AbertasAtravs deste tipo de parmetro possvel passar um nmero varivel de argumentos para procedures ou functions. Pode-se passar arrays cujos elementos possuem o mesmo tipo ou pode-se passar arrays constantes de tipos diferentes. O exemplo abaixo declara uma funo que recebe uma array aberta com elementos inteiros.function TesteArray(A: Array of integer): integer;

Pode-se passar variveis, constantes ou expresses para a funo acima.var i, Rez: Integer; const j = 23 begin i := 8; Rez := TesteArray( [ i, 50, j, 89 ] ); ...

Para se trabalhar com uma array aberta dentro da procedure ou function pode-se utilizar as funes High(), Low() e SizeOf() para se obter informaes sobre a array.Object Pascal 47

A linguagem Object Pascal suporta tambm um array de constantes que permite passar dados de tipos diferentes para uma function ou procedure.procedure TesteArrayConstante( A: array of const );

A funo acima pode ser chamada da seguinte maneira:TesteArrayConstante([Maceio,90,5.6,@X,3.14159,True,s]);

UnitsAs Units so mdulos de programa onde so agrupados os procedimentos e funes que compem a aplicao Delphi. Uma Unit composta de reas pr-definidas.unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} end.

A rea UnitNesta rea encontra-se o incio da Unit, determinada pela palavra Unit, seguida pelo seu identificador (nome). O nome da unit ser gerado pelo Delphi e ter o mesmo nome que o arquivo armazenado em disco. Isto . inicialmente o Delphi gera automaticamente o nome da Unit. Ao ser gravado no disco, a Unit assume o nome dado ao arquivo.

Object Pascal

48

A rea InterfaceA rea de interface encontra-se sempre aps a rea da Unit e antes da rea de implementation. Esta rea utilizada para realizar as declaraes de variveis, constantes, tipos, procedimentos e funes, etc. As declaraes posicionadas nesta rea podero ser compartilhadas por outras Units ou pelo mdulo principal da aplicao. Nesta rea somente podero aparecer declaraes, nunca aparecer linhas de comando.

A rea ImplementationNesta rea ser encontrado basicamente a implementao dos procedimentos e funes. Pode ainda conter declaraes de variveis, constantes, tipos, etc. que no podero ser compartilhados por outras Units, nem pelo prprio mdulo principal da aplicao. Isto e, os dados declarados na rea implementation so dados locais, somente visveis dentro da Unit na qual foram declarados.

reas OpcionaisA rea InitializationEsta rea, quando existente, deve conter linhas de comando responsveis pela inicializao de variveis, objetos, etc., declarados dentro da Unit. A execuo desta rea realizada antes da execuo do mdulo principal da aplicao e ocorre uma nica vez.

A rea FinalizationEsta rea deve aparecer aps a rea Initialization e deve conter linhas de comandos relativas a desalocao de memria de variveis do tipo Pointer ou Objetos. A execuo desta rea realizada s sua aplicao est sendo encerrada.

A clusula UsesA clusula uses serve para que possamos tornar acessveis as variveis, constantes, procedimentos e funes declarados na rea Interface de uma determinada Unit. A clusula uses deve aparecer dentro da Unit na qual deseja-se manipular dados declarados fora do se escopo.program Prog; uses Unit2; const a = b; begin end.

unit Unit2; interface uses Unit1; const b = c; implementation end.

Object Pascal

49

unit Unit1; interface const c = 1; implementation const d = 2; end.

Referncia CircularA clusula uses pode aparecer na rea interface ou na rea implementation, sem interferir em desempenho ou tamanho da aplicao. Porm, existe um caso em que se torna obrigatrio a declarao da clusula uses dentro da rea implementation da Unit. Isto acontece quando duas Units fazem referncia entre si. Este processo conhecido como Referncia Circular.Unit UnAcessa Interface var B: Integer; Unit UnDeclara Interface var A: Integer;

Implementation uses UnDeclara; procedure Inicia; begin A := 10; end; end. Implementation

uses UnAcessa; procedure Reset; begin B := 0; end; end.

No exemplo acima mostra um caso de referncia circular que foi solucionada devido declarao da clusula uses ter sido feita na rea implementation. Caso a declarao da clusula uses tivesse sido feita na rea interface, seria apresentado um erro durante a compilao

ExceesExcees so erros que ocorrem durante a execuo do programa. Existem diversos tipos de excees, que podem ocorrer nas seguintes operaes: alocao de memria; criao e utilizao de objetos; clculo de expresses matemticas; manipulao de arquivos; utilizao de recursos do sistema operacional. Algumas das principais caractersticas das excees no DELPHI so: a instncia da exceo fornece informaes sobre o tipo de problema ocorrido; usurio pode definir suas prprias excees, utilizando a classe Exception; para forar a execuo de uma exceo utiliza-se a clusula Raise; os tipos de exceo normalmente devem iniciar com a letra E. uma exceo gera um evento denominado OnException.Object Pascal 50

As excees podem ser tratadas atravs das instrues: Try ... Except Try ... Finally

Try ... ExceptO bloco try ... except utilizado para definir um cdigo de programa a ser executado no momento que ocorrer uma exceo.try { Bloco de comandos} except { comandos executados quando ocorrer uma exceo} end;

Exemplo: tratamento de uma diviso por zero.... Valor1 := StrToInt(Edit1.Text); Valor2 := StrToInt(Edit2.Text) try Resultado := Valor1 div Valor2; except ShowMessage (Diviso por Zero); end; ...

No entanto, pode ocorrer mais de uma exceo dentro de um mesmo bloco. Neste caso necessrio utilizar o comando on ... do.

On ... DoO comando on ... do permite tratar mais de um tipo de exceo de um bloco try ... except.on {Tipo de exceo} do {Bloco de comandos da exceo}

Exemplo: tratamento de uma diviso por zero e da digitao de um caracter em um campo que deveria ser numrico.... try Valor1 := StrToInt (Edit1.Text); Valor2 := StrToInt (Edit2.Text) Resultado := Valor1 div Valor2; except on EDivByZero do ShowMessage (Diviso por Zero); on EInOutError do ShowMessage (Os valores devem ser numricos); end;

Object Pascal

51

Tipos de ExceoOs principais tipos de exceo da RTL (RunTime Library) do DELPHI, a serem tratadas nos blocos on ... do so:Nome EaccessViolation EconvertError EdivByZero EinOutError EintOverFlow EinvalidCast EinvalidOp EinvalidPointer EoutOfMemory EoverFlow ErangeError EstackOverflow Eunderflow EzeroDivide Descrio Ocorre quando se tenta acessar uma regio de memria invlida (ex: tentar atribuir valor a um ponteiro cujo contedo nil). ocorre quando se tenta converter um string em um valor numrico (ex: utilizar a funo StrToInt em uma letra). ocorre na diviso de um nmero por zero. ocorre numa operao incorreta de I/O (ex: abrir um arquivo que no existe). ocorre quando o resultado de um clculo excedeu a capacidade do registrador alocado para ele (para variveis inteiras). ocorre quando se tenta realizar uma operao invlida com o operador as (ex: tentar usar um Sender com uma classe que no corresponde a seu tipo). ocorre quando se detecta uma operao incorreta de ponto flutuante. ocorre quando se executa uma operao invalida com um ponteiro (ex: tentar liberar um ponteiro duas vezes). ocorre quando se tenta alocar memria mas j no existe mais espao suficiente. ocorre quando o resultado de um clculo excedeu a capacidade do registrador alocado para ele (para variveis de ponto flutuante). ocorre quando uma expresso excede os limites para a qual foi definida (ex: tentar atribuir 11 ao ndice de um vetor que pode ir no mximo at 10). ocorre quando o sistema no tem mais como alocar espao de memria na Stack. ocorre quando o resultado de um clculo pequeno demais para ser representado como ponto flutuante. ocorre quando se tenta dividir um valor de ponto flutuante por zero.

Try ... FinallyO bloco try ... finally permite que um bloco de comandos seja executado, mesmo quando houver uma exceo.try { Bloco de comandos} finally {Comandos executados mesmo quando ocorrer uma exceo} end;

Por exemplo, garantir que um arquivo ser fechado mesmo quando ocorrer uma exceo.

Object Pascal

52

... assign (arq, teste.txt); try reset(arq) // outros comandos sobre o arquivo finally close (arq) end; ...

Object Pascal

53

Projetos DelphiOs Arquivos do ProjetoUm projeto Delphi composto por vrios arquivos relacionados entre si. Alguns destes arquivos so gerados durante o desenvolvimentos, quando est se definindo os formulrios da aplicao. Outros arquivos so gerados na compilao da aplicao.

5

O Arquivo Principal (.DPR)O arquivo principal gerado durante a construo da aplicao e possui a extenso .dpr. neste arquivo que instanciado o formulrio principal da aplicao, assim como todos os formulrios que sero automaticamente instanciados pelo Delphi. Voc raramente ir editar o arquivo de projeto de uma aplicaoprogram Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. Estrutura de um Projeto em Delphi.

Note que neste arquivo existe uma clusula uses contendo a relao de uma Unit. O arquivo de projeto ir listar todas as Units que compem a aplicao, estando elas relacionadas a formulrios ou no. Outro ponto que vale ressaltar a diretiva de compilao {$R *.RES}. As chaves seguidas pelo caracter $ indicam uma diretiva de compilao, ou seja, um determinado comportamento do compilador Delphi. Neste caso, esta diretiva indica que o compilador ir adicionar os arquivos com extenso .RES (arquivos de recurso), quando da link-edio do projeto.

O Arquivo de Recurso (.RES)O arquivo de recurso um arquivo binrio gerado automaticamente pelo Delphi que contm basicamente o cone da aplicao. Poder ser adicionado um ttulo a sua aplicao, ou gerar um outro arquivo de recursos para o seu projeto. Por default, todo o projeto Delphi possui um arquivo de recurso que ter o mesmo nome do arquivo principal (.dpr) e ser linkado ao arquivo executvel (.exe).

O Arquivo de Opes (.DOF)Um arquivo de opes de projeto ser gerado quando sua aplicao salva pela primeira vez. Este arquivo ir conter opes de compilao de projeto, indicaes de criao automtica de formulrios, etc. Pode-se alterar as opes de um projeto utilizando o comando Option do menu Project. Alm do arquivo .dof, um arquivo com extenso .DSK ser criado com as opes do ambiente de desenvolvimento Delphi. Assim como as opes de um projeto (Project|Options), pode-se definir diferentes opes de ambiente para cada projeto. Para se alterar as opes de ambiente utiliza-se o comando Environment Options do menu Tools.

Os Arquivo de Cdigo (.PAS)Os arquivos .pas so os programas fonte em Object Pascal, as Units. Pode-se dividir as Units em trs classes: units que possuem um formulrio relacionado a ela; units relacionadas a componentes; units de uso geral, que possuem prodecures e functions que sero utilizadas por outros programasunit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} end.

Arquivos de Formulrios (.DFM)Quando um novo formulrio adicionado em uma aplicao, o Delphi gera dois arquivos correspondente ao formulrio. Um arquivo o cdigo fonte em Object Pascal (.PAS). O outro arquivo (.DFM), descreve as caractersticas do formulrio como, por exemplo, a altura, a largura, o ttulo, a cor, etc. Raramente ser necessrioProjetos Delphi 55

visualizar o contedo deste tipo de arquivo. Ele atualizado automaticamente toda vez que feito uma alterao no formulrio.

Arquivos CompiladosAps a compilao de um projeto, sero gerados mais dois tipos de arquivos. Os arquivos com extenso .DCU (Delphi Compiled Unit) e o arquivo com extenso .EXE. Um arquivo .dcu o resultado da compilao dos arquivos .pas e .dfm. O arquivo executvel .exe o resultado da compilao de todos os arquivos do projeto.

As Opes de um ProjetoO comando de menu Project | Options, ir apresentar uma caixa de dilogo contendo algumas opes relativas ao seu projeto. Voc poder definir desde o formulrio principal da aplicao, at a forma de como o projeto ser compilado.

A Pgina FormsNa pgina Forms possvel selecionar o formulrio principal da aplicao e para definir quais os formulrios sero criados automaticamente pelo Delphi. Main form: Indica qual o formulrio principal da sua aplicao. Este ser o primeiro formulrio apresentado quando se executa a aplicao. Atravs do ComboBox possvel alterar a definio do formulrio principal da aplicao. Normalmente o formulrio principal gerado automaticamente. Isto , ele est presente na lista Auto-create forms. Auto-create forms: Contm a lista dos formulrios gerados automaticamente pelo Delphi quando sua aplicao for executada. Available forms: Contm a lista dos formulrios que sero gerados pela aplicao. Para fazer uso dos formulrios que esto sendo mostrados nesta lista eles devem ser instanciados anteriormente.

Projetos Delphi

56

A Pgina ApplicationNesta pgina poder definir-se um ttulo e um cone para a aplicao. Title: Especificao de um ttulo para a sua aplicao. Este ttulo ser apres