Você está na página 1de 101

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE SERGIPE COORDENADORIA DE INFORMTICA

PROGRAMAO INICIAL - DELPHI Prof. Mrio Andr


SERGIPE BRASIL

CEFET-UNED Prof. Mrio Andr

INDICE
Paradigmas da Programao...........................................................................................................................................4 Tipos Simples........................................................................................................................................................10 Tipos Enumerados................................................................................................................................................10 Tipo Set.................................................................................................................................................................11 Tipos com Editor de Propriedades........................................................................................................................11 Manipulando Eventos...........................................................................................................................................11 PROJETO EM DELPHI...............................................................................................................................................15 CONVENO DE NOMEAO...............................................................................................................................20 COMPONENTES.........................................................................................................................................................30 Propriedades..............................................................................................................................................................31 Mtodos.....................................................................................................................................................................32 Mtodos.....................................................................................................................................................................33 Propriedades..............................................................................................................................................................33 Propriedades..............................................................................................................................................................34 Crie um formulrio conforme lay-out abaixo...........................................................................................................35 A opo Apaga Tudo s poder ocorrer aps confirmao do usurio....................................................................35 Propriedades..............................................................................................................................................................38 Mtodos.....................................................................................................................................................................38 Propriedades..............................................................................................................................................................39 Propriedades..............................................................................................................................................................40 Mtodos.....................................................................................................................................................................40 Propriedades..............................................................................................................................................................41 Mtodos.....................................................................................................................................................................41 Propriedades..............................................................................................................................................................42 Mtodos.....................................................................................................................................................................42 Propriedades..............................................................................................................................................................43 CHAMADA DE FORMS.............................................................................................................................................57 COMPONENTES (VCL).............................................................................................................................................58 TRATAMENTO DE EXCEES...............................................................................................................................73 UM POUCO MAIS SOBRE COMPONENTES (VCL)..............................................................................................79 Opes...................................................................................................................................................................80 Valor.....................................................................................................................................................................80 Significado............................................................................................................................................................80 Principais Eventos.................................................................................................................................................80 Evento...................................................................................................................................................................80 Descrio...............................................................................................................................................................80 Principais Mtodos................................................................................................................................................80 Mtodos.................................................................................................................................................................80 Descrio...............................................................................................................................................................80 Principais Propriedades.........................................................................................................................................81 Propriedade...........................................................................................................................................................81 Descrio...............................................................................................................................................................81 Opes...................................................................................................................................................................81 Valor.....................................................................................................................................................................81 Significado............................................................................................................................................................81 Principais Eventos.................................................................................................................................................81 Evento...................................................................................................................................................................81 Descrio...............................................................................................................................................................81 Principais Mtodos................................................................................................................................................81 Mtodos.................................................................................................................................................................81 Descrio...............................................................................................................................................................81 Principais Propriedades.........................................................................................................................................82 Propriedade...........................................................................................................................................................82 Descrio...............................................................................................................................................................82 Opes...................................................................................................................................................................82

CEFET-UNED Prof. Mrio Andr

Valor.....................................................................................................................................................................82 Significado............................................................................................................................................................82 Principais Eventos.................................................................................................................................................82 Evento...................................................................................................................................................................82 Descrio...............................................................................................................................................................82 Principais Mtodos................................................................................................................................................83 Mtodos.................................................................................................................................................................83 Descrio...............................................................................................................................................................83 UM POUCO MAIS SOBRE COMPONENTES (VCL)..............................................................................................83 Images.......................................................................................................................................................................89 StateImages...............................................................................................................................................................89 Items..........................................................................................................................................................................89 ShowButtons.............................................................................................................................................................89 ShowLines.................................................................................................................................................................89 ShowRoot..................................................................................................................................................................89 ReadOnly..................................................................................................................................................................89 Eventos......................................................................................................................................................................89 OnEditing..................................................................................................................................................................89 OnEdited...................................................................................................................................................................89 Apndice A - A Linguagem Object Pascal..................................................................................................................91 Apndice B - DICAS...................................................................................................................................................94 Apndice C - INTRODUO ORIENTAO A OBJETOS.................................................................................99 REFERNCIA BIBLIOGRFICA ...........................................................................................................................101

CEFET-UNED Prof. Mrio Andr

Paradigmas da Programao
"Paradigma uma forma de pensar e perceber o mundo real e determina o que escolhemos como significativo e o que descartamos ao compreender ou descrever o que existe ou ocorre no mundo em torno de ns". A mudana de paradigma uma oportunidade de encontrar novas interpretaes para antigas questes, bem como, para rever solues tidas como definitivas.

Introduo
Antes de comearmos seria interessante ressaltar que aprender a ser um bom desenvolvedor envolve mais do que aprender a sintaxe de uma linguagem de programao em particular, isto porque existem muitos outros aspectos do campo do sw, que tm pouca conexo com o ato em si de escrever cdigo. Se voc pode est pensando: "Ora, vamos, eu s quero aprender Delphi", deveria tambm pensar que a questo aqui que, se voc pretende desenvolver sw por dinheiro ou para manter-se num emprego, e tem clientes ou chefes esperando que seu sw: Saia funcionando da caixa, Seja feito a tempo, Seja livre de erros e Seja barato, Ento, vamos ter que comear por aqui mesmo, comentando sobre problemas como a crise de sw; o ciclo de vida e a engenharia de sw porque apenas talento artstico indisciplinado (intuio) no resolve. Devemos nos lembrar que o objetivo mais direto do desenvolvimento de sw fazer o produto final satisfazer a especificao dos requisitos. Precisamos portanto, dividir isso em algo mais tratvel. Algum grupo menor ou mais preciso de objetivos que sejam mais alcanveis e fceis de lembrar. Lembre-se de que se tem algo que sempre permanente a mudana. Conforme sabemos, uma aplicao passar a maior parte de seu ciclo de vida na fase de manuteno. Ento, importante termos um conjunto de objetivos que transceda a mudana. Entre outros, os quatro objetivos geralmente excludos da engenharia de software so a capacidade de modificao, eficincia, confiabilidade e inteligibilidade. Devemos tambm destacar a ergonomia.

Programao Procedimental
A maior parte dos programadores est acostumada a escrever cdigo que executado de forma sequencial. Tais programas possuem inicio, meio e fim bem definidos. Tipicamente, estes programas possuem telas de entradas de dados de algum tipo de processamento com estes

CEFET-UNED Prof. Mrio Andr

dados de forma sequencial. Esta forma de se programar dita procedimental. A figura 1 ilustra a sequencialidade encontrada em programas que seguem tal paradigma.

Incio

Entrada de Dados

Processamento

Fim

Esta forma de programar uma conseqncia direta dos sistemas computacionais disponveis no passado. Estes sistemas eram compostos por uma CPU responsvel pelo processamento (mestre) e uma srie de perifricos (escravos), responsveis pela entrada e sada de dados. O custo da CPU era nitidamente superior ao de qualquer perifrico e at mesmo ao custo do trabalho de quem lidava com estes computadores. Consequentemente, todos os sistemas davam prioridade mxima ao processamento, em relao entrada e sada de dados. Os programas desenvolvidos visavam normalmente a soluo de problemas de natureza cientfica, que naturalmente requisitavam mais recursos de CPU do que de entrada e sada de dados. A popularizao dos computadores modificou este quadro: as aplicaes comerciais tpicas dos dias de hoje exigem uma ateno maior dos programadores (e dos sistemas computacionais) para a entrada e sada de dados. A hierarquia rgida imposta pela estrutura de menus e a sequencialidade com que os formulrios so preenchidos pelo usurio impem limitaes srias na qualidade da interao do usurio com o computador na programao procedimental. Um exemplo no baseado em eventos
Program Verif_Nome; Var Nome : String; Begin Write ('Digite um nome: '); Readln (Nome); If Nome = 'Ze Silva' then

CEFET-UNED Prof. Mrio Andr

writeln ('Nome bem original cara') else writeln ('O que poderia dizer'); End.

Note que o fluxo do programa bem definido. Primeiramente ele pergunta o nome do usurio. Agora, voc pode esperar que o usurio introduza seu nome, e no precisa se preocupar com nenhuma outra entrada ou ao que ocorra no ambiente. Depois que o nome informado, uma instruo if define o que o programa deve fazer em seguida e o programa termina. A lgica deste programa linear direta e sequencial. O modelo baseado em eventos no pode utilizar controle de fluxo do incio at o fim, pois o aplicativo deve manipular todas as aes ou eventos possveis

Programao Orientada a Eventos


Um aplicativo baseado em eventos, na verdade, no faz nada - a no ser que ocorra um evento. isso mesmo, ele no tem um incio ou final lgico. Ele simplesmente precisa saber como responde aos diferentes tipos de eventos. Isto no quer dizer que voc no pode ter um evento que ocorra quando o programa comea ou quando vai se fechar; entretanto, voc precisa pensar sobre seu modelo de programao de modo diferente. No exemplo anterior, voc sabia exatamente que aes o usurio executaria - digitar um nome. Contudo, pense em aplicativo processador de textos baseado no Windows. No h meios de saber se o usurio digitar uma frase, escolher uma opo no menu ou dar um clique em um boto, na barra de atalho. Independentemente da ao que o usurio executa, o aplicativo precisa ser consistente o suficiente para responder ao evento. A idia bsica por trs da programao dirigida a eventos que alguns eventos determinam o fluxo do aplicativo. Um programa gasta a maior parte de seu tempo aguardando eventos e tem cdigo que responde a diversos deles (nem todos, j que normalmente um programa ignora eventos nos quais no tem interesse). Por exemplo, quando o usurio d um clique em um dos botes do mouse, ocorre um evento. enviada uma mensagem descrevendo esse evento para a janela que est sob o cursor do mouse no momento. A aplicao intercepta a mensagem e chama o mtodo associado ao evento correspondente. Quando o metodo termina, o programa retorna a um estado de espera. Como a explanao acima demonstra, eventos so serializados; cada evento manipulado somente aps o anterior ter sido completado. Quando uma aplicao est executando cdigo de resposta ao evento (ou seja, no est aguardando um evento), outros eventos para essa aplicao devem aguardar em uma fila reservada de multitarefa gerenciada atravs de um manipulador de eventos.

CEFET-UNED Prof. Mrio Andr

Aes

Sistema

Eventos

Loop de Tratamento dos Eventos

O avano da tecnologia barateou o custo dos sistemas computacionais e introduziu recursos grficos para a interao com os usurios (GUI- Graphic User Interface).

Uma aplicao que se utiliza de interface grfica, permite que o usurio decida a seqncia mais apropriada de interao. Esta abordagem muda completamente a forma de se construir programas. As interfaces grficas introduziram assim uma forma completamente nova de se programar. Nesta abordagem, uma aplicao constitui-se de um loop para tratamento de eventos e de procedimentos associados a eventos especficos. Toda vez que ocorre um determinado evento, o seu procedimento equivalente executado. Eventos acontecem em decorrncia da interao do usurio com o sistema, gerados pelo sistema operacional ou ainda gerados na prpria aplicao. Exemplos de eventos: mover o mouse, pressionar uma tecla, selecionar um tem de menu, setar o foco para um determinado controle, etc. A cada ao do usurio corresponde um ou mais eventos enviados para a aplicao. Estes eventos devem ser identificados e tratados de maneira adequada pelo programa. Esta abordagem conhecida como programao orientada a eventos. As interfaces grficas tornaram a interao dos usurios com as aplicaes bastante atraentes. Em compensao, introduziram uma complexidade enorme do ponto de vista de programao. Para se ter uma idia, o cdigo em linguagem C no windows para escreve na tela Al mundo possui cerca de 100 linhas. Se acrescentarmos a isto o fato de que 80% do cdigo escrito para uma aplicao consumido na elaborao de interface, fica difcil de massificar a programao em ambientes de interface grfica. Felizmente, o paradigma da orientao a objetos consegui esconder do programador a maior parte da complexidade da programao nestes ambientes.

CEFET-UNED Prof. Mrio Andr

IDE
O ambiente de desenvolvimento do Delphi composto de vrias partes compondo um conjunto integrado de janelas que interagem entre si.

Vamos abordar cada uma separadamente:

O FORM DESIGN
Form o termo utilizado para representar as janelas do Windows que compem uma aplicao. Os forms servem como base para o posicionamento dos componentes, que so responsveis pela interao entre usurio e mquina. Para selecionarmos o form devemos clicar (uma vez) em sua rea interna ou na object inspector, e no simplesmente em seu ttulo. As caractersticas iniciais do form como tamanho, botes (minimizar, maximizar, fechar, controle) e cone podem (e sero) ser modificadas atravs de recursos que veremos adiante.

CEFET-UNED Prof. Mrio Andr

A BARRA DE MENU PRINCIPAL


Como todo programa padro Windows, h uma janela onde esto situados os menus da aplicao, a barra que contem os menus tambm agrupa outras partes.

A PALETA DE COMPONENTES
Aplicativos orientados a objetos trabalham com elementos que denominamos componentes. No Delphi, os componentes encontram-se em uma paleta com vrias guias.

Pode-se configurar a ordenao das guias clicando com o boto direito do mouse sobre qualquer componente e clicar na opo Properties.

OBJECT INSPECTOR
Uma das partes mais importantes da orientao a objeto a possibilidade de definir caractersticas personalizadas aos componentes. No Delphi, utilizamos a janela object inspector para realizar esta tarefa.

Objeto atual selecionado

Propriedade

Valor atual desta propriedade

CEFET-UNED Prof. Mrio Andr

H uma caixa de listagem1 que permite a escolha de qual componente dever ser selecionado. Duas guias: Properties Define as propriedades e valores do Objeto selecionado. Events Define quais os eventos sero manipulados pelo desenvolvedor. Algumas propriedades trazem opes diferenciadas para alterao. Por exemplo: Caption Permite a insero de uma string de caracteres. Color Permite a insero de um dos valores pr-definidos na caixa de listagem. BorderIcons Toda propriedade que possui o sinal de + tem a caracterstica de mostrar subpropriedades. Deve-se clicar no sinal de + para expandir e no sinal de para ocultar. Icon Exibe um boto de reticncias (...) que dar origem a uma caixa de dilogo. Os nomes definidos como valores das propriedades na object inspector sero os nomes usados na construo do cdigo em Object Pascal. Na parte superior da janela h uma caixa de listagem que permite a seleo de componentes j inseridos no formulrio. Duas guias (Properties e Events) separam as listas de propriedades e eventos. As propriedades so definidas atravs de tipos. Podemos citar no exemplo com o objeto form:

Tipos Simples
So tipos String ou valores numricos definidos ao digitar um valor na frente da propriedade. Exemplo: Name, Caption, Height e Width entre outros.

Tipos Enumerados
So tipos definidos por uma quantidade limitada de opes que devem ser previamente selecionadas, no simplesmente definidas pelo usurio. Exemplo: Cursor, BorderStyle e WindowState entre outros.

Componente ComboBox. 10

CEFET-UNED Prof. Mrio Andr

Tipo Set
Algumas propriedades podem conter mltiplos valores. Um exemplo a propriedade BorderIcons com o sinal + indicando subpropriedades.

Tipos com Editor de Propriedades


As propriedades que so acompanhadas de um cone de reticncias (...) indicam que uma janela de dilogo ir auxiliar na escolha de seu(s) valor(es). Exemplo: Icon.

Manipulando Eventos
A guia Events permite o desenvolvedor definir um handler2 em Object Pascal para um determinado evento que pode ser disparado pelo usurio ou pelo sistema. Um evento uma ao disparada dentro de uma aplicao orientada a Objeto. Podemos citar as ocorrncias dos principais eventos que so disponibilizados na maioria dos componentes em Delphi:
Evento

OnClick
OnDblClick OnEnter OnExit OnKeyPress

Ocorrncia Quando o usurio clicar uma vez com o boto esquerdo do mouse sobre o componente. Quando o usurio d um duplo clique no componente com o boto esquerdo do mouse. Quando o componente recebe o foco. Quando o componente perde o foco. Quando pressiona uma nica tecla de caractere.

Observe a construo do procedimento criado pelo prprio Delphi:


2

Manipulador de evento 11

CEFET-UNED Prof. Mrio Andr

procedure TForm1.Button1Click(Sender: TObject);

begin
end;

CODE EDITOR
O editor de cdigo responsvel por receber todas as declaraes criadas pelo Delphi e handlers criados pelo desenvolvedor. E no ambiente Code Editor que implementamos o algoritmo na linguagem Object Pascal.
3

Name do form que define uma nova classe

Code Editor

Code Explorer

Na janela do editor pode haver uma outra janela denominada Code Explorer. a parte esquerda da janela, onde podemos ter uma orientao sobre os objetos, procedimentos, funes e classes utilizadas na aplicao. Para desligar o code explorer clique no pequeno X ao lado da guia do code editor, para visualiza-lo clique com o boto direito dentro do editor e escolha View Explorer ou pelo teclado Ctrl+Shift+E. Uma caracterstica muito importante do Code Explorer que quando inserirmos componentes no form, a sua declarao feita pelo Delphi de maneira automtica.

Manipulador de eventos. 12

CEFET-UNED Prof. Mrio Andr

Podemos considerar tambm o seguinte fato: Tudo o que o Delphi escrever, problema dele. Agora, Tudo o que voc escrever problema seu. Problema no sentido de atualizao de cdigo, como veremos adiante. Quando alteramos o nome do objeto, deve-se utilizar o mesmo nome nas rotinas implementadas. Agora, o que o Delphi declarou, ele se encarrega de atualizar. Pode-se personalizar o Editor atravs do menu Tools | Editor Options.

CODE INSIGHT
Um recurso que vai facilitar nossa vida no momento de desenvolvimento de cdigo o Code Insight do Code Editor do Delphi., Ele atua como um ajudante de complemento junto ao cdigo do desenvolvedor. Por exemplo, ao digitar o nome de um objeto seguido de ponto (.) abre-se uma listagem de mtodos e propriedades que podem ser utilizadas neste objeto. Esta lista pode ser ordenada por nome, clicando com o boto direito dentro da listagem.

