Download pdf - Minha Apostila de Delphi

Transcript

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE SERGIPE COORDENADORIA DE INFORMTICA

PROGRAMAO INICIAL - DELPHI Prof. Mrio AndrSERGIPE BRASIL

CEFET-UNED Prof. Mrio Andr

INDICEParadigmas 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 ......................................................................................................................... 19 COMPONENTES .................................................................................................................................................... 27 Propriedades ............................................................................................................................................................ 29 Mtodos................................................................................................................................................................... 30 Mtodos................................................................................................................................................................... 30 Propriedades ............................................................................................................................................................ 31 Propriedades ............................................................................................................................................................ 32 Crie um formulrio conforme lay-out abaixo .......................................................................................................... 33 A opo Apaga Tudo s poder ocorrer aps confirmao do usurio ................................................................... 33 Propriedades ............................................................................................................................................................ 33 Mtodos................................................................................................................................................................... 33 Propriedades ............................................................................................................................................................ 34 Propriedades ............................................................................................................................................................ 35 Mtodos................................................................................................................................................................... 36 Propriedades ............................................................................................................................................................ 36 Mtodos................................................................................................................................................................... 36 Propriedades ............................................................................................................................................................ 38 Mtodos................................................................................................................................................................... 38 Propriedades ............................................................................................................................................................ 38 CHAMADA DE FORMS ........................................................................................................................................ 52 COMPONENTES (VCL) ......................................................................................................................................... 53 TRATAMENTO DE EXCEES ........................................................................................................................ 66 UM POUCO MAIS SOBRE COMPONENTES (VCL) ..................................................................................... 72 Opes................................................................................................................................................................. 73 Valor ................................................................................................................................................................... 73 Significado .......................................................................................................................................................... 73 Principais Eventos ............................................................................................................................................... 73 Evento ................................................................................................................................................................. 73 Descrio............................................................................................................................................................. 73 Principais Mtodos .............................................................................................................................................. 74 Mtodos............................................................................................................................................................... 74 Descrio............................................................................................................................................................. 74 Principais Propriedades ....................................................................................................................................... 74 Propriedade ......................................................................................................................................................... 74 Descrio............................................................................................................................................................. 74 Opes................................................................................................................................................................. 74 Valor ................................................................................................................................................................... 74 Significado .......................................................................................................................................................... 74 Principais Eventos ............................................................................................................................................... 74 Evento ................................................................................................................................................................. 74 Descrio............................................................................................................................................................. 74 Principais Mtodos .............................................................................................................................................. 75 Mtodos............................................................................................................................................................... 75 Descrio............................................................................................................................................................. 75 Principais Propriedades ....................................................................................................................................... 75 Propriedade ......................................................................................................................................................... 75 Descrio............................................................................................................................................................. 75 Opes................................................................................................................................................................. 75

2

CEFET-UNED Prof. Mrio Andr

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

3

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.

IntroduoAntes 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 ProcedimentalA 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

4

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 eventosProgram Verif_Nome; Var Nome : String; Begin Write ('Digite um nome: '); Readln (Nome); If Nome = 'Ze Silva' then

5

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

6

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 conseguiu esconder do programador a maior parte da complexidade da programao nestes ambientes.

7

CEFET-UNED Prof. Mrio Andr

IDEO 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 DESIGNForm 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.

8

CEFET-UNED Prof. Mrio Andr

A BARRA DE MENU PRINCIPALComo 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 COMPONENTESAplicativos 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 INSPECTORUma 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. 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.Valor atual desta propriedade

Objeto atual selecionado

Propriedade

Algumas propriedades trazem opes diferenciadas para alterao. Por exemplo:

1

Componente ComboBox.

9

CEFET-UNED Prof. Mrio Andr

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 SimplesSo tipos String ou valores numricos definidos ao digitar um valor na frente da propriedade. Exemplo: Name, Caption, Height e Width entre outros.

Tipos EnumeradosSo 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.

10

CEFET-UNED Prof. Mrio Andr

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

Tipos com Editor de PropriedadesAs 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 EventosA 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 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.

OnClickOnDblClick OnEnter OnExit OnKeyPress

Observe a construo do procedimento criado pelo prprio Delphi:procedure TForm1.Button1Click(Sender: TObject);

beginend;

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

2 3

Manipulador de evento Manipulador de eventos.

11

CEFET-UNED Prof. Mrio Andr

Code Editor Name do form que define uma nova classe

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.

Podemos considerar tambm o seguinte fato: Tudo o que o Delphi escrever, problema dele. Agora, Tudo o que voc escrever problema seu.

12

CEFET-UNED Prof. Mrio Andr

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

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.

13

CEFET-UNED Prof. Mrio Andr

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:

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?

14

CEFET-UNED Prof. Mrio Andr

PROJETO EM DELPHIO 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 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.

.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

Arquivo de configurao com opes de Desenvolvimento projeto. Semelhante aos arquivos DOF.

.DOF

.DSK

Delphi Option File: um arquivo de texto 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

Desenvolvimento

Compilao: Ligao (linking)

.EXE

.~PA

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.

.TODO

15

CEFET-UNED Prof. Mrio Andr

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

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:Unit Unit1; Interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

16

CEFET-UNED Prof. Mrio Andr

Type Tform1 = class(Tform) procedure FormCreate(Sender: Tobject); private {Declaraes privativas} public {Declaraes pblicas} end; var Form1: Tform1; implementation {$R *.DFM} procedure TForm1.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. 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.

17

CEFET-UNED Prof. Mrio Andr

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 PROJETOO Delphi permite a configurao de vrios itens do sistema atravs do menu Project Options.

18

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.

Application 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)

CompilerEstas opes permitem especificar uma compilao personalizada, ou seja, cada projeto pode ser compilado com uma caracterstica.

