Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
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
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
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
Aes
Sistema
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.
IDE
O ambiente de desenvolvimento do Delphi composto de vrias partes compondo um conjunto integrado de janelas que interagem entre si.
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.
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.
Propriedade
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
Tipo Set
Algumas propriedades podem conter mltiplos valores. Um exemplo a propriedade BorderIcons com o sinal + indicando subpropriedades.
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.
Manipulador de evento 11
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
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
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
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
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
Arquivos de bitmap, cone e cursor: arquivos padro do Windows usados para armazenar imagens de bitmap.
.CFG .DOF
Arquivo de configurao com opes de Desenvolvimento projeto. Semelhante aos arquivos DOF. Delphi Option File: um arquivo de texto Desenvolvimento
15
.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.
.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
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
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
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
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
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.
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
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
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_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
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
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
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.
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
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
27
28
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
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
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
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
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.
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
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.
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.
33
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.
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
WordWrap
Define se o texto poder utilizar o retorno automtico em caso de ultrapassar a largura definida e se a propriedade AutoSize estiver falsa.
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
36
37
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
38
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.
39
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.
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.
40
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.
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
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.
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
Propriedades Align
Caption
Pemite definir um alinhamento no objeto proprietrio. Define o texto informativo na parte superior do componente.
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
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.
44
Paleta Standart Importncia: Permite agrupar outros objetos e estabelecer um efeito visual nas aplicaes.
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
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
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
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
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
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
51
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);
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.
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
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.
CAIXAS DE DILOGO
Podemos utilizar alguns tipos de caixas de dilogo pr-definidas pelo Delphi facilitando em muito o desenvolvimento pela ferramenta:
53
ShowMessage
A caixa de dilogo ShowMessage declarada internamente pelo Delphi desta forma:
procedure ShowMessage(const Msg: string);
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
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
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
CAIXAS DE ENTRADA
Podemos obter dados do usurio atravs de caixas de dilogo pr-defindas.
InputBox
55
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;
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
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
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
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.
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.
59
/ ; _ <>
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
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
61
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.
62
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
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;
StringGrid (Additional)
64
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
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
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
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.
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.
67
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.
68
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.
Propriedades
Kind Progress Permite definir aparncias diferenciadas no componente. Define a posio corrente do controle no componente.
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.
69
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.
Propriedades
Date FirstDayOfWeek WeekNumbers Define a data selecionada no componente. Define qual o primeiro dia da semana. Permite numerar as semanas.
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
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.
3. Defina o cdigo abaixo no seu evento OnHint: procedure Tform1.ApplicationEvents1Hint (Sender : TObject); begin Statusbar1.Panels[0].Text := Application.Hint; end;
71
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.
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
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
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
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
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.
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
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
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;
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
79
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.
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
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.
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
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.
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.
82
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.
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.
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.
83
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.
Propriedades
DirList Permite a conexo com um componente TDirectoryListBox.
Propriedades
FileList Filter Permite a conexo com um componente TFileListBox. Permite definir as mscaras de filtro de arquivo a serem exibidas.
Gauge
84
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
SelEnd
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
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
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;
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
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
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.
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.
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
Paleta: Win32
Importncia: Componente que permite a seleo visual de datas ou horas
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
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
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
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
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);
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); ?
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
DateTime:
TDateTime):
Exemplo:
REDUZINDO TESTES IF
A expresso:
if A = 10 then B := True else
95
B := False;
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.
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.
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
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/
Outros sons: SYSTEMSTART SYSTEMEXIT SYSTEMHAND SYSTEMASTERISK SYSTEMQUESTION SYSTEMEXCLAMATION SYSTEMWELCOME SYSTEMDEFAULT necessrio incluir as biblioteca mmsystem na clusula uses da Inteface
97
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.
98
TAnimais Tamanho : Single Cor : String Forma : String NPatas : Integer Cauda : Boolean Alimentar Respirar EmitirSom
99
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
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