13

CEFET-UNED Prof. Mrio Andr

No momento de chamada de procedimentos ou mtodos:

Para forar o code insight em determinada situao, utiliza-se: Ctrl + Barra de Espao - Para complemento de objetos; seus mtodos e propriedades. Ctrl + Shift + Barra de Espao Para complemento de parmetros. Prtica 1 - Vamos realizar um pequeno exemplo no Delphi para resultar na execuo abaixo:

Siga os seguintes passos: 1. Defina para o Formulrio no Object Inspector: Caption: P, que emoo cara Name: Form1 2. Insira um boto no formulrio (Ver Guia Standard na Barra de Ferramentas) 3. Defina para o Botao no Object Inspector: Caption: Ol Pessoal Name: Btn_Ola 4. D um click duplo no boto e aparecer no editor de cdigo:

14

CEFET-UNED Prof. Mrio Andr

procedure TForm1.Btn_OlaClick(Sender: TObject); begin end; 5. Digite o seguinte comando entre o begin / end; MessageDlg('Ol Pessoal', mtInformation, [mbok], 0);

6. Execute a aplicao (Run). 7. Observe o cdigo gerado Responda: O que ocorrer se clicarmos no formulrio?

PROJETO EM DELPHI
O conceito de projeto em Delphi baseado em um conjunto de arquivos necessrios para gerar uma aplicao. Vamos destacar os principais arquivos:
Extenso Tipo e descrio Arquivo Pascal: o cdigo-fonte de uma unidade Pascal, ou uma unidade relacionada a um formulrio ou uma unidade independente. Arquivo Delphi Project. (Contm cdigo-fonte em Pascal.) Delphi Form File: um arquivo binrio (na verso 5 pode ser convertido para texto) com a descrio das propriedades de um formulrio e dos componentes que ele contm. Delphi Compiled Unit: o resultado da compilao de um arquivo Pascal. Criao Desenvolvimento Sim. Necessrio para compilar?

.PAS
.DPR

Desenvolvimento Desenvolvimento

Sim. Sim. Todo formulrio armazenado em um arquivo PAS e em um arquivo DFM. Apenas se o cdigo-fonte no estiver disponvel. Os arquivos DCU para as unidades que voc escreve so um passo intermedirio; portanto, eles tornam a compilao mais rpida. Normalmente no, mas eles podem ser necessrios em tempo de execuo e para edio adicional. Necessrio apenas se opes de compilao especiais foram configuradas. Exigido apenas se opes

.DFM

Compilao

.DCU

.BMP, .ICO, .CUR

Arquivos de bitmap, cone e cursor: arquivos padro do Windows usados para armazenar imagens de bitmap.

Desenvolvimento: Image Editor

.CFG .DOF

Arquivo de configurao com opes de Desenvolvimento projeto. Semelhante aos arquivos DOF. Delphi Option File: um arquivo de texto Desenvolvimento

15

CEFET-UNED Prof. Mrio Andr

.DSK

com as configuraes atuais para as opes de projeto. Arquivo de Desktop: contm informaes sobre a posio das janelas do Delphi, os arquivos abertos no editor e outros ajustes da rea de trabalho. Aquivo executvel: o aplicativo Windows que voc produziu.

Desenvolvimento

de compilao especiais foram configuradas. No. Voc deve exclu-lo se copiar o projeto em um novo diretrio. No. Esse o arquivo que voc vai distribuir. Ele inclui todas as unidades compiladas, formulrios e recursos. No. Esse arquivo gerado automaticamente pelo Delphi, quando voc salva uma nova verso do cdigo-fonte. No. Esse arquivo contm notas para os programadores.

Compilao: Ligao (linking)

.EXE Backup do arquivo Pascal Desenvolvimento Pode ser ativado ou desativado atravs do Menu Tools Editor Options - guia display Item: Create backup file. Arquivo da lista to-do, contendo os itens Desenvolvimento relacionados ao projeto inteiro.

.~PA

.TODO

O Delphi possui um mecanismo de gerncia de arquivos de projeto informando os principais arquivos e seu path. Clique em View Project Manager

A figura acima um exemplo de um projeto inicial, ainda no salvo. O diretrio padro para criao dos arquivos projects, obviamente devemos definir na gravao pasta e nomes de arquivos mais especficos.

.PAS E .DPR
Para visualizarmos o cdigo fonte da unidade (.PAS) em Delphi basta selecionarmos o code editor (F12). Para visualizarmos o cdigo fonte no arquivo de projeto (.DPR) basta selecionarmos o menu Project View Source. O arquivo de projeto exibido em uma guia no code editor. Para fechar a guia basta clicar com o boto direito e escolher close page.

Unidades

16

CEFET-UNED Prof. Mrio Andr

Existem trs tipos de unidades: unidades associadas aos formulrios (as mais comuns), arquivos de unidade usados para armazenar funes e procedures, e arquivos de unidade usados para construir componentes. Vamos ver una unidade bsica associada a um formulrio:

17

CEFET-UNED Prof. Mrio Andr

UnitUnit1; Interface uses Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms, Dialogs; Type Tform1=class(Tform) procedureFormCreate(Sender:Tobject); private {Declaraesprivativas} public {Declaraespblicas} end; var Form1:Tform1; implementation {$R*.DFM} procedureTForm1.FormCreate(Sender:Tobject); begin end; end.

O cdigo acima, junto com o cdigo de arquivo de projeto, tudo de que precisa no Delphi para criar um executvel que abre uma janela. Ele no far muita coisa nesse ponto, mas um programa Windows funcional, na sua forma mais simples.

18

CEFET-UNED Prof. Mrio Andr

Veja os nomes na clusula uses, do cdigo acima. Trata-se dos nomes de outras unidades. Se voc decidisse escrever vrias funes e procedures teis, poderia criar sua unidade, colocar todo seu trabalho til nela e compil-la para uso futuro. Vamos ver as partes que constitui a unidade: Cabealho da unidade - Um cabealho de unidade identifica o cdigo como uma unit e seguido pelo nome. Interface - Marca o incio da parte unit interface, que usada para declarar variveis, tipos, procedures, etc. A parte interface determina o que nessa unidade est disponvel para outras unidades e partes do programa. A parte interface termina com o incio da parte implementation. Uses - A clusula uses informa ao compilador quais bibliotecas de funes e procedures precisam ser compiladas no executvel final. O Delphi coloca, automaticamente, vrias delas l para voc. Type - A seo de declarao type usada para a criao de tipos definidos pelo usurio. Esses tipos pode, ento, ser usados para definir variveis. Especificadores de visibilidade vm aps a clusula type na parte da interface. Os seguintes especificadores so usados para controlar como os objetos aparecem para outros programas e objetos: Private - As declaraes nessa seo so tratadas como pblicas dentro do mdulo, mas sero desconhecidas e no acessveis fora da unidade. Public - As declaraes nessa seo so visveis e acessveis fora da unidade. Var - Usado para declara varveis e variveis de objeto. Em uma unidade de formulrio, var usado na parte de interface (o Delphi coloca essa declarao para voc) para declarar o formulrio como uma instncia do objeto Tform. Var tambm usado para declarar variveis na parte de implementao, assim como em procedures e funes. Implementation - onde todas as funes e procedures que foram declaradas na parte interface sero realmente colocadas. Todas as declaraes feitas aqui so privativas da unidade (no disponveis para as outras unidades). {$R *.DFM) - Em uma unidade de formulrio. O Delphi insere essa entrada para voc. Ela liga o formulrio ao seu arquivo.dfm. No remova isso de seu programa, ou voc ter problemas. O bloco de cdigo a seguir executado quando seu formulrio criado. Voc deve colocar aqui, todo o cdigo de inicializao que precise ser executado quando o formulrio comear a ser carregado. Para criar essa procedure, use o Object Inspector para ver o menu Events do formulrio e, depois, d um click duplo no evento OnCreate. End. - o end final, significa o final de sua unidade. importante manter os cabealhos, as clusulas, etc no lugar correto. O Delphi cuida muito bem disso para voc, pois ele cria a unidade e o cdigo medida que so feitas alteraes no formulrio. Voc simplesmente insere seu cdigo na seo correta, conforme for necessrio.

OPES DE PROJETO
O Delphi permite a configurao de vrios itens do sistema atravs do menu Project Options.

19

CEFET-UNED Prof. Mrio Andr

Forms

Main form - Nesta guia permite a escolha do formulrio principal da aplicao. Available form - Os formulrios available (disponveis) em caso de criao em tempo de execuo. Title - Define um nome para a sua aplicao diferente do nome do arquivo de projeto (.DPR). Help file Define o nome do arquivo de Help (.HLP) associado aplicao. Icon Define o cone utilizado no arquivo executvel. (.EXE) Estas opes permitem especificar uma compilao personalizada, ou seja, cada projeto pode ser compilado com uma caracterstica. Estas opes incluem informaes para a depurao. Nesta guia pode-se configurar o diretrio de sada para os arquivos gerados pela aplicao.

Application

Compiler

Linker

Directories/Conditionals

Version Info
Estas informaes podem ser visualizadas no Windows atravs do menu rpido do mouse no arquivo executvel. Os packages permitem um controle de distribuio atravs de DLLs bsicas externas ao executvel entre outros recursos.

Packages

CONVENO DE NOMEAO A propriedade mais importante de um componente a propriedade Name. ela que define o nome interno com relao ao cdigo escrito em Object Pascal. Para organizar e facilitar o processo de desenvolvimento/manuteno do sistema, grande parte dos desenvolvedores adota uma nomenclatura para tornar o cdigo mais legvel possvel.

20

CEFET-UNED Prof. Mrio Andr

O Delphi adota como nomenclatura padro o nome da classe da qual o componente instanciado e um nmero crescente de acordo com o nmero de ocorrncia deste componente no form. Exemplo: Button1, Button2, etc... so componentes instanciados da classe TButton . No obrigatria a utilizao da conveno de nomes utilizados nesta apostila, mas muito importante fazer uso de uma conveno mais clara possvel.

Exemplo:
Nome gerado pelo Delphi Button1 Edit1 Label1 Objetivo Sair da aplicao Receber nome do usurio Indicar componente Edit Conveno BtnSair EdtNome LblNome

A Lista de Units
A janela de lista de units permite que voc alterne entre as units que fazem parte do projeto ativo, sem que elas tenham de estar todas abertas no editor de cdigo. Caso voc selecione uma unit que no esteja aberta, o Delphi a abrir e mostrar no Code Editor.

Figura 31 A Lista de Units

A lista de units pode ser ativada atravs do menu View, opo Units..., ou atravs do primeiro cone inferior da SpeedBar ou atravs da combinao das teclas <Ctrl> <F12>.

A Lista de Forms

21

CEFET-UNED Prof. Mrio Andr

A janela de lista de forms permite, de forma anloga de lista de units, que voc alterne entre os forms que fazem parte do projeto ativo, sem que eles tenham de estar todos abertos. Caso voc selecione um form que no esteja aberto, o Delphi o abrir e mostrar para edio no Form Designer.

A lista de forms pode ser ativada atravs do menu View, opo Forms..., ou atravs do segundo cone inferior da SpeedBar ou atravs da combinao das teclas <Alt> <F12>.

A Lista de Janelas
A janela de lista de janelas do ambiente, embora menos utilizada do que as de lista de units e forms, apresenta uma forma rpida de encontrar-se uma janela, que esteja escondida atrs de muitas outras.

A lista de janelas pode ser ativada atravs do menu View, opo Window List..., ou atravs da combinao das teclas <Alt> <0>. Prtica 2 - Exerccio de Gerenciamento de Projetos 1. Finalidade: Demonstrao das diversas forma de Gerenciamento de Projetos 2. Roteiro:
a.

Crie uma pasta Aulas Delphi e dentro desta outra Gerencia de Projeto

22

CEFET-UNED Prof. Mrio Andr

b. Inicialize o Delphi c. Insira um Label com Caption 'Formulrio 1'


d.

Salve o projeto com Projeto_1 e a unidade com Unit_1. Atravs de: Opo File Save All do Menu File Opo File Project AS do Menu File 4 cone superior do Speed Bar (SB) (Projeto) 3 cone superior do Speed Bar (SB) (Unidade)

e. Observe o cdigo de Unit_1 f. Insira novo formulrio ao Projeto Opo New do Menu File Opo New Form do Menu File 4 cone inferior do SB
g.

Salve a unidade com Unit_2

h. Insira novo formulrio ao Projeto utilizando opo diferente da 1.


i.

Salve a unidade com Unit_3 Observe que as unidades podem ser selecionadas pelas guias, que <F12> ou o clique no 3 cone inferior do SB alterna entre unidade e formulrio ou utilizando o 1 ou 2 cone inferior do SB..

j. Salve todo o Projeto k. Remova a Unit_2 do Projeto Boto Remove da Opo Project Manager do Menu View No Project Manager, boto direito sobre o nome do projeto ou unit, opo Remove File ... Opo Remove from Project do Menu Project 7 cone superior do SB l. Adicione a Unit_2 ao Projeto No Project Manager, clicar com boto direito sobre o nome do projeto, opo Add ... Opo Add to Project do Menu Project 6 cone superior do SB m. Observando o cdigo do Projeto Opo View Source do Menu Project - Observe seu nome na Guia de Units (para fechar utilize boto direito do mouse - Opo Close Page) n. Atente para a clusula uses e seu cdigo (begin ... end.) Qual o formulrio que ser criado quando a aplicao for executada? p. Execute a aplicao e vamos conferir qual o formulrio criado. q. Feche a aplicao

23

CEFET-UNED Prof. Mrio Andr

r. Alterando o formulrio principal do Projeto Opo Options do Menu Project, observando o nome do formulrio da ListBox Main Form s. Altere o nome do formulrio principal para Unit_2 t. Observe o cdigo do Projeto e execute-o u. Torne a Unit_2 disponvel v. Observe o cdigo do projeto O que ele nos informa? w. Feche a Aplicao x. Abra novamente a aplicao e observe quantos forms so trazidos para voc inicialmente Para ativar os forms que deseja trabalhar, utilize o 2 cone inferior do SB ou View Project Manager, selecione o form, clique com boto direito e escolha a opo Open.

Modularizao
muito indicado que voc modularize o seu projeto. Isto implica tambm em no misturar funcionalidades diferentes na mesma unit. Como assim? Voc no deve colocar strings nem valores constantes diretamente no cdigo. Isto aumenta o trabalho quando for necessrio alterar determinado valor. Teremos que procurar em todos os mdulos para saber onde fazemos referncia quele valor. E cuidado para no confundir com uma mesma constante que possua, por coincidncia, o mesmo valor que a que estamos procurando. Para resolver este problema, voc deve criar constantes e atribuir valores a estas constantes. Mas no defina estas constantes em qualquer unit. Crie uma unit que ir abrigar somente a definio das constantes do projeto. Voc pode nomear esta unit com qualquer nome, exceto Const.Pas, porque const uma palavra reservada.

Diretrios
Via de regra, aconselhado utilizar um diretrio para cada projeto Delphi. Isto porque facilita bastante a identificao dos vrios arquivos. Um dos pontos mais importantes de um projeto saber quais arquivos so necessrios para uma compilao completa (build). Quando temos mais de uma aplicao por diretrio, esta identificao passa a ser um problema. Exemplo: C:\Sistema C:\Sistema\Doc C:\Sistema\Dados C:\Sistema\Dll C:\Sistema\Icones

24

CEFET-UNED Prof. Mrio Andr

No perca este objetivo de vista: projeto e organizao so os requisitos mais importantes para um bom desenvolvimento. Para aprendermos a depurar um programa, defina uma aplicao conforme o form e cdigo abaixo:

unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } procedure SomaNum; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.SomaNum; var Value1, Value2, Total : integer; begin Value1 := StrToInt (Edit1.text); Value1 := StrToInt (Edit2.text); Label1.Caption := IntToStr(Value1 + Value2); end; procedure TForm1.Button1Click(Sender: TObject); begin

25

CEFET-UNED Prof. Mrio Andr

end; end.

SomaNum;

Agora, execute o programa, introduza dois nmeros pequenos, pressione o boto Ok e observe que o resultado est incorreto. Para descobrir por que, vamos usar o depurador para percorrer o cdigo e ver o que aconteceu.

Definindo um Ponto de Quebra (BreakPoint)


Um ponto de quebra permitir que o programa seja executado normalmente, at encontr-lo, e ento o depurador parar na linha em esse ponto foi definido, sem execut-la. Para definir um ponto de quebra, d um duplo clique na mediamiz (a rea cinza esquerda do cdigo no editor) ao lado da linha para a qual voc quer definir o ponto de quebra, ou ento tecle <F5> na desejada. Na realidade, esses procedimentos ativam e desativam pontos de quebra.

O editor de cdigo mostrando a mediatriz com um ponto de quebra assinalado

Execute o programa. digite 4 e 5 e depois pressione o boto Ok. O editor deve aparecer, mostrando a posio em que o ponto de quebra foi definido, conforme figura 27. Agora o ponto de quebra tem uma marca verde na mediamiz, mostrando que voc parou neste ponto, e uma seta verde apontando para a direita aparece na mediamiz, mostrando sua posiao no cdigo. Esta linha ainda no foi executada, ou seja, a seta verde aponta para a prxima linha de execuo.

26

CEFET-UNED Prof. Mrio Andr

O editor de cdigo no modo debug, mostrando o programa interrompido em um ponto de quebra