Linker Estas opes incluem informaes para a depurao.

Directories/ConditionalsNesta guia pode-se configurar o diretrio de sada para os arquivos gerados pela aplicao.

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

19

CEFET-UNED Prof. Mrio Andr

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

A Lista de FormsA 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.

20

CEFET-UNED Prof. Mrio Andr

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 .

A Lista de JanelasA 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 .

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

21

CEFET-UNED Prof. Mrio Andr

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

22

CEFET-UNED Prof. Mrio Andr

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.

DiretriosVia 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

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:

23

CEFET-UNED Prof. Mrio Andr

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 SomaNum; end; end.

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.

24

CEFET-UNED Prof. Mrio Andr

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

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.

25

CEFET-UNED Prof. Mrio Andr

Opes de DepuraoO 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 SentinelasExistem 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 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).

A caixa de dilogo Watch Properties

26

CEFET-UNED Prof. Mrio Andr

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.

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

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

27

CEFET-UNED Prof. Mrio Andr

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

Principais MtodosMtodo BringToFront CanFocus Create Destroy Focused Free Hide SetFocus SendToBack Show 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

28

CEFET-UNED Prof. Mrio Andr

Clear

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.

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

BorderWidth Caption ClientHeight / ClientWidth Color Cursor DefaultMonitor Enabled Font FormStyle

Height HelpContext HelpFile Hint HorzScrollBar Icon KeyPreview Left Menu Name PopupMenu Position

29

CEFET-UNED Prof. Mrio Andr

ShowHint Tag Top VertScrollBar Visible Width WindowMenu WindowState

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.

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

PropriedadesAction Anchors Referencia uma ao definida em um objeto TActionList. Permite manter a posio relativa do objeto ao objeto parente quando este redimencionado. Associa o evento OnClick do objeto ao pressionamento da tecla Esc. Associa ao evento OnClick do objeto ao pressionamento da tecla Enter.

Cancel DefaultModalResult 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.

MtodosSetFocus Envia o foco do windows para o componente.

30

CEFET-UNED Prof. Mrio Andr

Objeto Edit (Caixa de edio)Paleta Standart Importncia: Um dos principais componentes para a entrada de dados do usurio do sistema.

PropriedadesAutoSelect 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

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

Exerccio Confeccione um formulrio conforme esquema abaixo:

Funcionalidade: 1. As caixas de edio e os rtulos s ficaro habilitados se Delphi for digitado na 1 caixa

31

CEFET-UNED Prof. Mrio Andr

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

PropriedadesAlignment 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. Define se o texto poder utilizar o retorno automtico em caso de ultrapassar a largura definida e se a propriedade AutoSize estiver falsa.

FocusControlLayout ShowAccelChar Transparent WordWrap

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

32

CEFET-UNED Prof. Mrio Andr

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

Propriedades LinesMaxLength 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.

MtodosLoadFromFile SaveToFile

33

CEFET-UNED Prof. Mrio Andr

Objeto CheckBox (Caixa de verificao)Paleta Standart Importncia: Permite verificar opes boolenas pr-definidas ou re-definidas pelo usurio.

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

CheckedState

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.

34

CEFET-UNED Prof. Mrio Andr

Objeto RadioButton (Boto de radio)Paleta Standart Importncia: Permite escolher entre um grupo, pelo menos uma opo.

PropriedadesDefine se o componente est ligado ou desligado.

Checked

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

35

CEFET-UNED Prof. Mrio Andr

PropriedadesDefine uma lista de Strings que aparece no componente.

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

MtodosClear 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)Paleta Standart Importncia: Permite o usurio entrar ou manipular uma lista de dados.

PropriedadesDefine uma lista de Strings que aparece no componente.

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

Text

MtodosClear 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 for teclado, a digitao realizada ser inserida na ComboBox. // Se teclou

36

CEFET-UNED Prof. Mrio Andr

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

37

CEFET-UNED Prof. Mrio Andr

PropriedadesDefine uma lista de Strings que aparece no componente.

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

Text

MtodosClear 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 GroupBox (Caixa de agrupamento)Paleta Standart Importncia: Permite agrupar componentes e estabelecer um ttulo na propriedade Caption.

Propriedades AlignCaption

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.

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

38

CEFET-UNED Prof. Mrio Andr

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

39

CEFET-UNED Prof. Mrio Andr

Objeto Panel (Painel)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.

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

40

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.

PropriedadesItems 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

41

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 . Voc tambm pode utilizar as teclas e 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.

42

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 + 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. ). 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

43

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

44

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 PropriedadesPropriedade 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 EventosEvento 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 MtodosMtodos SetParams Descrio Modifica os valores das propriedades Position, Min e Max de uma s vez

45

CEFET-UNED Prof. Mrio Andr

FUNES DE CONVERSO E MANIPULAOVamos 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.

46

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 FUNESProcedimentos 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 PROCEDIMENTOPodemos 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;

47

CEFET-UNED Prof. Mrio Andr

DECLARAO E ATIVAO DE FUNESA 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 DELPHISe 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 DILOGOPodemos utilizar alguns tipos de caixas de dilogo pr-definidas pelo Delphi facilitando em muito o desenvolvimento pela ferramenta:

48

CEFET-UNED Prof. Mrio Andr

ShowMessageA 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.);

MessageDlgA 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

49

CEFET-UNED Prof. Mrio Andr

Application.MessageBoxUma 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 ENTRADAPodemos obter dados do usurio atravs de caixas de dilogo pr-defindas.

InputBox

50

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.

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

51

CEFET-UNED Prof. Mrio Andr

ExemploVamos 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 FORMSUma 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

52

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 GlyphKind

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.

53

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.

PropriedadesCharCase 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 mscaraCaractere ! > < \ 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 entrad