Voc pode definir pontos de quebra especiais que interrompero a execuo apenas se certas condies ocorrerem ou em uma passagem por um loop em particular. Isto pode ser muito til, se seu cdigo falha somente em certas condies ou no meio de um loop muito grande. Para definir condies ou contagem de passagem, voc usa a opo de menu Run | Add Breakpoint para acessar a caixa de dilogo Edit Breakpoint.

Opes de Depurao
O menu Run do Delphi contm algumas opes de depurao adicionais, que tm toques de tecla de atalho correspondentes:
Opo Run (F9) Step Over (F8) Trace Into (F7) Trace to Next Source Line (Shift F7) Runt to Cursor (F4) Show Execution Point Program Reset (Ctrk F2) Significado Compila e executa iu, no modo depurador, continua a executar a partir desse ponto. Executa cada linha do cdigo, mas no entra nas chamadas de funes e procedures. Permite que o depurador siga o cdigo de uma chamada de funo ou procedure. Segue at a prxima linha executvel. Executa at a posio corrente do cursor, na janela do editor Coloca o cursor no ponto de execuo corrente. Finaliza a execuo do programa

Como examinar valores variveis com Sentinelas


Existem duas maneiras de examinar o valor armazenado em variveis: usando sentinelas e usando o novo recurso ToolTip Expression Evaluation (que j foi discutido anteriormente). Uma sentinela permite que voc especifique nomes de varivel que deseja monitorar e apresentar seus valores numa pequena janela. Para inserir uma sentinela, voc pode pressionar <Ctrl> <F5> ou selecionar Run | Add Watch para acessar a caixa de dilogo Watch Properties, conforme a figura. Em uma sentinela, voc pode especificar nomes de varivel e expresses como Valor1 + Valor2 ou StrToInt(Valor1).

27

CEFET-UNED Prof. Mrio Andr

28

CEFET-UNED Prof. Mrio Andr

A caixa de dilogo Watch Properties

A janela Watch List

Na caixa de dilogo Watch Properties, digite Value1 na caixa de texto Expression. Isto cria a janela Watch List, onde as variveis controladas e seus valores correntes sero apresentados, como na figura. Se a varivel ainda no foi criada ou atribuda, vrias mensagens sero apresentadas, indicando o status da varivel em que o valor normalmente estaria. A mensagem pode indicar Process not accessible, o que significa que o cdigo que cria essas variveis no foi iniciado ou que ele terminou e as variveis foram retiradas da memria. Voc tambm poderia ver a mensagem Inaccessible here due to optimation, que normalmente significa que a varivel ainda no foi atribuda. Quando as linhas de cdigo que tratam da varivel que voc atribuiu uma sentinela so executadas, o valor apresentado na janela Watch List.

COMENTRIOS
Os comentrios no cdigo fonte so importantes e podem ser feitos atravs dos seguintes smbolos:
//Comentrio de linha { Comentrio de bloco } (*Comentrio de bloco *)

29

CEFET-UNED Prof. Mrio Andr

COMPONENTES
Agora definiremos resumidamente os principais componentes do Delphi, bem como as suas principais propriedades e eventos. Logicamente, este material no se constitui num manual dos componentes do Delphi, mas sim visa introduzir o programador nos recursos disponveis. Antes de iniciarmos as discusses sobre os componentes, iremos nos ater explicao de algumas peculiaridades das propriedades dos componentes. O primeiro ponto a ser observado, est no fato de que algumas propriedades s so acessveis em tempo de execuo. Quando acontecer tal fato, chamaremos ateno a esse respeito. Finalmente, existem propriedades onde o Delphi incorpora um construtor de valores. Para estes casos, aparece um boto com reticncias no canto da coluna valor, do Object Inspector, isto quando a propriedade selecionada. Para abrir o construtor de valores basta um clique neste boto, ou um duplo clique na propriedade. bom lembrar que ao criarmos uma aplicao, um dos detalhes mais importantes que devem ser considerados a interface com o usurio. Porque se ela for feia ou difcil de ser entendida ser mal usada e isto a linha que divide o sucesso do fracasso no ramo de software. O que se segue uma referncia dos componentes de interface mais utilizados. Vamos considerar alguns objetos e suas principais propriedades, mtodos e eventos.

Principais Eventos
Os eventos recaem em trs categorias: de Mouse, de teclado, ou de Sistema. A maioria dos componentes possui um evento padro. Para verificar isso d um duplo clique sobre o componente no formulrio.Os trs eventos padro so OnChange, OnClick e OnCreate, nesta ordem. Se um componente no responder a nenhum deles, significa que ele no possui evento padro. Verificao: D um duplo clique na rea do formulrio e ter seu evento padro, depois faa o mesmo no Label. Insira um Edit e d um duplo clique.
Evento OnChange OnClick OnDblClick OnEnter OnExit OnMouseDown OnMouseMove OnMouseUp OnKeyDown OnKeyPress OnKeyUp OnDragDrop OnDragOver OnEndDrag OnStartDrag Descrio Acontece quando o objeto ou seus dados mudam Clique simples do mouse sobre o componente ou Enter no componente Duplo clique do mouse sobre o componente Ocorre quando o componente recebe foco Ocorre quando o componente perde foco O boto do mouse pressionado sobre o componente O ponteiro do mouse passa sobre o componente O boto do mouse liberado sobre o componente Uma tecla pressionada. enviado para o componente com o foco de entrada. Uma tecla de caractere pressionada. Idem Uma tecla liberada. Idem O componente est sendo arrastado e solto num local permitido O componente est sendo arrastado e passa sobre outro componente O componente est sendo arrastado e solto num local permitido ou no Acontece quando o usurio comea a arrastar; enviado para o componente que originou a operao de arrasto.

30

CEFET-UNED Prof. Mrio Andr

Principais Mtodos
Mtodo BringToFront CanFocus Create Destroy Focused Free Hide SetFocus SendToBack Show Clear Descrio Coloca o componente na frente dos outros Determina se o controle pode receber o foco Cria uma instncia do componente Destri a instncia. Na verdade, deve-se utilizar o Free Retorna se o foco est sobre o componente Destri a instncia e desaloca a memria Torna o controle invisvel Faz com que o controle receba o foco Coloca o componente atrs dos outros Torna o controle visvel Limpa o contedo do componente

Objeto Form (Formulrio)


Paleta Standart Importncia: o principal componente container pois permite posicionar os demais componentes em si mesmo. literalmente a implementao do conceito de janelas do sistema operacional Windows.

Propriedades
ActiveControl Align AutoScroll AutoSize BorderIcons BorderStyle Permite definir qual o primeiro componente a receber foco assim que o formulrio criado. Altera o alinhamento e preenchimento do objeto. Permite habilitar as barras de rolagem. Determina se o controle ser automaticamente redimensionado. Determina os cones a serem exibidos na barra de ttulo do formulrio. Define o estilo da borda do formulrio. bsDialog Borda no redimensionvel, comum em caixa de dilogo bsSingle Borda simples e redimensionvel. bsNone Borda invisvel, no redimensionvel, sem botes de controle. bsSizeable Borda padro redimensionvel. Define a espessura da borda. Indica o rtulo exibido para o componente. Define a altura e largura da rea cliente. Define a cor de fundo de um componente. Indica a imagem exibida pelo ponteiro do mouse quando este ficar sobre o objeto. Associa o form a um monitor especfico em uma aplicao que utiliza vrios monitores. Define se o componente est habilitado ou no. Permite controlar os atributos do texto exibido em um componente. Determina o estilo do formulrio. fsNormal Definio padro do formulrio. fsMDIChild O formulrio ser uma janela-filha de uma aplicao MDI.

BorderWidth Caption ClientHeight / ClientWidth Color Cursor DefaultMonitor Enabled Font FormStyle

31

CEFET-UNED Prof. Mrio Andr

Height HelpContext HelpFile Hint HorzScrollBar Icon KeyPreview Left Menu Name PopupMenu Position ShowHint Tag Top VertScrollBar Visible Width WindowMenu WindowState

fsMDIForm O formulrio ser o formulrio-pai de uma aplicao MDI. fsStayOnTop O formulrio permanece sobre todos os outros formulrios do projeto, exceto aqueles que tambm tm a propriedade FormStyle igual a fsStayOnTop. Define a altura do objeto. Define o tpico do arquivo help que ser exibido ao pressionar a tecla F1. Define um arquivo de help especfico. Permite exibir um texto de auxlio no momento em que o ponteiro do mouse permanece sobre o controle. Define o comportamento de uma barra de rolagem horizontal. Define o cone que ser usado pelo formulrio. Define se o formulrio deve ou no responder a um pressionamento de tecla, atravs do evento OnKeyPress, por exemplo. Define a coordenada da extremidade esquerda de um componente. Permite escolher entre mais de um componente MainMenu. Define o nome interno que identifica o componente dentro da aplicao. Define o componente PopupMenu a ser utilizado pelo objeto. Permite definir o tamanho e posio de um formulrio no momento em que ele aparece na sua aplicao. Define se a string de auxlio deve ou no ser exibida quando o usurio mantm o ponteiro do mouse sobre um controle. A propriedade Tag uma varivel do tipo Longint que o Delphi coloca disposio do usurio, que pode atribuir o significado mais conveniente. Define a coordenada da extremidade superior de um componente. Define o comportamento de uma barra de rolagem vertical. Define se o componente aparece ou no na tela. Define a largura do objeto. Permite definir qual o menu responsvel por manipular as janelas-filhas de uma aplicao MDI. Define o estado de exibio de um formulrio.

Mtodos
Show ShowModal Close Exibe o formulrio de manipulao no-modal. Exibe o formulrio de manipulao modal. Permite fechar o formulrio.

Objeto Button1 (Boto)


Paleta Standart Importncia: um dos objetos mais utilizados para confirmar e disparar rotinas associadas.

Propriedades
Action Anchors Referencia uma ao definida em um objeto TActionList. Permite manter a posio relativa do objeto ao objeto parente quando este redimencionado.

32

CEFET-UNED Prof. Mrio Andr

Associa o evento OnClick do objeto ao pressionamento da tecla Esc.

Cancel
Associa ao evento OnClick do objeto ao pressionamento da tecla Enter.

Default
ModalResult Parent... TabOrder TabStop Propriedade utilizada para encerrar a execuo de um formulrio Modal quando selecionado um valor diferente de mrNone. As propriedades Parent permitem que o componente receba a mesma formatao do objeto proprietrio. Define a ordem na passagem de foco no momento de pressionamento da tecla TAB. Define se o foco pra no componente.

Mtodos
SetFocus Envia o foco do windows para o componente.

Objeto Edit (Caixa de edio)


Paleta Standart Importncia: Um dos principais componentes para a entrada de dados do usurio do sistema.

Propriedades
AutoSelect AutoSize BorderStyle CharCase HideSelection Maxlength PasswordChar Define se o texto exibido pelo controle ser selecionado quando este receber o foco da aplicao. Para componentes TEdit a propriedade determina se a altura do controle ser redimensionada quando o tamanho da fonte for alterado. Determina o tipo da borda do componente. Determina o se tipo da fonte ser maiscula, minscula ou normal. Define se o texto perde a seleo ao perder o foco. Define um limite para a insero de caracteres. Define qual caractere ser usado para ocultar o texto inserido no componente. Permite manipular os caracteres inseridos no componente pelo usurio.

Text

Mtodos
Clear SetFocus Limpa o contedo da propriedade text. Envia o foco do windows para o componente.

Exerccio Confeccione um formulrio conforme esquema abaixo:

33

CEFET-UNED Prof. Mrio Andr

Funcionalidade: 1. As caixas de edio e os rtulos s ficaro habilitados se Delphi for digitado na 1 caixa 2. O boto Ok s ficar habilitado se o texto das ltimas caixas forem iguais e diferentes de branco. Altere as seguintes props do formulrio: Ctl3D = False, BorderStyle = bsDialog, Height = 225, Width = 280 e Position = poCenter Faa com que as teclas <Enter> ou <Esc> finalize a aplicao. Faa as trs caixas de edio ficarem sem texto e que para cada caractere digitado um @ seja exibido. Faa com o acesso mnemnico aos rtulos ative a caixa de edio correspondente. Defina o evento para fechamento do formulrio atravs do clique nos botes Desabilite o boto Ok, os dois ltimos rtulos e as duas ltimas caixas de edio.

Objeto Label (Rtulo de orientao)


Paleta Standart Importncia: Orientar o usurio escolha de componentes bem como sua utilizao.

Propriedades
Alignment AutoSize Define o alinhamento da string na rea do componente. Para componentes TDBText e TLabel, esta propriedade define se o controle ser automaticamente redimensionado para acomodar o texto. Define qual o componente receber foco quando o usurio selecionar a combinao de teclas aceleradoras (atalho) se existir. Define o alinhamento vertical do texto na rea do componente. Define se o caracter & ser um literal ou tecla de aceleradora (atalho). Define se o fundo do componente ser transparente ou no.

FocusControl
Layout ShowAccelChar Transparent

34

CEFET-UNED Prof. Mrio Andr

WordWrap

Define se o texto poder utilizar o retorno automtico em caso de ultrapassar a largura definida e se a propriedade AutoSize estiver falsa.

Objeto Memo (Memorando)


Paleta Standart Importncia: Permite o usurio entrar com dados do tipo TStrings, compara-se funcionalidade do software bloco de notas.

Exerccio: Crie um formulrio conforme lay-out abaixo Para as opes de Adiciona na Posio e Apaga Linha, a Caixa de Edio Linha, deve ser preeenchida com um valor menor que a da Caixa de Edio Total de Linhas A opo Apaga Tudo s poder ocorrer aps confirmao do usurio Antes de Carregar e Salvar Arquivo, verificar se o nome do arquivo foi fornecido na Caixa de Edio Arquivo A Caixa de Edio Total de Linhas dever se alterar obviamente toda vez toda vez que o contedo do memo for alterado e o seu valor no pode ser alterado pelo usurio

35

CEFET-UNED Prof. Mrio Andr

36

CEFET-UNED Prof. Mrio Andr

37

CEFET-UNED Prof. Mrio Andr

Propriedades Lines
MaxLength ReadOnly ScrollBars WantReturns WantTabs

Propriedade do tipo TStrings que contm as linhas de texto do componente. Define o limite mximo de caracteres no componente em sua propriedade Lines. Define se o componente do tipo somente leitura. Define se o componente pode trabalhar com barras de rolagem. Define se a tecla ENTER ser utiliza para quebra de linha.

Define a tecla Tab como tabulao ou mudana de foco. Caso falso podese utilizar CTRL+TAB para produzir o efeito desejado.
Permite carregar um arquivo para a propriedade Lines. Permite salvar o contedo da propriedade Lines em um arquivo especificado.

Mtodos
LoadFromFile SaveToFile

Objeto CheckBox (Caixa de verificao)


Paleta Standart Importncia: Permite verificar opes boolenas pr-definidas ou re-definidas pelo usurio.

38

CEFET-UNED Prof. Mrio Andr

Propriedades
AllowGrayed Define caso verdadeiro, trs estados possveis para o checkbox: checked (ligado), unchecked (desligado) e grayed (parcial). Caso falso, dois estados: checked (ligado) e unchecked (desligado). Define se o componente est ligado ou no, caso tenha apenas dois estados. Permite definir trs estados se AllowGrayed for verdadeiro.

Checked
State

Exerccio

Confeccionar uma aplicao conforme lay-out abaixo. Defina o codigo inicialmente prevendo que os CheckBoxs tenham a prop. AllowGrayed = False e execute. Depois defina o cdigo com essa prop. = True Funcionalidade: Ao se marcar um item, adicionar 1 na Caixa de Edio Total de Itens assinalados. E ao se desmarcar um, decrementar o valor desta Caixa.

Objeto RadioButton (Boto de radio)


Paleta Standart Importncia: Permite escolher entre um grupo, pelo menos uma opo.

39

CEFET-UNED Prof. Mrio Andr

Propriedades
Define se o componente est ligado ou desligado.

Checked

Exerccio
Confeccionar uma aplicao conforme lay-out abaixo. Insira primeiro o GroupBox e depois os botes de rdio. Observe que interessante definir acessos mnemnicos para os botes. Funcionalidade: Para Nada a Fazer, tire a marca do boto assinaloado e para O que Fazer exiba como mensagem o Caption do boto assinalado.

Objeto ListBox (Caixa de listagem)


Paleta Standart Importncia: Permite o usurio entrar ou manipular uma lista de dados.

Propriedades
Define uma lista de Strings que aparece no componente.

Items
MultiSelect Sorted Permite selecionar vrios itens (Strings) no componente. Define se a lista de Strings ser ordenada ou no.

Mtodos
Clear LoadFromFile SaveToFile Permite limpar o contedo da propriedade Items. Permite carregar um arquvo para a propriedade Items. Permite salvar o contedo da propriedade Items para um arquivo.

Objeto ComboBox1 (Caixa de listagem em formato de cortina)

40

CEFET-UNED Prof. Mrio Andr

Paleta Standart Importncia: Permite o usurio entrar ou manipular uma lista de dados.

Propriedades
Define uma lista de Strings que aparece no componente.

Items
Sorted Define se os dados sero ordenados. Define o texto atual da Combobox.

Text

Mtodos
Clear LoadFromFile SaveToFile Permite limpar o contedo da propriedade Items. Permite carregar um arquvo para a propriedade Items. Permite salvar o contedo da propriedade Items para um arquivo.

Exemplo: Insira uma ComboBox num formulrio limpo e defina as propriedades:


Sorted = True, Style = csSimple (redimensione a caixa para poder ver parte dela) No evento OnKeyPress, defina If key = # 13 then Begin if (ComboBox1.Text <> ) and (ComboBox1.Items.IndexOf(Combox1.Text) < 0) then // no duplic. ComboBox1.Items.Add(ComboBox1.Text); ComboBox1.Text := ; Key := #0; End; Assim, toda vez que o <Enter> for teclado, a digitao realizada ser inserida na ComboBox. // Se teclou <Enter>

Exerccio:
Utilizando a figura abaixo, produzir um aplicao que apresente a seguinte funcionalidade: pressionamento do boto Adicionar, aciona o nome escrito na caixa de texto na ComboBox. pressionamento do boto Nova, habilita o boto Adicionar, seta o foco da aplicao na Caixa de texto, desabilita o boto Nova e Excluir.

41

CEFET-UNED Prof. Mrio Andr

pressionamento do boto Limpar, limpa o contedo da Caixa de Texto e todos os elementos da ComboBox. pressionamento do boto Fechar encerra a aplicao. No evento click da ComboBox os botes Nova e Excluir ficam habilitados e Adicionar desabilitado.

Objeto ComboBox1 (Caixa de listagem em formato de cortina)


Paleta Standart Importncia: Permite o usurio entrar ou manipular uma lista de dados.

Propriedades
Define uma lista de Strings que aparece no componente.

Items
Sorted Define se os dados sero ordenados. Define o texto atual da Combobox.

Text

Mtodos
Clear LoadFromFile SaveToFile Permite limpar o contedo da propriedade Items. Permite carregar um arquvo para a propriedade Items. Permite salvar o contedo da propriedade Items para um arquivo.

42

CEFET-UNED Prof. Mrio Andr

Objeto GroupBox (Caixa de agrupamento)


Paleta Standart Importncia: Permite agrupar componentes e estabelecer um ttulo na propriedade Caption.

Propriedades Align
Caption

Pemite definir um alinhamento no objeto proprietrio. Define o texto informativo na parte superior do componente.

Objeto RadioGroup (Grupo de botes radio)


Paleta Standart Importncia: Permite estabelecer um grupo de botes de radio e manipula-los pela propriedade ItemIndex.

Propriedades
Items ItemIndex Columns Define os itens disponveis ao usurio. Define qual dos itens est selecionado. Define o nmero de colunas para organizao dos componentes.

Exerccio 1: Utilizando-se da interface mostrada na figura abaixo, produzir uma aplicao que apresente a seguinte funcionalidade: O Clique no boto OK dever incrementar a quantidade de votos de cada equipe e a quantidade de entrevistados dos dois sexos.

43

CEFET-UNED Prof. Mrio Andr

Sexo um RadioGroup e as demais caixas GroupBox

Exerccio 2: Defina uma aplicao para conforme o lay-out abaixo. Linguagem e Verbo so GroupBox Adjetivo um RadioGroup Em tempo de projeto ative um boto de cada agrupamento Alterar o contedo da Caixa de Edio Frase quando qualquer uma das Caixas for alterada.

Objeto Panel (Painel)

44

CEFET-UNED Prof. Mrio Andr

Paleta Standart Importncia: Permite agrupar outros objetos e estabelecer um efeito visual nas aplicaes.

Propriedades Align Bevel... BorderStyle

Define o alinhamento do componente em relao ao seu proprietrio. Define a caracterstica das bordas (interna e externa) bem como sua espessura. Define o tipo da borda.

Exerccio
Utilizando uma Panel como Barra de Status para exibio de Dicas Flutuantes Insira um Panel no formulrio limpo e defina as propriedades: Align = alBottom Alignment = ta LeftJustify BevelInner = bvLowered Caption = (nenhum) Manipulador para o evento OnClick do Panel digite: Panel1.Caption := Application.Hint V no Object Inspector e exclua a conexo do Panel com esse manipulador.
Atravs do menu Search | Replace, troque as ocorrncias Panel1Click para DoShowHint.

No manipulador de evento OnCreate do formulrio, digite: Application.OnHint := DoShowHint; Insira alguns componentes no formulrio e defina dicas atravs da prop. Hint. Seja criativo. Execute Observe que sempre que o cursor estiver sobre um dos componentes, a dica aparecer na Barra de status. Poder ocorrer algum problema se a dica da Barra de status for muito grande e o componente tambm utiliza dica instantnea (showHint = True), que geralmente curta. Para resolver isso, selecione um componente e na prop. Hint defina dica instantnea | dica flutuante. Assim, quando o cursor passar sobre o componente, o texto da dica instantnea ser exibida prximo ao mesmo e o texto da dica flutuante, na linha de status.

45

CEFET-UNED Prof. Mrio Andr

Objetos MainMenu e PopupMenu (Menu principal e Menu rpido)


Paleta Standart Importncia: Define os Menus utilizados pelo usurio pelo boto esquerdo (MainMenu) ou pelo boto direito (PopupMenu) do Mouse.

Propriedades
Items Images Define um novo item de Menu. Define um objeto do tipo ImageList.

O objeto MainMenu permite a construo de sub-menus atravs de seu construtor clicando no item com o boto direito e escolhendo a opo Create submenu. Pode-se tambm excluir ou incluir items aleatoriamente atravs do boto direito no item desejado. Para criar um separador de menus, utilize o operador de subtrao (-) e confirme com a tecla Enter. Diferentes ppeis dos itens de menu Independentemente da posio deles na estrutura dos menus, h trs tipos fundamentais de itens de menu: Comandos: So itens de menu usado para dar um comando, para executar uma ao. Eles no oferecem nenhuma pista visual. Definidores de Estado: So itens de menu usados para alternar uma opo entre ligado e desligado, para mudar o estado de um elemento em particular. Quando h dois estados, estes
46

CEFET-UNED Prof. Mrio Andr

comandos usualmente tm uma marca de verificao esquerda se estiverem ativos. Neste caso, selecionar o comando produz a ao oposta. Itens de Dilogo: So itens de menu que fazem com que uma caixa de dilogo aparea. A real diferena entre estes e os outros itens de menu que o usurio ter condies de explorar os possveis efeitos da caixa de dilogo correspondente e de finalmente abort-los atravs do boto Cancelar da caixa. Esses comandos devem ter uma pista visual, que consiste em trs pontos aps o texto. Isto no obrigatrio do ponto de vista tcnico, mas to comum que voc no deve ignorar esta diretriz. Mudando itens de menu em tempo de execuo A estrutura de um menu pode mudar numa srie de maneiras, mas as mais importantes se aplicam a itens individuais. Como por exemplo, quando um comando de menu no pode ou no deve ser selecionado (Prop. Enabled), usualmente ele assume a cor cinza. Neste caso o usurio no tem a chance de usar esse comando. Outra mudana visual o uso da marca de verificao (Prop. Checked), que pode ser substituda por duas legendas diferente (Prop. Caption) para os dois estados do item, como por exemplo: Exibir Lista e Ocultar Lista. Editando um menu com o Menu Designer (MD) O Delphi possui em editor especial de menus, o Menu Designer. Para invocar esta ferramenta, coloque um componente de menu num formulrio e d um clique duplo sobre ele ou na sua propriedade Items ou d um clique com o boto direito do mouse sobre ele e escolha essa opo. No se preocupe demasiadamente com a posio do componente de menu do formulrio, uma vez que isso no afetar o resultado; o menu colocado apropriadamente abaixo da Barra de Ttulo do formulrio. Observao: Para ser mais preciso, o formulrio exibe, abaixo de sua legenda, o menu indicado em sua propriedade Menu, a qual definida por padro to logo voc insira o primeiro componente de menu principal do formulrio. Se o formulrio tiver mais de um componente de menu principal, esta propriedade deve ser definida manualmente e pode ser mudada tanto em tempo de projeto como em tempo de execuo. Para criar o seu menu dentro do Menu Designer basta escrever o texto dos comandos. Para se criar menus suspensos de segundo nvel d um clique com boto direito do mouse sobre o item desejado e selecione o comando Create Submenu ou pressione simultaneamente <Ctrl> <>. Voc tambm pode utilizar as teclas <Insert> e <Delete> para inserir e deletar itens de menu respectivamente e as setas de direo para navegar entre os itens de menu. Para adicionar um separador ao menu suspenso, simplesmente insira um hfen como texto do comando, sendo que o separador no responde ao evento OnClick.

47

CEFET-UNED Prof. Mrio Andr

Atalhos de Menu Uma caracterstica comum dos itens de menu que eles contm uma letra sublinhada, pode ser a 1 ou uma letra do meio. E ao pressionar <Alt> + letra, ativa menu suspenso correspondente. Obviamente, cada elemento da barra de menus deve ter uma letra sublinhado diferente. O mesmo verdadeiro para os itens de menu de um menu suspenso especfico. Para determinar a letra sublinhada, simples coloque & antes dela na definio do item. Os itens de menu podem ter tambm teclas de atalho (p.e. <Ctrl> <C>). Para associar uma tecla de atalho a uma item de menu (menus suspensos as possui) selecione um valor para a propriedade ShortCut do item atravs das combinaes padres. Mudando Itens de Menu Trs propriedades so usadas para modificar um item de menu. Usamos a propriedade Checked para adicionar ou remover uma marca de verificao dentro do item de menu. A propriedade Enabled pode usada para dar a cor cinza a um item de menu a fim de que ele no possa ser selecionado pelo usurio. A ltima a Caption, o texto do item de menu. Uma quarta operao com item de menu seria a sua remoo ou torn-lo invisvel. Isso facilmente realizado mudando-se o valor da prop. Visible para False. Sugere-se que voc evite esta operao, pois o usurio pode confundir-se. prefervel desabilit-lo temporariamente. Associando Eventos a Itens de Menu A associao de um evento a um item de menu fita semelhante associao de um evento a qualquer componente. A nica diferena que ele no visto como um componente, logo devemos selecion-lo utilizando caixa de seleo do Obj Inspector ou utilizarmos o MD. Exerccio -1 1. Insira um Label no formulrio e limpe sua legenda 2. Insira um MainMenu com 1 Menu suspenso e este com 3 itens de menu quaisquer. 3. Construa o cdigo para que cada vez que selecionarmos um item de menu, a legenda do label receba a sua descrio 4. Execute a aplicao e depois remova os compoentes inseridos no formulrio Exerccio 2: Confeccione a estrutura de Menu conforme layouts abaixo, observando os nomes dos menus suspensos e dos itens de menu. Para obtermos uma janela com melhor aparncia altere a prop Color do formulrio para clBtnShadow Viajar Namorar Comer Estudar Bye Bye

48

CEFET-UNED Prof. Mrio Andr

Praias Ctrl P Montanhas Florestas Casa da Vov Regressar

Cinema Aquilo Boite Sof E Mais Aquilo Junto com Sogra No ..

Cobol Sobre Assuntos Espec. Religio

Menus Pop-Up ou SpeedMenus ( com o boto direito do mouse) (Standard) No Windows comum ver aplicaes que possuem menus locais especiais que voc ativa dando um clique com o boto direito do mouse. O menu que exibido - um menu pop-up em termos do Windows - usualmente depende da posio do clique do mouse. Estes menus tendem a ser fceis de usar, uma vez que agrupam somente os poucos comandos relacionados ao elemento que est atualmente selecionado. Para adicionar menus pop-up na sua aplicao, execute algumas operaes simples: 1. Insira um componente PopUpMenu no formulrio 2. Adicione alguns itens de menu ao componente 3. Associe o componente propriedade PopUpMenu do componente desejado 4. E obviamente, adicionar manipuladores de eventos para o OnClick dos itens de menu Observaes: A propriedade AutoPop = True faz o menu aparecer atravs do clique do boto direito sobre o componente. A propriedade Alignment determina onde o menu se abrir. A parte superior do menu ser a da posio do cursor do mouse, mas o alinhamento poder ser esquerda ou direita ou no no centro do componente, dependendo do valor definido nesta propriedade. O PopUp Menu no deve ter submenus, pois por convenincia, eles devem ser rpidos e no possuem teclas de acesso mnemmico (Alt + letra). Podem ter tecla de atalho (propriedade ShortCut). Mas ateno: Mesmo que menu no esteja associado a nenhum componente e tambm no esteja exibido, as teclas de atalho estaro disponveis. Neste caso, para no acessar um item com este recurso, devemos desabilitlo. Um componente de menu suspenso recebe o evento OnPopUp antes que ele seja exibido. a chance que temos de realizar qualquer preparao em seus itens, como desativar, ajustar marcas de verificao, etc...

49

CEFET-UNED Prof. Mrio Andr

ScrollBar (Standard)
Paleta Standart O componente ScrollBar serve como barra de rolamento vertical ou horizontal para seleo e/ou variao de um parmetro.

O usurio pode modificar o valor representado pelo scrollbar de duas formas: clicando nas setas de incremento/decremento ou diretamente na barra. A primeira ao faz com que o valor representado sofra uma modificao menor (SmallChange) enquanto a segunda gera uma maior (LargeChange). Os limites inferior e superior da faixa de valores vlidos para a ScrollBar so dados por Min e Max respectivamente. Estes limites representam o valor quando o cursor da barra estiver em cima ou esquerda (Min) ou em baixo ou direita (Max). O controle prov fcil e eficiente navegao por longa lista de itens ou grande quantidade de informao que no podem ser totalmente visualizadas nas suas reas de exibio. Pode tambm ser usado como entrada de dados ou como mostrador de informaes (valores numricos). Principais Propriedades
Propriedade Kind LargeChange Max Min Position SmallChange Descrio Define a direo da barra de rolagem Indica a variao da rolagem feita sem o uso das setas de movimentao Maior valor do ScrollBar Menor valor do ScrollBar Indica a posio atual do srollbar Indica a variao da rolagem feita com o uso das setas de movimentao

Principais Eventos
Evento OnChange OnScroll Descrio Disparado quando o contedo da propriedade position alterado pelo usurio, e ocorre imediatamente aps o OnScroll Ocorre quando feita a rolagem do ScrollBar

Principais Mtodos
Mtodos SetParams Descrio Modifica os valores das propriedades Position, Min e Max de uma s vez

50

CEFET-UNED Prof. Mrio Andr

FUNES DE CONVERSO E MANIPULAO


Vamos quebrar nosso estudo sobre os componentes do delphi para falarmos sobre Casting e Converses de tipos , pois estas funes sero importantes para futuras esplicaes e atividades. Como j sabemos, no podemos atribuir uma varivel outra de um tipo diferente. Caso precise fazer isso, h duas opes. A primeira casting e a segunda utilizar uma funo de converso de tipos.
Funo Chr Ord Round Trunc Int IntToStr IntToHex StrToInt StrCopy FloatToDecimal FloatToStr FloatToStrF StrToFloat TextToFloat DateToStr(Date: TdateTime) DateTimeToStr(DateTime: TDateTime) StrToDate (const S: String) StrToDateTime(const S: String) FormatFloat(const Format: string; Value: Extended): string Objetivo Converte um nmero ordinal em um caractere ANSI Converte um valor do tipo ordinal em um nmero que indica sua ordem Converte um valor real em um valor inteiro, arrendondando seu valor Converte um valor real em um valor inteiro, truncando seu valor Retorna a parte inteira do argumento de valor de ponto flutuante Converte um nmero em uma string Converte um nmero em uma string com sua representao em hexadec. Converte uma string em um nmero, levando uma execeo se a string no representa um nmero inteiro vlido Copia uma string estilo Pascal em uma string terminada em nulo Converte um valor de ponto flutuante em registro incluindo sua representao decimal (expoente, dgito, sinal) Converte um valor de ponto flutuante para sua representao string usando representao padro Converte um valor de ponto flutuante para sua representao string usando a formatao especificada Converte uma string Pascal em um valor de ponto flutuante Converte uma string terminada em nulo em um valor de ponto flutuante Converte um dado TDateTime em String. Converte um dado TDateTime em String. Converte um dado String em tipo TDateTime. Converte um dado String em tipo TDateTime Permite formatar um tipo ponto flutuante retornando uma string. Edit2.Text := FormatFloat('###,###.00',soma); Sendo soma uma varivel real.

51

CEFET-UNED Prof. Mrio Andr

EXEMPLOS: Armazenar a data e hora atuais em uma varivel Var InicioAtual : TDateTime; Begin Atual := Now; Exibir a data e a hora na legenda de Labels Label1.Caption := DateToStr(Atual); Label2.Caption := TimeToStr(Atual);

O tipo TDateTime internamente manipulado como tipo Ponto Flutuante.

PROCEDURES E FUNES
Procedimentos e funes so blocos de cdigo (rotinas) em Object Pascal que podem ou no receber parmetros (valores) para processamento. Uma vez definida a rotina pode-se ativa-la de diversas partes do programa atravs de seu nome. A grande diferena entre as formas de definio destas rotinas (se procedimentos ou funes) est no fato de que: Procedimento NO retorna valor. Funo Retorna valor.

DECLARAO E ATIVAO DE PROCEDIMENTO


Podemos declarar um procedimento da seguinte maneira maneira: Dentro da clusula private ou public, defina a declarao do procedimento:
procedure Soma(X, Y: String);

Com o cursor posicionado na mesma linha, pressione: CTRL+SHIFT+C e perceba que o prprio Delphi realiza a construo do procedimento dentro da clusula implementation. Esse recurso chamado Class Completion. Nossa tarefa apenas definir o cdigo a ser realizado pelo procedimento.
procedure TForm1.Soma(X, Y: String); begin Label1.Caption := FloatToStr(StrToFloat(X)+StrToFloat(Y)); end;

Supondo a existncia de dois componentes Edit, um componente Button e um componente Label, este cdigo pode ser ativado da seguinte forma:
procedure TForm1.Button1Click(Sender: TObject); begin Soma(Edit1.Text, Edit2.Text); end;

52

CEFET-UNED Prof. Mrio Andr

DECLARAO E ATIVAO DE FUNES


A construo de funes tem o mesmo raciocnio diferindo na caracterstica de retorno da funo. Podemos declarar um procedimento da seguinte maneira maneira: Dentro da clusula private ou public, defina a declarao da funo:
function Subtrai(X, Y: String): String;

Observe que agora, depois dos parmetros h um tipo de definio de retorno da funo (String). Pode-se utilizar a mesma dica de construo do procedimento, na linha da declarao tecle CTRL+SHIFT+C (Class Completion) e perceba que o prprio Delphi realiza a construo da funo dentro da clusula implementation. Nossa tarefa apenas definir o cdigo a ser realizado pela funo.
function TForm1.Subtrai(X, Y: String): String; begin result := FloatToStr(StrToFloat(X)-StrToFloat(Y)); end;

A palavra reservada result o recurso usado pela Object Pascal para estabelecer o retorno da rotina. No se deve declarar esta varivel, ela declarada no momento da utilizao da funo. Supondo a existncia de dois componentes Edit, um componente Button e um componente Label, esta funo pode ser ativada da seguinte forma:
function TForm1.Button2Click(Sender: TObject); begin Label1.Caption := Subtrai(Edit1.Text, Edit2.Text); end;

Neste caso, o Label recebe o result de subtrai, ou seja, a subtrao dos dados passados nos parmetros.

DECLARAES CRIADAS AUTOMATICAMENTE PELO DELPHI


Se voc um bom observador, percebeu que o Delphi tambm gera as declaraes e seus respectivos procedimentos quando voc deseja manipular um determinado evento.

CAIXAS DE DILOGO
Podemos utilizar alguns tipos de caixas de dilogo pr-definidas pelo Delphi facilitando em muito o desenvolvimento pela ferramenta:

53

CEFET-UNED Prof. Mrio Andr

ShowMessage
A caixa de dilogo ShowMessage declarada internamente pelo Delphi desta forma:
procedure ShowMessage(const Msg: string);

Onde o parmetro Msg um dado String. Exemplo:


ShowMessage(Um texto ou propriedade string ser exibida.);

MessageDlg
A caixa de dilogo MessageDlg declarada internamente pelo Delphi desta forma:
function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Word;

Onde: const Msg: string uma constante string ou propriedade deste tipo. mtWarning Contm um cone exclamao amarelo. mtError Contm um cone vermelho de parada. mtInformation Contm um cone i azul. mtConfirmation Contm uma interrogao verde. mtCustom No contm BitMap. mbYes mbNo mbOK mbCancel mbAbort mbRetry mbIgnore mbAll mbNoToAll mbYesToAll mbHelp Define um nmero para o help de contexto. Por padro, zero 0.

DlgType: TmsgDlgType

Buttons: TMsgDlgButtons HelpCtx: Longint

O retorno da funo o tipo do boto como mr Desta maneira pode-se fazer testes lgicos como no exemplo:
if MessageDlg(Deseja sair?, mtConfirmation, [mbYes, mbNo], 0)=mrYes then

54

CEFET-UNED Prof. Mrio Andr

Application.MessageBox
Uma outra caixa de dilogo o mtodo MessageBox do objeto Application. Esta funo est definida da seguinte maneira:
function MessageBox(const Text, Caption: PChar; Flags: Longint): Integer;

Onde:
const Text Caption: PChar uma constante string ou propriedade deste tipo. Define uma string para o ttulo da janela. Define os botes, cones e a possibilidade de focar um determinado boto. Os valores para botes so: MB_ABORTRETRYIGNORE, MB_OK, MB_OKCANCEL, MB_RETRYCANCEL, MB_YESNO, MB_YESNOCANCEL Os valores para os cones so: MB_ICONEXCLAMATION, MB_ICONWARNING, MB_ICONINFORMATION, MB_ICONASTERISK, MB_ICONQUESTION, MB_ICONSTOP, MB_ICONERROR, MB_ICONHAND Os valores para a definio do boto default pode ser: MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON3, MB_DEFBUTTON4

Flags

O retorno da funo o tipo do boto como id


(IDABORT IDCANCEL IDIGNORE IDNO IDOK IDRETRY IDYES)

Desta maneira pode-se fazer testes lgicos como no exemplo:


if Application.MessageBox('Texto','Ttulo',MB_YESNOCANCEL + MB_ICONINFORMATION + MB_DEFBUTTON2) = IdYes then

CAIXAS DE ENTRADA
Podemos obter dados do usurio atravs de caixas de dilogo pr-defindas.

InputBox

55

CEFET-UNED Prof. Mrio Andr

A funo InputBox retorna um tipo String, que dado digitado pelo usurio na sua utilizao. Sua definio interna a seguinte:
function InputBox(const ACaption, APrompt, ADefault: string): string;

Onde: const ACaption APrompt ADefault Exemplo:


InputBox('Ttulo da janela','Descrio','Valor Padro')

Define o ttulo da janela Define um rtulo para orientao dentro da caixa. Define um valor default para a caixa.

InputQuery
A funo InputQuery retorna um tipo Booleano, o dado digitado pelo usurio ser colocado em uma varivel do tipo string previamente declarada. Sua definio interna a seguinte:
function InputQuery(const ACaption, APrompt: string; var Value: string): Boolean;

Exemplo:
if InputQuery('Ttulo', 'Descrio', aux) and (aux <> '') then

Neste exemplo acima, a janela s retornar verdade se houver algum valor digitado e o usurio clicar no boto OK, caso contrrio o retorno ser falso.

56

CEFET-UNED Prof. Mrio Andr

Exemplo
Vamos examinar uma unit e exemplicar os principais conceitos:
type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Label1: TLabel; procedure Button1Click(Sender: TObject); function Soma(X, Y: String): Integer; //definida pelo desenvolvedor private { Private declarations } aux: Integer; //varivel privada public { Public declarations } frase: String; //varivel pblica end; var Form1: TForm1; implementation {$R *.DFM} const MAX = 50; //definio de constante procedure TForm1.Button1Click(Sender: TObject); var titulo: String; //variavel local i: Integer; begin if (Edit1.Text <> '') and (Edit2.Text <> '') then //atribui variavel private - aux o retorno da funo soma aux := Soma(Edit1.Text,Edit2.Text); titulo := 'Curso de Delphi'; //atribui varivel local frase := titulo+' Verso 5'; //atribui variavel public Form1.Caption := frase; //atribui propriedade Caption do form ShowMessage('A soma dos valores : '+IntToStr(Aux)); for i:=0 to MAX do Label1.Caption := IntToStr(i); end; function TForm1.Soma(X, Y: String): Integer; begin result := StrToInt(X)+StrToInt(Y); end; end.

CHAMADA DE FORMS
Uma caracterstica importante da apresentao dos formulrios em uma aplicao, o fato de ser apresentado como MODAL ou NO-MODAL. H dois mtodos para executar a visualizao, mas antes vamos entender como isso funciona. MODAL O foco fica preso no formulrio e no liberado para outro form at que ele seja fechado. O usurio pode ativar outra aplicao do Windows, mas no poder

57

CEFET-UNED Prof. Mrio Andr

trabalhar em outra janela daquele programa cuja janela foi aberta como modal (at que seja fechada). NO MODAL O foco pode ser transferido para outra janela sem que esta precise ser fechada.

Entendido este conceito, os mtodos que o Delphi utiliza para apresentar os forms so: Show para apresentar forms NO-MODAIS, ou ShowModal para apresentar forms MODAIS.

COMPONENTES (VCL)
Objeto BitBtn (Boto com figuras opcionais)
Paleta Additional Importncia: Permite inserir figuras para uma melhor orientao do usurio, alm de funes pr-definidas.

Propriedades Glyph
Kind

Define um Bitmap para o componente. (Arquivo com extenso .BMP) Define o tipo de Bitmap exibido pelo usurio. bkCustom Bitmap definido pelo usurio. bkOk Boto OK padro, com uma marca de verificao na cor verde e propriedade Default igual a True. bkCancel Boto Cancel padro, com um x na cor vermelha e propriedade Cancel igual a True. bkYes Boto Yes padro, com uma marca de verificao na cor verde e propriedade Default igual a True. bkNo Boto No padro, com uma marca vermelha representando um crculo cortado e propriedade Cancel igual a True. bkHelp

Boto de auxlio padro, com uma interrogao na cor cyan. Quando o usurio clica sobre o boto, uma tela de auxlio deve ser exibida (baseada no cdigo do desenvolvedor).
bkClose Boto Close padro, com o desenho de uma porta. Quando o usurio clica sobre o boto, o formulrio a que ele pertence se fecha. bkAbort Boto Abort padro, com um x na cor vermelha e propriedade Cancel igual a True. bkRetry Boto Retry padro, com uma seta circular verde. bkIgnore Boto ignore padro, com o desenho de um homem verde se afastando.

58

CEFET-UNED Prof. Mrio Andr

ModalResult

bkAll Boto All padro, com uma marca de verificao dupla na cor verde e propriedade default igual a True. Permite encerrar a execuo de um formulrio Modal quando o seu valor for diferente de mrNone.

Objeto MaskEdit (Caixa de edio com mscara)


Paleta Additional Importncia: Permite estabelecer uma mscara para a entrada de dados no componente. Pode ser considerado literalmente um componente Edit com mscara.

Propriedades
CharCase EditMask PasswordChar Define o tipo dos caracteres. Permite definir uma mscara para entrada de dados. Define um caracter para ocultar a entrada de dados.

A mscara definida na propriedade EditMask ir restringir os caracteres que o usurio pode entrar numa caixa de edio, isto evita que os usurios entrem com caracteres invlidos ou com formatos de dados indesejados para um determinado valor. Mscara de Telefone: !\(9999\)999-9999;1;_ A mscara formada por trs partes: a 1 a mscara propriamente dita, a 2 consiste num caractere que define se os caracteres ou a mscara devem ser salvos como parte dos dados, a 3 define o caractere usado para representar espaos em branco na mscara.

Lista dos caracteres utilizados numa mscara


Caractere ! > < \ L l A a C c 0 9 # : Significado na Mscara Se um ! aparecer na mscara, caracteres em branco no so armazenados como dados Marca o incio do bloco que deve ser convertido em letras maisculas, para fechar esse bloco esperase o caractere < Marca o incio do bloco que deve ser convertido em letras minsculas, para fechar esse bloco esperase o caractere > Define um caractere literal, ou seja, o caractere que segue a barra invertida \ utilizado como caractere especial, fixo, que pode ser salvo como parte integrante do valor ou no. Requer a entrada de caractere alfabtico (A-Z, a-z) nesta posio Permite a entrada de caractere alfabtico (A-Z, a-z) nesta posio, mas no requer Requer a entrada de caractere alfanumrico (A-Z, a-z, 0-9) nesta posio Permite entrada caractere alfanumrico (A-Z, a-z, 0-9) nesta posio, no requer Requer um caractere qualquer nesta posio Permite um caractere qualquer nesta posio, mas no requer Requer um caractere numrico (0-9) nesta posio Permite um caractere numrico (0-9) nesta posio, mas no requer Permite um caractere numrico, um smbolo + ou -, mas no requer Usado como separador em dados horrios. Se outro caractere separador definido nos atributos internacionais do Painel de Controle do seu Sistema, este caractere ser usado ao invs dos dois

59

CEFET-UNED Prof. Mrio Andr

/ ; _ <>

pontos Separador de dia, ms e ano. Idem com relao Painel de Controle Usado para separar as trs partes que formam a mscara Insere espao em branco automaticamente no texto Define que as letras maisculas e minsculas sero armazenadas como digitadas

Objeto SpeedButton (Boto para barra de cones)


Paleta Additional Importncia: Permite ao usurio manipular os botes individuais ou atravs do conceito de grupo.

Propriedades
Glyph GroupIndex AllowAllUp Flat Down Define um Bitmap para o componente. Permite agrupar um conjunto de SpeedButtons quando ao serem selecionados, tiverem a propriedade diferente de zero. Permite que o componente possa ter o relevo suspenso ao ser clicado. S pode ser utilizado junto ao conceito de agrupamento. Define um efeito visual interessante. Permite determinar qual componente foi pressionado. S pode ser utilizado junto ao conceito de agrupamento.

Exemplo:

60

CEFET-UNED Prof. Mrio Andr

61

CEFET-UNED Prof. Mrio Andr

Objeto Image (Imagem)


Paleta Additional Importncia: Permite inserir uma figura para uso geral na aplicao.

Propriedades
AutoSize Picture Stretch Permite alterar o tamanho do componente baseado no tamanho da figura. Define a figura a ser exibida. Permite alterar o tamanho da figura baseado no tamanho do componente.

Mtodos
LoadFromFile Permite carregar um arquivo de figura na propriedade Picture.

Para trabalhar com imagens jpg, necessrio acrescentar na clusula uses da interface a biblioteca jpeg.

Possibilita a exibio de uma figura (Bmp)


Propriedade Picture Center Strech AutoSize Significado Definio da figura do tipo BMP, ICO, WMF ou EMF Centraliza a figura em relao ao Quadro (objeto) Se True, adequa o tamanho da imagem com relao ao objeto Se True, adequa o tamanho do objeto com relao a imagem Contrrio da propriedade Strech

62

CEFET-UNED Prof. Mrio Andr

Exerccio

Nosso exerccio ir utilizar 3 formulrios que sero exibidos na ordem acima: 1 Tela de Splash, 2 Formulrio de Senha e 3 o Formulrio Principal da Aplicao

63

CEFET-UNED Prof. Mrio Andr

1. Comece uma nova aplicao 2. Altere tamanho do formulrio, seu nome para Frm_Princ e dever ser exibido no centro da tela. 1. Insira mais formulrio, altere suas propriedades para que seja exibido maximizado, sem borda e com o nome de Splash. 2. Insira um Image nesse formulrio e altere as propriedades Picture, Strech = True e Align = alClient 5. Em Project Options defina o Splash como disponvel.
6.

Altere o arquivo .DPR conforme codificao em negrito abaixo e execute Application.Initialize; Splash := Tsplash.Create(Application); Splash.Show; Splash.Refresh; Application.CreateForm(TFrm_Princ, Frm_Princ); Splash.Release; // Se nao desejar mais ele no fundo Application.Run;

7. Observe que o Splash no fica na tela e logo o formulrio principal exibido. Na prtica teramos a exibio do Splash, a execuo de rotinas de inicializao da aplicao que demandaria algum tempo e quando estas terminassem, o Splash deveria ser apagado e exibido o formulrio principal.

Como no temos rotinas de inicializao, vamos ento, criar um freio, que no exerccio seria a exibio do formulrio de Senha. 8. Para inserir o formulrio de Senha: Menu File, opo New, Guia Dialog e escolha Password Dialog 9. Altere os componentes deste formulrio para que fique igual ao exibido acima, com o nome de Frm_Senha e o defina como disponvel em Project Options.
10.

Insira o cdigo abaixo no arquivo .DPR depois do comando Splash.Refresh: Frm_Senha := TFrm_Senha.Create(Application); Frm_Senha.ShowModal; Frm_Senha.Release;

11. Grave e execute a aplicao

StringGrid (Additional)

64

CEFET-UNED Prof. Mrio Andr

Utilizado para exibio e edio de uma tabela de strings. A sua apresentao similar a uma planilha. organizada em linhas e colunas, tendo como elemento bsico as clulas (cells).
Propriedade Cells Col Row ColCount RowCount FixedCols FixedRows DefaultColWidth DefaultRowHeight ColWidths RowHeight GridLineWidth Descrio Clula que est selecionada Nmero da coluna da clula selecionada Nmero da linha da clula selecionada Nmero de colunas (default = 5) Nmero de linhas (default = 5) Nmero de colunas fixas Nmero de linhas fixas Largura padro das colunas Altura padro das linhas Vetor que define a largura das colunas Vetor que define a altura das linhas Largura da linha da Grid

Referncia a uma clula:


nome da grid.Cells[nmero da coluna, nmero da linha] StringGrid no permite ordenao No permite centralizar os contedos nas clulas Pode-se alterar a largura das colunas, tambm com: ColWidths[0] := valor (1 col) Pode-se alterar a altura das linhas, tambm com: RowHeights[0] := valor (1 linha)

O StringGrid tem uma propriedade chamada Options, do tipo Set, que permite a configurao de diversas opes, inclusive a permisso ou no de edio de clulas.
Valor goFixedVerLine goFixedHorzLine goVerLine goHorzLine goDrawFocusSelected goRowSizing goColSizing goRowMoving goColMoving goEditing goTabs goRowSelect goAlwaysShowEditor goThumbTracking Descrio Exibe linhas verticais em colunas fixas Exibe linhas horizontais em colunas fixas Exibe linhas verticais Exibe linhas horizontais Exibe a clula selecionada em cor de seleo Permite a mudana de tamanho da linha Permite a mudana de tamanho das colunas (arrastando as clulas das linhas fixas) Permite a movimentao de linhas (arrastando as clulas das colunas fixas) Permite a movimentao de colunas (arrastando as clulas das linhas fixas) Permite a edio do texto das clulas no fixas Permite o uso da tecla TAB para a navegao entre as clulas Seleciona uma linha inteira ao invs da clula corrente Sempre exibe o editor (somente vlido se goEditing) Ao usar as scrollbars, o contedo rolado em tempo real

Mscaras de Edio
possvel utilizarmos mscaras de edio para controlar a edio do texto de uma clula. Para tal, precisamos associar cdigo ao evento OnGetEditMask da seguinte forma: procedure TForm1.StringGrid1GetEditMask(Sender: TObject; ACol,

65

CEFET-UNED Prof. Mrio Andr

ARow: Integer; var Value: String); begin if Acol = 1 then Value := '##/##/##'; end; Os caracteres usados para definir as mscaras de edio so os mesmos do componente TMaskEdit. Exerccio 1 - Inserindo valores na Grid: 1. Insira no formulrio: um StringGrid, 3 Edits, 3 Labels e um boto "Inserir" 2. No evento OnClick do boto inserir o texto do 3 Edit nas posies especificadas nos outros dois edits 3. Criticar os valores informados da linha e coluna Exerccio 2 - Inserindo Ttulos na Coluna e na Linha Fixa: 1. Insira os ttulos para colunas: Seg, Ter, Qua, Qui 2. Insira os ttulos para as linhas: 8:00, 9:00, 10:00, 11:00

Exerccio 3 - Recuperando um valor da Grid 1. Insira um Edit e um boto "Recuperar" 2. No evento OnClick do boto fazer o Edit receber o valor da clula selecionada Exerccio 4 - Uma pequena Aplicao: 1. Insira um StringGrid com 3 colunas e 2 linhas, 3 edits, 3 Labels e um boto "Inserir" 2. Defina "Nome", "Telefone" e "E-mail" para os Labels e Colunas 3. No Evento OnClick do boto inserir os contedos dos edits no StringGrid 4. Realizar as devidas crticas e controles para perfeita funcionalidade.

Objeto - PageControl

66

CEFET-UNED Prof. Mrio Andr

Paleta Win32 Importncia: Permite definir guias para agrupar os demais componentes. Cada guia representa um componente TabSheet do tipo TTabSheet, uma espcie de sub-objeto do PageControl.

Propriedades
ActivePage Permite determinar qual a guia foi selecionada pelo usurio.

Para criar novas pginas, clique com o boto direito no componente PageControl e escolha New Page.

Objeto OpenDialog (Caixa de dilogo para abertura de arquivos)


Paleta Dialogs Importncia: Permite utilizar uma caixa de dilogo pronta com recursos padronizados pelo sistema operacional.

Propriedades
DefaultExt FileName Filter FilterIndex InitialDir Options Title Especifica a extenso a ser adicionada ao nome de um arquivo quando o usurio digita o nome de um arquivo sem a sua extenso. Define o arquivo selecionado no componente. Permite definir as mscaras de filtro de arquivo a serem exibidas. Define o filtro default a ser exibido na lista drop-down que define os tipos de arquivos selecionveis. Define o diretrio default quando a caixa de dilogo aberta. Neste componente, options define uma srie de valores booleanos. Define o ttulo da caixa de dilogo.

Os componentes da paleta dialogs so executados atravs do mtodo execute. Este mtodo uma funo que retorna um valor booleano, assim para exibir uma caixa de dilogo, podemos escrever:
if OpenDialog1.Execute then

Se o usurio escolher algum arquivo e confirmar a caixa, execute retorna verdadeiro, caso contrrio, falso.

Objeto RichEdit (Texto com formatao)

67

CEFET-UNED Prof. Mrio Andr

Paleta Win32 Importncia: Permite formatar o texto (Negrito, Itlico, Sublinhado, Fontes, etc...) para a leitura de outros editores compatveis com o padro RTF.

Propriedades
Lines WantReturns WantTabs WordWrap Define o texto exibido no componente. Define a tecla Enter como quebra de linha. Define a tecla Tab como tabulao ou mudana de foco. Caso falso pode-se utilizar CTRL+TAB para produzir o efeito desejado. Define a quebra de linha automtica de texto.

Mtodos
Clear LoadFromFile SaveToFile Permite limpar o contedo do componente. Permite carregar um arquivo para a propriedade Lines. Permite salvar o contedo da propriedade Lines em um arquivo.

Objeto ProgressBar (Barra de progresso)


Paleta Win32 Importncia: Permitir ao usurio ter um acompanhamento de uma rotina demorada.

68

CEFET-UNED Prof. Mrio Andr

Propriedades
Max Min Orientation Position Step Permite definir o valor mximo para a faixa de valores no componente. Permite definir o valor mnimo para a faixa de valores no componente. Define se o componente dever ser vertical ou horizontal. Define a posio corrente do controle no componente. Define o incremento usado na variao do valor da propriedade position.

Objeto Gauge (Barra de progresso)


Paleta Samples Importncia: Permitir ao usurio ter um acompanhamento de uma rotina demorada.

Propriedades
Kind Progress Permite definir aparncias diferenciadas no componente. Define a posio corrente do controle no componente.

Objeto Animate (Animaes)


Paleta Win32 Importncia: Permite exibir um filme .AVI para ilustrar tarefas (rotinas) em andamento.

Propriedades
CommonAVI Active Repetitions Define o AVI a ser exibido. Liga e desliga a exibio do AVI. Define um nmero inteiro correspondente ao nmero de repeties. Zero define repeties indefinidas.

Objeto DateTimePicker (Data e hora atravs de uma Combobox)


Paleta Win32 Importncia: Permite ao usurio escolher uma data atravs de um componente que possui um importante impacto visual e facilidade operacional.

69

CEFET-UNED Prof. Mrio Andr

Propriedades
CalColors Date DateFormat DateMode Kind MaxDate MinDate Define as cores do calendrio. Define a data selecionada no componente. Define o formato da apresentao da data. Define o estilo da caixa de listagem. Define se o componente deve trabalhar com data ou hora. Define uma data mxima para uma faixa de valores. Define uma data mnima para uma faixa de valores.

Objeto MonthCalendar (Calendrio mensal)


Paleta - Win32 Importncia: Permite ao usurio escolher uma data atravs de um componente que possui um importante impacto visual e facilidade operacional.

Propriedades
Date FirstDayOfWeek WeekNumbers Define a data selecionada no componente. Define qual o primeiro dia da semana. Permite numerar as semanas.

Objeto StatusBar (Barra de status)


Paleta Win32 Importncia: Um dos principais componentes de informaes sobre operaes gerais no sistema.

Propriedades
AutoHint SimplePanel SimpleText Panels Permite exibir o hint do componente automaticamente na barra de status. Se no houver painis, a barra deve ter a propriedade SimplePanel ligada. Define que a barra de status ser sem divises. Define o texto a ser exibido pela barra de status. Permite a criao e edio de painis na barra de status. A propriedade SimplePanel deve estar desligada. Pode-se tambm dar um duplo clique na barra de status.

Ao utilizar a propriedade AutoHint, pode-se definir o hint dos objetos com duas strings separadas por pipe (|).
70

CEFET-UNED Prof. Mrio Andr

A primeira string ser utilizada como hint local, a segunda como hint na barra de status. Inserindo dicas no StatusBar Para obter esse efeito, so necessrias duas etapas: 1. Inserir componentes no formulrio e definir uma ou duas dicas atravs da propriedade Hint. 2. Escrever o cdigo para evento OnHint do componente ApplicationEvents Praticando: 1. Insira alguns componentes no formulrio e defina a prop. Hint dos mesmos. J vimos que a dica instantnea do componente pode ser = ou <> do StatusBar.
2.

Insira o componente ApplicationEvents

3. Defina o cdigo abaixo no seu evento OnHint: procedure Tform1.ApplicationEvents1Hint (Sender : TObject); begin Statusbar1.Panels[0].Text := Application.Hint; end;

Inserindo Data e Hora no StatusBar


Voc utilizar as funes que manipulam data e hora no Object Pascal. Mesmo utilizando essas funes devemos nos planejar como e quando a data e a hora sero atualizadas para serem exibidas. A forma mais fcil para realizar tal controle inserir no formulrio um componente Timer (paleta System) e configurar sua prop. Interval (Default = 1000 milissegundos = 1 segundo) que a frequncia do intervalo de tempo das ocorrncias do evento OnTimer do comp. Timer. Logo, o cdigo desse evento deve recuperar a data e/ou a hora do sistema e depois exib-las no StatusBar.
procedure TForm1.Timer1Timer (Sender : TObject); { variveis que recebero Data e hora do Sistema } var Data_Hora : TDateTime; // Tipo float que armazenar a data + a hora Data_Sys : TDate; Data_Hora : TTime; begin {Recuperando a data e a hora do sistema} Data_Hora := Now; Data_Sys := Date; Hora_Sys := Time; {Exibindo Data e Hora }

71

CEFET-UNED Prof. Mrio Andr

StatusBar1.Panels[0].Text := DateToStr(Data_Hora); StatusBar1.Panels[1].Text := TimeToStr(Data_Hora); {Outra forma de exibio StatusBar1.Panels[0].Text := DateToStr(Data_Sys); StatusBar1.Panels[1].Text := TimeToStr(Hora_Sys); } {Outra forma de exibio StatusBar1.Panels[0].Text := DateToStr(Date); // No necessrio criar variveis StatusBar1.Panels[1].Text := TimeToStr(Time); end;

Observao: Se o intervalo for grande (p. ex. 60000 = 1 minuto) para aparecer logo a data e a hora nos SubPaineis, ative o evento acima dentro do evento OnCreate do formulrio ou, se possvel, compartilhe este evento com ele. Se configurarmos a prop. Enabled do componente Time em False, o seu evento OnTimer no ocorrer. Dica: Sempre que voc usar um StatusBar, preencha o resto do formulrio com uma caixa de rolagem (ScrollBox da paleta Additional) e defina a sua prop. Align para alClient. Caso contrrio, se o usurio diminuir o formulrio o bastante para que as barras de rolagem apareo, estas se misturaro com o StatusBar.

Objeto ToolBar (Barra de cones)


Paleta Win32 Importncia: Permite criar barras de cones de maneira rpida e simples.

Propriedades
Flat Images HotImages ShowCaptions Define um efeito visual com relevo atravs do mouse nos botes. Permite definir um objeto do tipo ImageList. Permite definir um objeto do tipo ImageList a ser usado no momento em que o mouse passa (ou clica) sobre o componente. Permite exibir a propriedade caption dos botes.

Para adicionar botes ou separadores na ToolBar, clique com o boto direito sobre o componente e escolha New Button ou New Separator.

72

CEFET-UNED Prof. Mrio Andr

Inserindo BitMaps nos botes


1. Acrescentar no formulrio um ou mais componentes ImageList 2. Obviamente carregar os bitmaps no ImageList 3. Associar o ImageList com a prop. Images do ToolBar. Por padro, as imagens sero atribudas aos botes na ordem em que elas aparecem, mas voc pode mudar isso facilmente, configurando a prop. ImageIndex para cada boto do ToolBar. Pode-se preparar mais componentes ImageList para condies especiais dos botes, e atribuir a elas as propriedades (DisabledImages ou Images) e HotImages para cada boto do ToolBar. O primeiro grupo usado para os botes desabilitados, o segundo para o botes quando pressionados. Esse ltimo grupo de imagens usualmente mais vivo, ou seja, deve possuir as imagens mais vivas que o seu correspondente desabilitado. Para que as imagens vivas sejam exibidas quando da passagem do cursor do mouse sobre os botes, defina a propriedade Flat = True, fazendo tambm os botes terem aparncia plana. Obviamente, associe uma ImageList propriedade HotImages. No se esquea de definir dicas instantneas para os botes. Se voc definir a propriedade ShowHint = True (Default = False) daToolBar, a propriedade ShowHint dos botes tambm ser ajustada para True.

TRATAMENTO DE EXCEES
Quando criamos e executamos nossos programas, estamos sujeitos situaes de erros em tempo de execuo, a isto denominamos exceo. As excees devem ser tratadas de maneira a no permitir: Travar a aplicao Emitir mensagens tcnicas ao usurio leigo Deixar o SO instvel

Quando uma exceo ocorre, o fluxo de controle automaticamente transferido para blocos de cdigo denominados handlers(Manipulador de evento). de excees, definidos atravs de comandos especficos do Object Pascal. No Object Pascal, uma exceo uma classe. A definio de excees como classes permite agrupar excees correlatas. Esse agrupamento feito atravs da prpria hierarquia de classes, de modo que podemos ter vrias classes dependentes de uma nica.
73

CEFET-UNED Prof. Mrio Andr

O que ativa o mecanismo de tratamento de erros atravs de excees o uso da unit SysUtils. Ela permite detectar os erros e convert-los em excees. A idia das excees tornar os programas mais consistentes ao adicionar a capacidade de tratar erros durante a execuo (runtime). Um programa pode sobreviver a tais erros ou terminar de forma suave, permitindo que o usurio salve dados antes de sair. Em tempo de execuo, o Delphi lana excees quando algo estiver errado. Se seu cdigo for escrito corretamente, poder reconhecer o problema e tentar resolv-lo; caso contrrio, a exceo ser passada para o cdigo chamador, e assim por diante. Eventualmente, se nenhuma parte de seu cdigo tratar da exceo, o Delphi tratar dela, exibindo uma mensagem de erro padro e tentanto continuar o programa. O Delphi traz um grande nmero de excees predefinidas pertencentes a RTL (RunTime Library) - que so largamente utilizadas pela VCL. As excees pertencem a classe Exception do Delphi

O COMANDO TRY-EXCEPT
Podemos tratar as excees atravs do comando try-except. Sua sintaxe:
try <comandos a serem executados> except <bloco de exceo> end; //finaliza o bloco

Os comandos a serem executados so tratados seqencialmente na ordem em que foram criados, caso no haja alguma exceo o bloco de exceo ignorado. O programa prossegue normalmente obedecendo aos eventos provocados pelo usurio. Caso ocorra alguma exceo, o fluxo de controle desviado para o bloco de exceo. importante lembrar que podemos inserir qualquer comando, inclusive fazer chamadas a procedimentos e funes que por sua vez, podem chamar outros procedimentos e funes. O bloco de exceo pode ser definido atravs de uma construo genrica, exemplo:
try Abre(Arq); while not Fim(Arq) do processa(Arq); except Showmessage (Houve um erro inesperado.); end; //bloco try No exemplo acima tratamos os erros com uma mensagem genrica dentro de um um bloco try-except.

74

CEFET-UNED Prof. Mrio Andr

A CONSTRUO ON-DO
try Abre(Arq); while not Fim(Arq) do processa(Arq); except on EInOutError do //erro de entrada e sada begin Showmessage(Problemas...); Fecha(Arq); end; on EdivByZero do //erro de diviso de n inteiro por zero Showmessage(Erro ao dividir por zero); on EconvertError do //erro de converso de tipos Showmessage(Erro de converso de tipos de dados); end; //bloco try

Podemos ainda definir utilizando a clusula on-do com um handler genrico usando else, da seguinte forma:
try Processa; except on Exceo1 do Trata1; on Exceo2 do Trata2; else TrataOutras; end;

Os 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 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 inteiro 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

75

CEFET-UNED Prof. Mrio Andr

Stack. Eunderflow EzeroDivide 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.

O COMANDO TRY-FINALLY
H um outro comando cuja sintaxe comea com try. Este controle de finalizao nos permite lidar de forma estruturada com as situaes em que alocamos algum tipo de recurso e, haja o que houver, precisamos depois liber-lo.
<aloca o recurso> try <usa o recurso> finally <libera o recurso com ou sem exceo> end;

O comando funciona da seguinte forma: os comandos especificados aps o Try so executados seqencialmente. Se no ocorrer nenhuma exceo, os comandos especificados aps finally so executados, e o programa prossegue com a execuo normal, com o comando seguinte ao try-finally. Porm, se houver alguma exceo qualquer uma durante a execuo da lista de comandos do try, o trecho aps o finally executado e, no final, a exceo reativada. Em resumo: Os comandos do bloco finally sempre so executados, haja ou no alguma exceo durante a execuo dos comandos especificados aps o try.

BLOCOS TRY ANINHADOS


Exemplo: 1
Try abrir arquivo algumas operaes fechar arquivo except ...

2
abrir arquivo Try algumas operaes finally fechar arquivo

Observamos que no quadro 1 se em algumas operaes ocorrer uma exceo, o arquivo no ser fechado. Logo, devemos utilizar a soluo do quadro 2, pois nessa codificao, o arquivo ser fechado, independentemente da ocorrncia da exceo. Entretanto, se observarmos melhor, a soluo do quadro 2 que ela no trata a exceo. Como regra temos que um bloco try pode ser seguido por uma instruo except ou finally, mas no por ambas simultaneamente. A soluo tpica utilizar os dois blocos try aninhados. D ao interno uma instruo finally e d ao externo uma instruo except, ou viceversa, conforme a situao exigir.
76

CEFET-UNED Prof. Mrio Andr

Podemos mesclar as duas maneiras, conforme o cdigo abaixo:


var i,j : real; begin try try i := strtofloat(edit1.text); j := strtofloat(edit2.text); edit3.text := floattostr(i/j); except on exception do showmessage('Ocorreu uma exceo'); end; finally showmessage('alguma instrucao'); end; end;

Outro Exemplo:
procedure TForm1.Button1Click(Sender: Tobject); var i, aux:integer; begin aux := 500; try {inicio do bloco try-finally. Screen controla uma serie de recursos do sistema operacional neste exemplo, muda-se a aparencia do cursor para ampulheta} Screen.Cursor := crHourGlass; try//inicio do bloco try-except for i:=0 to aux do begin Edit1.Text := IntToStr(i); Application.ProcessMessages; {O mtodo ProcessMessages necessrio para forar que as mensagens do windows sejam processadas, desenhando o numero no Edit. Sem ele, apenas o valor final seria visto.} end; except Showmessage('Ocorreu um erro.'); end;//fim do bloco try-except finally Screen.Cursor := crDefault; end;//fim do bloco try-finally end; //fim da procedure

CLASSE EXCEPTION
A classe Exception tambm possui o objeto E, que recebe o valor do objeto exceo passado pela instruo raise Observe o cdigo abaixo:
Begin Try Resultado := A div B; Except On EDivByZero do

77

CEFET-UNED Prof. Mrio Andr

Begin Resulatdo := 0; MessageDlg(Diviso por zero corrigida, mtError, [mbok], 0); End; On E: Exception do Begin Resultado := 0; MessageDlg(E.Message, mtError, [mbok], 0); End; End; End;

TRATAMENTO DE EXCEES DE FORMA GLOBAL


H no Delphi um objeto chamado Application criado sem a deciso do desenvolvedor em todo o projeto. Este objeto representa a applicao como um todo e possui um evento muito importante: OnException. Este evento permite manipular as excees em um nvel global, podemos afirmar que os tratamentos de erro atravs do comando try so tratamento locais. A partir da verso 7 do Delphi, os eventos deste objeto esto disponvel na paleta Additional, nas verses anteriores este objeto era manipulado apenas no Code Editor tendo o desenvolvedor o trabalho de declarar os procedimentos desejados. Como o objeto tem como finalidade generalizar e centralizar tratamentos, deve haver um nico objeto na aplicao. Paleta Additional Importncia: Permite a manipulao de excees em um nvel global para toda a aplicao.

A utilizao do evento OnException pode ser criado da seguinte forma, utilizao um if na varivel E (que recebe o erro atual) tomando uma deciso na condio verdadeira:
procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception); begin if E is EConvertError then ShowMessage('Erro de converso de dados.'); end;

Neste exemplo acima, em qualquer lugar do programa (e no apenas em uma determinada rotina) que venha a levantar um erro do tipo EConvertError, uma mensagem genrica ser exibida. Este objeto deve estar inserido ou no formulrio principal ou no formulrio especial denominado Data Module como veremos adiante.

78

CEFET-UNED Prof. Mrio Andr

TRATAMENTO DE EXCEES SILENCIOSAS


Podemos utilizar o comando Abort para gerar excees silenciosas, ou seja, sem nenhuma mensagem.
try Form1.Caption := FloatToStr(StrToFloat(Edit1.Text) / StrToFloat(Edit2.Text)); except on EZeroDivide do begin Beep; ShowMessage('Diviso por zero'); end; on EInvalidOp do ShowMessage('Operao invlida'); else Abort; end;

UM POUCO MAIS SOBRE COMPONENTES (VCL)


A Paleta Dialog
OpenDialog e SaveDialog
Os Componentes OpenDialog e SaveDialog exibe uma caixa de dilogo padro do Windows para selecionar, abrir e salvar arquivos. A caixa de dilogo no aparece at que seja executado o mtodo Execute. Quando o usurio clica para Abrir ou salvar o arquivo, a caixa de dilogo fecha e so armazenados em uma lista, nas propriedades do componente, os nomes e caminhos de arquivos selecionados.
Propriedade DefaultExt FileEditStyle FileName Files Filter FilterIndex HistoryList InitialDir Options Title Descrio Especifica uma extenso, padro, de arquivo que juntada automaticamente ao nome de arquivo digitado na rea do nome do arquivo na caixa de dialogo. Determina o estilo da caixa de dilogo de seleo do arquivo. (Obsoleto.) FileEditStyle mantido para compatibilidade com verses mais velhas de Delphi. Devolve o nome e o caminho do diretrio completo do arquivo mais recentemente selecionado. Vetor que contem o nome e o caminho completo de todos os arquivos selecionados. Fornece uma lista drop-down para preencher com extenses de arquivos que serviram de filtro nas selees do arquivos. Ex: OpenDialog1.Filter := 'Arquivos de Texto (*.txt)|*.TXT' Determina qual o tipo de arquivo ser o padro na lista da propriedade Filter anterior. Mantm uma lista de arquivos previamente selecionados. (Obsoleto.) HistoryList mantido para compatibilidade com verses mais velhas de Delphi. Determina o diretrio atual quando a caixa de dilogo abre. Se esta opo estiver vazia o Opendialog sempre vai abrir no diretrio do programa ou no ltimo diretrio utilizado. Define caractersticas da caixa de dilogo. Na tabela abaixo esto discriminadas todas as opes. Texto que fica na barra de ttulo da caixa de dilogo.

79

CEFET-UNED Prof. Mrio Andr

Opes Valor ofAllowMultiSelect ofCreatePrompt ofExtensionDifferent ofFileMustExist ofHideReadOnly ofNoChangeDir ofNoDereferenceLinks ofNoLongNames ofNoNetworkButton ofNoReadOnlyReturn ofNoTestFileCreate ofNoValidate ofOldStyleDialog ofOverWritePrompt ofPathMustExist ofReadOnly ofShareAware ofShowHelp Significado Permite que o usurio selecione mais de um arquivo na caixa de dilogo. Gera uma mensagem de advertncia se o usurio tentar selecionar um arquivo inexistente e pergunta se quer criar um arquivo novo com o nome especificado. Esta tag muda em tempo de execuo sempre que o nome do arquivo selecionado tem uma extenso que difere de DefaultExt. Gera uma mensagem de erro se o usurio tenta selecionar um arquivo inexistente. Remove o checkbox de confirmao para somente leitura Depois que o usurio clica OK, reajusta o diretrio corrente para o que estava antes da caixa de dilogo ser aberta. Opo para reconhecer um arquivo de atalho de Windows, como um atalho ou como um arquivo qualquer. Mostra apenas arquivos com 8.3 caracteres. Remove o boto de Rede da caixa de dilogo. Gera uma mensagem de erro se o usurio tenta selecionar um arquivo somente de leitura. Desabilita o teste de proteo de arquivo em rede e disco inacessveis. S se aplica quando o usurio tenta salvar um arquivo em um diretrio de rede compartilhado. Permite seleo de nomes de arquivo com caracteres invlidos. Cria o estilo do Windows 3.1 para caixa de dilogo. Gera uma mensagem de advertncia se o usurio tentar selecionar um nome de arquivo que j est em uso e pergunta se quer sobrescrever o arquivo existente. (Use com TsaveDialog e TSavePictureDialog.) Gera uma mensagem de erro se o usurio tentar selecionar um nome de rquivo que inexistente. Seleciona como padro o ComboBox habilitado pela opo ofHideReadOnly. Ignora erros compartilhados e permite selecionar arquivos at mesmo quando acontecem violaes de compartilhando. Exibies um boto de Ajuda na caixa de dilogo.

OBS: Todas as opes so marcadas como falso.


Principais Eventos Evento OnClose OnShow OnFolderChange OnSelectionChange Descrio Ocorre quando a caixa de dilogo encerrada. Ocorre quando a caixa de dilogo iniciada. Ocorre quando um diretrio aberto ou fechado na caixa de dilogo. Ocorre quando nomes de arquivo exibidos no dilogo mudado, isto , o evento de OnSelectionChange acontece quando o usurio faz algo que mude a lista exibida no dilogo. Isto pode incluir: selecionando um filtro novo, selecionando um diretrio novo, ou criando uma pasta nova. Ocorre acontece quando o usurio seleciona um filtro novo de arquivo no ComboBox de Tipo na caixa de dilogo.

OnTypeChange

Principais Mtodos Mtodos Execute Descrio Abre a caixa de dilogo do OpenDialog e devolve true quando o usurio seleciona um arquivo dar um

80

CEFET-UNED Prof. Mrio Andr

Clique para abrir o arquivo. Se o usurio clicar Cancele retorna False.

ColorDialog
O Componente TColorDialog exibe uma caixa de dilogo padro do Windows para selecionar cores. A caixa de dilogo no aparece at que seja executado o mtodo Execute. Quando o usurio seleciona uma cor e clica o OK, a caixa de dilogo fecha e a cor selecionada armazenada na propriedade de Cor.

Principais Propriedades Propriedade Color CustomColors Descrio Retorna a cor selecionada. A cor padro clBlack. Quando o usurio seleciona uma cor na caixa de dilogo e clica o OK, a cor selecionada se torna o valor da propriedade de Cor. Determina quais cores personalizada iniciam na caixa de dilogo. Cada cor personalizada representada com uma string na forma ColorX=HexValue. Por exemplo, a seguinte string determina a primeira cor personalizada: ColorA=808022 Pode personalizar at 16 cores (ColorA at ColorP). Define caractersticas da caixa de dilogo. Na tabela abaixo esto discriminadas todas as opes.

Options

Opes Valor cdFullOpen cdPreventFullOpen cdShowHelp cdSolidColor cdAnyColor Significado Exibe as opes de personalizar cores quando a caixa de dilogo e aberta. Desabilita o boto que Define a personalizao de cores na caixa de dilogo, de forma que o usurio no pode definir cores novas. Adiciona um boto de Ajuda na caixa de dilogo. Direciona o Windows a usar a cor slida mais prxima da cor escolhido. Permite que o usurio selecione cores no-slidas.

OBS: Todas as opes so marcadas como falso.


Principais Eventos Evento OnClose OnShow Descrio Ocorre quando a caixa de dilogo encerrada. Ocorre quando a caixa de dilogo iniciada.

Principais Mtodos Mtodos Execute Descrio Abre a caixa de dilogo do OpenDialog e devolve true quando o usurio seleciona um arquivo dar um Clique para abrir o arquivo. Se o usurio clicar Cancele retorna False.

81

CEFET-UNED Prof. Mrio Andr

PrintDialog
O Componente TPrintDialog exibe uma caixa de dilogo padro do Windows para enviar trabalhos para uma impressora. O caixa de dilogo de impresso modal e no aparece at que seja chamada pelo mtodo Execute.

Principais Propriedades Propriedade Collate Copies FromPage MaxPage Descrio Indica se o Checkbox Collate na caixa de dialogo est selecionada. Indica as cpias de nmero selecionadas na caixa dilogo de Impresso. Indica a pgina na qual o trabalho de impresso vai comear. Determina o maior nmero de pginas que usurio pode imprimir. Se o usurio tenta entrar com um nmero maior que MaxPage, uma mensagem de erro aparece. OBS: O usurio s pode especificar o nmero de pgina se a opo poPageNums estiver em True. Determina o menor nmero de pginas que usurio pode imprimir. Inverso do anterior. Define caractersticas da caixa de dilogo. Na tabela abaixo esto discriminadas todas as opes. Define qual o intervalo de impresso ficar selecionado como padro na caixa de dilogo. Podem assumir trs valores: prAllPages ( O RadioButton Todos fica selecionado), prSelection (O RadioButton Seleo fica selecionado), prPageNums (O RadioButton Pginas fica selecionado). Seleciona o CheckBox impresso para arquivo na caixa de dilogo como padro. Indica a pgina na qual o trabalho de impresso termina.

MinPage Options PrintRange

PrintToFile ToPage

Opes Valor PoDisablePrintToFile PoHelp PoPageNums PoPrintToFile PoSelection PoWarning Significado Desabilita (fica cinzento) o CheckBox Imp. em arquivo. (Aplicvel somente a opo poPrintToFile for verdadeira). Exibe um boto de Ajuda na caixa de dilogo. Pode no aparecer em algumas verses do Windows 95. Habilita o RadioButtom que permite que usurio especifique um intervalo de pginas. Exibe o CheckBox Imp em arquivo na caixa no dilogo. Habilita o RadioButtom que permite que usurio especifique imprimir uma seleo. Gera uma mensagem de advertncia se o usurio tentar enviar um trabalho a uma impressora desinstalada.

OBS: Todas as opes so marcadas como falso.


Principais Eventos Evento OnClose OnShow Descrio Ocorre quando a caixa de dilogo encerrada. Ocorre quando a caixa de dilogo iniciada.

82

CEFET-UNED Prof. Mrio Andr

Principais Mtodos Mtodos Execute Descrio Abre a caixa de dilogo do OpenDialog e devolve true quando o usurio seleciona um arquivo dar um Clique para abrir o arquivo. Se o usurio clicar Cancele retorna False.

UM POUCO MAIS SOBRE COMPONENTES (VCL)


Objeto Timer (Temporizador)
Paleta System Importncia: Permite a execuo de rotinas em loop, em um intervalo pr-definido.

Propriedades
Enabled Interval Permite ligar o timer, ou seja, ele entra em um loop executando o evento OnTimer at que seja atribudo falso ou terminada a aplicao. Define em milisegundos o intevalo de repetio do evento OnTimer.

Objeto FileListBox (Caixa de listagem de arquivos)


Paleta Win 3.1 Importncia: Permite determinado diretrio. listar arquivos de

Propriedades
FileEdit FileName Mask Define uma caixa de edio (TEdit) que exibir o arquivo atualmente selecionado. Define o nome do arquivo selecionado. Vlido em tempo de execuo. Define mscaras de filtro (separadas por ponto e vrgula) para a exibio dos arquivos.

Objeto DirectoryListBox (Caixa de listagem de diretrios)

83

CEFET-UNED Prof. Mrio Andr

Paleta: Win 3.1 Importncia: Permite listar os diretrios do drive desejado.

Propriedades
DirLabel FileList Permite exibir o diretrio corrente com a propriedade Caption de um componente do tipo TLabel. Permite a conexo com um componente TFileListBox.

Objeto - DriveComboBox (Caixa de listagem de drives)


Paleta: Win 3.1 Importncia: Permite listar disponveis no computador. os drives

Propriedades
DirList Permite a conexo com um componente TDirectoryListBox.

Objeto FilterComboBox (Caixa de listagem de filtros)


Paleta: Win 3.1 Importncia: Permite estabelecer filtros para visualizao de arquivos.

Propriedades
FileList Filter Permite a conexo com um componente TFileListBox. Permite definir as mscaras de filtro de arquivo a serem exibidas.

Gauge

84

CEFET-UNED Prof. Mrio Andr

Paleta: Samples Utilizado para dar idia progresso na execuo de uma tarefa.
Importncia:

do

Propriedades
MinValue MaxValue Progress BackColor ForeColor Kind ShowText

Significado
Valor mnimo Valor mximo Valor atual Cor da rea no preenchida Cor da rea preenchida Tipo da figura (barra horizontal ou vertical, crculo, etc) Define se o valor em percentagem ser exibido

TrackBar
Paleta: Win32 Importncia: Componente utilizado para a seleo de valores inteiros dentro de uma faixa

Propriedades
Orientation Min Max Position TickStyle TickMarks PageSize LineSize SelStart

Significado
Orientao vertical ou horizontal Valor mnimo Valor mximo Posio corrente Estilo de exibio das marcaes Aparncia do indicador Determina o incremento que deve ser dado quando as teclas PgUp e PGDn forem pressionadas Determina o incremento que deve ser dado quando as setas forem pressionadas Posio de incio do preenchimento

85

CEFET-UNED Prof. Mrio Andr

SelEnd

Posio de trmino do preenchimento

CheckListBox Paleta: Additional


Importncia: Possui toda a funcionalidade do ListBox exibindo ao lado do item uma CheckBox. Este componente bastante til quando queremos exibir uma lista extensa de CheckBoxs e o espao para faz-lo escasso. Muito encontrado em programas de SetUp.

Propriedades
Checked[n] State[n] AllowGrayed

Significado
Retorna true se o item n estiver selecionado Retorna o estado do item n : [cvUnchecked, cbChecked, cbGrayed] Permite ou no a existncia de itens com estado indeterminado. Default = False

Eventos
OnClickChecked

Descrio
Quando um item marcado ou desmarcado

ListView (Win32) Paleta: Additional


Importncia: Componente que permite exibir de vrias maneiras uma lista de itens.

Propriedades
ViewStyle LargeImages SmallImages Items Columns ShowColumnHeaders ColumnClick

Significado
Determina se os itens devem ser apresentados em colunas com cabealhos e sub-itens, verticalmente ou horizontalmente, com cones grandes ou pequenos Lista de Imagens (TImagesList) contendo a bitmaps a serem exibidos e somente usada quando a propriedade ViewStyle vsIcon Lista de Imagens (TImagesList) contendo a bitmaps a serem exibidos e somente usada quando a propriedade ViewStyle vsSmallIcon Items a serem exibidos Cabealhos das colunas da Lista Exibe os cabealhos das colunas Indica se os cabealhos das colunas tero a aparncia de botes

86

CEFET-UNED Prof. Mrio Andr

IconOptions

SortedType

Selected

Opes de exibio dos cones quando ViewStyle for vsIcon ou vsSmallIcons Arrangement alinhado no topo ou esquerda do ListView AutoArrange os cones so alinhados automaticamente WrapText a propriedade caption ser quebrada nsNone no ordenado nsData os iten so ordenados dados so alterados nsText os itens so ordenados quando o Caption alterada. nsBoth a ordenao e feita em ambos os casos Item selecionado. Podemos acessar o contedo selecionado atravs de Select.Captiont;

Pode ser utilizado com o Imagelist

ImageList
Paleta: Win32 Importncia: O componente ImageList permite que trabalhemos com listas de imagens em bitmap e a apresenta quando solicitado, sendo um componente no visual.

Ele extremamente til, mas quase todo a sua operao depende de outros componentes. Por exemplo, as diversas imagens que aparecem em componentes de visualizao em lista ou em rvore ou numa ToolBar esto em listas de imagens.

Para se definir a lista de imagens devemos selecionar o componente e emitirmos um duplo clique para que seja exibido o Editor da lista de imagens ou usarmos o boto direito e selecionarmos a opo ImageList editor, que apresenta o seguinte diologo: A opo Add utilizada para acrescentar uma imagem na lista A opo Delete remove a imagem selecionada da lista A opo Clear limpa toda a lista Se a imagem estiver armazenada, uma figura habilitada e outra desabilitada quando da incluso na lista, o Editor pergunta, caixa abaixo, se deseja a separao. Observe que a imagem de ndice 0 e 1, foram seperadas e a de ndice 2 no.
87

CEFET-UNED Prof. Mrio Andr

A opo Crop faz com a imagem Habilitada/Desabilitada fique junta quando se responde No na caixa acima. A opo Strech faz com a imagem Habilitada/Desabilitada fique separada quando se responde No na caixa acima. Os bitmaps da lista so sempre retangulares, mesmo que contenham imagens em formas irregulares. A lista de imagem tem o recurso de tratar o fundo como se fosse transparente. Se voc definir a propriedade bkColor de uma lista com uma cor especfica, voc desativa o recurso de desenho transparente. Como exemplo do TreeView, visualizao de dados em rvores, temos o Explorer que exibe a estrutura hierrquica dos diretrios de um disco, com um pequeno cone esquerda para diferenciar discos rgidos de diretrios, estes de drive e CD e assim por diante. O componente de visualizao em rvore pode representar qualquer tipo de dados que possua um arranjo hierrquico, como um organograma de uma empresa.

Propriedades

Significado

88

CEFET-UNED Prof. Mrio Andr

Images StateImages Items

Lista de Imagens que contm os bitmaps que representam os prprios cones, como as imagens dos discos no Explorer Lista de Imagens especiais que indicam que um item encontra-se num estado especfico. Estado este que o programador define. Geralmente atravs de um ImageList e Caixa de Edio StateIndex do TreeView Items Editor. Permite a edio dos ns da rvore. Possui um conjunto de mtodos como Add, AddChild, AddFirst que tambm permite a incluso de ns na rvore. Cada n considerado um objeto do tipo TTreeNode. As principais propriedades dos ns so: ImageIndex informa qual imagem da lista de imagens representa o n. SelectIndex qual imagem da lista ser exibida se o n for selecionado. StateIndex da mesma forma, um ndice da StateImages. Se for <> -1, a imagem ser exibida esquerda da imagem normal.

ShowButtons ShowLines ShowRoot ReadOnly Eventos OnEditing OnEdited

Default = True, exibe os botes + ou para expandir/fechar ramos Default = True, exibe as linhas conectando os ns. Default = True, exibe o n da raiz Default = False, possibilita a edio dos ramos da rvore Significado Se ReadOnly = False, ocorre quando o usurio edita o ramo da rvore Ocorre quando o usurio termina a edio

Animate
Paleta: Win32 Importncia: Componente capaz de exibir um AVI, o qual representa um formato de arquivo multimdia com imagens e sons, mas este componente apenas exibe as imagens.

Propriedades Active AutoSize Center FileName FrameCount Repetitions

Significado Indica se a animao esta sendo exibida ou no Ajusta automaticamente o tamanho do componente ao tamanho da imagem Centraliza a animao Nome do arquivo AVi Nmero de Frames da animao Nmero de repeties quando a animao for executada. O valor zero indica repeties indefinidas

DateTimePicket

89

CEFET-UNED Prof. Mrio Andr

Paleta: Win32
Importncia: Componente que permite a seleo visual de datas ou horas

Propriedades Time Date DateMode DateFormat Kind ShowCheckbox Check

Significado Hora selecionada Data Selecionada A forma como a data poder ser selecionada [dmComboBox, dmUpDown] Formato da Data [dfShort, dfLong] Seleciona o componente para Data ou Hora [dtkDate, dtkTime] Exibe um CheckBox Indica se o CheckBox esta selecionado

90

CEFET-UNED Prof. Mrio Andr

Apndice A - A Linguagem Object Pascal


Caractersticas
Object Pascal uma linguagem orientada a objetos no pura, mas hbrida, por possuir caractersticas de programao no s visual mas tambm escrita. Para os programadores que j conhecem tcnicas de estruturas de programao como o C, Basic, Pascal entre outras linguagens, a Object Pascal providncia uma migrao de forma natural oferecendo um produto de maior complexidade. Ela fora a voc executar passos lgicos, isto torna mais fcil o desenvolvimento no ambiente Windows de aplicaes livres ou que utilizam banco de dados cliente/servidor e possui todo o poder de um cdigo totalmente compilvel. Alm disso possibilita a criao e a reutilizao (vantagem de re-uso to sonhado com a OO) de objetos e bibliotecas dinmicas (DLL - Dymanic Link Libraries). Object Pascal contm todo o conceito da OO, incluindo encapsulamento, herana e polimorfismo. Algumas extenses foram includas para facilitar o uso de conceitos como propriedades particulares e pblicas, e tipos de informaes em modo run-time, manuseamento de excees, e referncias de classes.

EXPRESSES LGICAS
So expresses que retornam valor booleano (falso ou verdadeiro).
Operador not and or xor Operao Negao E lgico OU lgico OU EXCLUSIVO lgico

O operador not unrio, por exemplo: if not (X > Z) then Devemos usar parnteses ao compararmos expresses lgicas, por exemplo:
if (X > Z) or (W > Y) then

COMANDO IF O comando condicional if pode ser composto de uma ou mais condies de processamento, por exemplo: if (A > B) then
B := B + 1; // ou INC(B);

if (A > B) then

B := B + 1 else A := A - 1; // ou DEC(A);

91

CEFET-UNED Prof. Mrio Andr

if (A > B) then
begin B := X := end else begin A := Y := end; B + 1; B + A;

A - 1; Y + B;

No ltimo exemplo para representar um bloco de comandos em caso verdadeiro ou falso, utiliza-se dos delimitadores begin e end. O comando if-then-else considerado como nico, portanto, no h ponto e vrgula (;)antes da palavra reservada else.

COMANDO CASE
O comando case..of oferece uma alternativa para comandos if-then-else com um grande nmero de testes. Por exemplo:
case Key of A..z: Label1.Caption := Letras; 0..9: Label1.Caption := Nmeros; +, -, *, /: Label1.Caption := Operador else Label1.Caption := Caracter especial; end; //fim do case

COMANDO REPEAT
O comando repeat..until uma opo para estruturas de repetio. A grande diferena com o comando while o fato do comando repeat ser executado pelo menos uma vez.
repeat X := X + 1; INC(Z,3); //equivale a Z := Z + 3; DEC(AUX,2); until X >= 200;

COMANDO WHILE
O comando while..do tambm permite a construo de estruturas de repetio, com diferena de no executar o lao no incio do teste lgico.
while X <= 200 do begin X := X + 1; INC(Z,3); DEC(AUX,2);

92

CEFET-UNED Prof. Mrio Andr

end;

COMANDO FOR
O comando for..do estabelece uma estrutura de repetio considerando um controle inicial e final. Pode ser construdo de maneira crescente ou decrescente.
for i:=0 to 500 do Label1.Caption := IntToStr(i); for i:=500 downto 100 do begin Label1.Caption := IntToStr(i); Edit1.Caption := IntToStr(i); end;

COMANDO BREAK
O comando break usado para alterar o fluxo normal de comandos de repetio, o controle desviado para o comando seguinte ao comando repetitivo.
frase := Edit1.Text; for i:=1 to length(frase) do begin if frase[I] = 'A' then break; aux := aux + frase[I]; end; Label1.caption := aux; //Label1 recebe o conteudo de frase at a letra A

COMANDO WITH
O comando with..do usado para abreviar a referncia a campos de registro, ou a mtodos, e propriedades de um objeto.
begin Form1.Caption := Senac; Form1.Color := ClBlue; Form1.Top := 95; end; //Equivalente : with Form1 do begin Caption := Senac; Color := ClBlue; Top := 95; end;

93

CEFET-UNED Prof. Mrio Andr

Apndice B - DICAS
CRIAR UM HOTLINK
Podemos criar um link para a Internet dentro do Delphi atravs da funo ShellExecute. Supondo que a propriedade Caption de um label seja um endereo web vlido (http://www.fulanodetal.com.br) podemos inserir em seu evento OnClick o seguinte cdigo:
ShellExecute(Handle, 'open', pchar(Label1.Caption), nil, '',SW_SHOWNORMAL);

necessrio incluir a biblioteca ShellAPI na clusula uses da Inteface.

ENVIAR UM MAIL
Podemos utilizar a funo ShellExecute para abrir o programa de mail do usurio e preparar seu envio.
ShellExecute(Handle, ,SW_SHOWNORMAL); open, mailto:fulano@provedor.com.br, nil,

Caso queira colocar um subject padro na construo do e-mail utilize a palavra subject da seguinte forma:
ShellExecute(Handle, open, mailto:fulano@provedor.com.br subject=Pergunta, nil, ,SW_SHOWNORMAL); ?

necessrio incluir a biblioteca ShellAPI na clusula uses da Inteface.

EXECUTANDO UM PROGRAMA DE ACORDO COM A EXTENSO DE UM ARQUIVO


ShellExecute um funo API comparada a um canivete suio, vamos utiliz-la novamente para chamar um programa atravs da extenso do arquivo passado como parmetro. Os parmetros de ShellExecute so 6: Um manipulador de janela, que o pai do processo disparado. Uma ao a executar, que pode ser open, para abrir, print, para imprimir, ou explore, para abrir uma janela do Explorer no diretrio desejado. Um ponteiro (tipo Pchar em Delphi) para o nome do programa ou diretrio. Parmetros para a aplicao. Diretrio inicial. Modo de abertura do programa Exemplo:
ShellExecute(Handle, open, exemplo.doc, nil, nil, SW_SHOWNORMAL);

necessrio incluir a biblioteca ShellAPI na clusula uses da Inteface.


94

CEFET-UNED Prof. Mrio Andr

DATAS
As datas so um tipo de dados TDateTime, internamente so armazenadas como nmeros de ponto flutuante (Double). A parte inteira indica a data, em nmero de dias, contados a partir de 30/12/1899 e a fracionria, as horas. Pelo fato de serem armazenadas como Double, pode-se subtrair, somar e estabelecer comparaes. Por exemplo:
var DataIni, DataFim : TDateTime; Dif : Single; begin Dif := DataFim DataIni; //diferena em dias entre as datas DataIni := DataIni+10; //acrescenta + 10 dias na data end;

Para saber a hora de determinada data, multiplica-se a parte fracionria por 24:
Frac(DataIni) * 24;

Podemos ainda comparar as datas com os operadores < e >. Caso no seja necessrio a comparao com a hora, basta converter a data para um inteiro e efetuar a comparao:
if Trunc(Data1) < Trunc(Data2) then

A formatao de data pode ser feita atravs da funo FormatDateTime.


function string; FormatDateTime(const Format: string;

DateTime:

TDateTime):

Exemplo:

Label1.Caption := FormatDateTime('dddd, d "de" mmmm "de" yyyy', date);

SAIR DE UMA APLICAO


O Delphi fornece diferentes mtodos para sair de uma aplicao. O ideal utilizar o mtodo Porm, h casos em que Close no atenderia necessidade do desenvolvedor, nestes casos pode-se chamar Halt ou Application.Terminate. Halt um procedimento do Pascal e provoca o trmino da aplicao, no se importando com arquivos abertos. J o mtodo Terminate do objeto Application obriga o fechamento de todos os arquivos abertos e a destruio de todas a forms criadas.
Close.

REDUZINDO TESTES IF
A expresso:
if A = 10 then B := True else

95

CEFET-UNED Prof. Mrio Andr

B := False;

Pode ser reduzida a apenas uma linha:


B := A = 10;

A = 10 uma operao boleana, que retorna True se A igual a 10 e False caso contrrio. Neste caso estamos atribuindo varivel B o resultado da comparao, TRUE ou FALSE.

HINTS COM DUAS OU MAIS LINHAS


A object inspector permite Hint com apenas uma linha. Para gerar Hints com mais linhas pode-se em tempo de execuo configurar a propriedade Hint da seguinte forma:
Edit1.Hint := Primeira linha do hint#13segunda linha do hint;

Pode-se tambm em tempo de projeto clicar na form com o boto direito e escolher a opo View as Text, procurar o objeto e a hint desejada e alter-la:
Hint := Primeira linha do hint#13segunda linha do hint;

Para voltar ao Form clique com o boto direito e escolha View as Form.

SUBSTITUIR A TECLA TAB POR ENTER NA MUDANA DE FOCO


Setar a propriedade KeyPreview da Form para True Setar a propriedade Default de todos os botes da Form para False Criar um evento OnKeyPress para a Form como este:

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if (Key = #13) and not (Activecontrol is TMemo) then begin //desabilita o processamento posterior da tecla key := #0; //simula o envio da tecla tab Perform(WM_NEXTDLGCTL,0,0); end; end;

CONES
O Delphi possui um conjunto de cones e imagens em uma pasta padro:
C:\Arquivos de programas\Arquivos comuns\Borland Shared\Images

96

CEFET-UNED Prof. Mrio Andr

EXECUTAR UM PROGRAMA
Para executar um programa use a API WinExec.
WinExec(calc.exe, SW_SHOWNORMAL);

LINKS
Alguns links interessantes:

Nacionais
http://www.clubedelphi.com.br/ http://www.delphibrasil.eti.br/ http://clubedodelphi.com.br http://www.inprise.com.br/

DISPARANDO SONS DO SISTEMA (MULTIMDIA)


Para utilizar os sons do sistema, utilize a funo PlaySound.
PlaySound(pChar('SYSTEMSTART'),0,SND_ASYNC);

Outros sons: SYSTEMSTART SYSTEMEXIT SYSTEMHAND SYSTEMASTERISK SYSTEMQUESTION SYSTEMEXCLAMATION SYSTEMWELCOME SYSTEMDEFAULT necessrio incluir as biblioteca mmsystem na clusula uses da Inteface

GARANTINDO UMA INSTNCIA DO APLICATIVO


Para que seu aplicativo no seja executado vrias vezes, utilize o seguinte cdigo no arquivo de projeto (DPR). A funo FindWindow procura se h outra tela da classe passada como parmetro, se houver, traz para frente e no cria a aplicao novamente.
program Project1; uses Forms,Windows,

97

CEFET-UNED Prof. Mrio Andr

Unit1 in 'Unit1.pas' {Form1}; {$R *.RES} begin if FindWindow('TForm1','Form1') <> 0 then SetForegroundWindow(FindWindow('TForm1','Form1')) else begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end; end.

necessrio incluir a biblioteca windows na clusula uses do arquivo DPR.

PERMITIR APENAS NMEROS EM UM TEDIT


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if ((Key in ['0'..'9'] = False) and (Word(Key) <> VK_BACK)) then Key := #0; end;

98

CEFET-UNED Prof. Mrio Andr

Apndice C - INTRODUO ORIENTAO A OBJETOS


Mais do que popular, a orientao a objetos uma metodologia que ganhou espao no mercado, e ao que tudo indica, veio para ficar. Vamos abordar alguns conceitos importantes para o inicio do estudo da ferramenta Delphi, seria importante que na sua vida profissional voc possa aprofundar-se mais nestes e outros conceitos que pelo enfoque, no sero abordados. Uma referencia bibliogrfica no final da apostila ir ajuda-lo(a) a encontrar mais informaes a respeito. Independente da ferramenta (Delphi, C++Builder, PowerBuilder, entre outras), a orientao a objetos uma teoria da dcada de 70 que veio ser implementada com grande destaque nas ferramentas visuais. Essa tcnica baseada no conceito de classes. Classe um tipo abstrado de dados, ou seja, um novo tipo criado pelo desenvolvedor que pode conter mtodos e propriedades. como compararmos um tipo classe com um tipo record. Com o tipo classe possvel implementar um conjunto de recursos OO 4, sendo um dos principais chamado herana, que uma poderosa maneira de reaproveitamento de cdigo. Considerando simplesmente a ttulo de exemplo vamos criar a classe base TSerVivo com as seguintes caractersticas e tipos de dados: Tamanho : Single Cor : String Forma(Obeso, Magro) : String e que pode possuir as seguintes aes: Alimentar Respirar Um exemplo de herana seria criar as classes TSerHumano e TAnimais como descendente de TSerVivo, desta forma, a classe descendente herda todas as caractersticas e aes criadas na classe ascendente podendo acrescentar particularidades sua estrutura, exemplo:
TSerHumano Tamanho : Single Cor : String Forma : String Vestimenta : String CorCabelo: String Sexo : Char Alimentar Respirar Falar Caminhar

TAnimais Tamanho : Single Cor : String Forma : String NPatas : Integer Cauda : Boolean Alimentar Respirar EmitirSom

99

CEFET-UNED Prof. Mrio Andr

Os objetos so variveis do tipo classe, onde as caractersticas so consideradas propriedades, e as rotinas chamadas pelos objetos so denominadas mtodos. As aes disparadas pelo usurio ou pelo sistema no componente sero chamados eventos. Eles so de extrema importncia pois definem quando um conjunto de comandos ser executado. Ainda exemplificando, podemos utilizar as propriedades atribuindo valores de acordo com o tipo de dados definido (no estamos considerando a sintaxe completa em Object Pascal) e utilizar os mtodos apenas chamando o nome da rotina.
Edileumar,Jorgina Cachorro : TSerHumano; : TAnimais;

begin Edileumar.Tamanho := 1.70; Edileumar.Forma := Magro; Edileumar.Sexo := M; Jorgina.Tamanho := 1.60; Jorgina.Sexo := F; Jorgina.CorCabelo := Castanhos; Edileumar.Falar; Jorgina.Caminhar; Cachorro.Tamanho := 0.60; Cachorro.Cauda := True; Cachorro.Alimentar; end;

Observe que as propriedades recebem valores e os mtodos executam rotinas (procedimentos ou funes) sobre o objeto que o invocou. Alguns mtodos podem receber parmetros. O que acontece no Delphi que existe uma gigantesca estrutura de classes onde TObject a classe base das demais classes. Apesar de no ser necessrio manipular este recurso diretamente, importante saber seu funcionamento bsico. Voc ver as declaraes de classe dentro do Delphi como abaixo, um formulrio com dois componentes (objetos) button e um componente edit ser declarado assim:
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; private { Private declarations } public { Public declarations } end;

Essa introduo vem apenas ilustrar os principais conceitos: Propriedades, eventos e mtodos, sendo amplamente utilizados durante o curso. A herana um recurso importante implementado na OO, no sendo o nico, obviamente. Polimorfismo, encapsulamento entre outros, so conceitos que a principio voc no precisa saber para manipular a ferramenta (Delphi), mas em um futuro prximo ser muito importante.

100

CEFET-UNED Prof. Mrio Andr

REFERNCIA BIBLIOGRFICA
Dominando o Delphi 7 A Bblia Marco Cant Makron Books, 2000 Programao Orientada a Objetos usando o Delphi 3 Faial Farhat de Carvalho Editora rika Delphi4 Curso Completo Marcelo Leo Axcel Books do Brasil Delphi4 Senac Adilson Resende Editora SENAC Belo Horizonte 365 Dicas de Delphi Bruno Sonnino Makron Books

101