Você está na página 1de 50

Delphi XE

Guia de Componentes

Daniela Caio Andr Gomes


Jorge Kawamura
Roberto Scalco

2011

Sumrio
CAPTULO 1 AMBIENTE DELPHI...................................................................................................................... 4
1.
2.
3.
3.1.
3.2.
3.3.

EXECUTANDO O DELPHI XE ................................................................................................................................. 4


AMBIENTE DE DESENVOLVIMENTO DO DELPHI XE .................................................................................................... 5
MANIPULAO DE PROJETOS .............................................................................................................................. 8
CRIAR UM NOVO PROJETO .................................................................................................................................. 8
SALVAR UM PROJETO ......................................................................................................................................... 8
ABRIR UM NOVO PROJETO .................................................................................................................................. 9

CAPTULO 2 BIBLIOTECAS E FUNES .......................................................................................................... 10


1.
2.

CONVERSES: TEXTO NMERO ................................................................................................................... 10


FUNES MATEMTICAS ................................................................................................................................. 11

CAPTULO 3 COMPONENTES BSICOS ......................................................................................................... 12


1.
2.
3.
4.
5.
6.
7.
8.
9.
10.

FORM ........................................................................................................................................................... 12
BUTTON ........................................................................................................................................................ 13
EDIT ............................................................................................................................................................. 13
LABEL ........................................................................................................................................................... 14
MEMO ......................................................................................................................................................... 14
RADIOGROUP ................................................................................................................................................ 15
LISTBOX ........................................................................................................................................................ 16
STRINGGRID ................................................................................................................................................ 17
CHECKBOX .................................................................................................................................................... 19
CHECKLISTBOX ............................................................................................................................................... 19

CAPTULO 4 UM EXEMPLO DE RESOLUO DE PROBLEMA ......................................................................... 21


CAPTULO 5 OUTRAS FUNCIONALIDADES .................................................................................................... 26
1.
1.1.
1.2.
1.3.
1.4.
1.5.
2.
2.1.
3.
3.1.
3.2.
3.3.
4.
4.1.
4.2.
4.3.
4.4.
5.
5.1.
6.
6.1.
6.2.

COMPONENTES VISUAIS ................................................................................................................................... 26


COMBOBOX .................................................................................................................................................. 26
IMAGE .......................................................................................................................................................... 27
SPINEDIT....................................................................................................................................................... 28
PAGECONTROL ............................................................................................................................................... 28
CHART .......................................................................................................................................................... 30
MANIPULAO DE ARQUIVOS ........................................................................................................................... 35
OPENDIALOG ................................................................................................................................................. 35
MANIPULAO DE CORES ................................................................................................................................. 37
TCOLOR ........................................................................................................................................................ 37
COLORDIALOG ............................................................................................................................................... 37
SHAPE .......................................................................................................................................................... 38
MANIPULAO DE DATAS................................................................................................................................. 39
TDATETIME ................................................................................................................................................... 39
NOW............................................................................................................................................................ 40
DIFERENA ENTRE DOIS INSTANTES ..................................................................................................................... 40
DATETIMEPICKER ........................................................................................................................................... 41
NAVEGAO NA INTERNET................................................................................................................................ 42
WEBBROWSER ............................................................................................................................................... 43
IMPRESSO.................................................................................................................................................... 45
PRINT ........................................................................................................................................................... 45
RAVE REPORT ................................................................................................................................................ 45
Delphi XE Guia de Componentes

Captulo 1 Ambiente Delphi


Ambiente de programao voltado ao desenvolvimento de aplicaes para o sistema
operacional Windows. Dentre suas caractersticas destacam-se:
a)
b)
c)
d)
e)

programao visual;
RAD Rapid Application Development;
Pascal (Object Pascal);
programao orientada a objetos;
programao orientada a eventos.

1. Executando o Delphi XE
No Windows, clique sobre a pasta Embarcadero RAD Studio XE no menu iniciar e em seguida
no item Delphi XE.

A figura a seguir mostra o ambiente de desenvolvimento Delphi XE.

Delphi XE Guia de Componentes

2. Ambiente de desenvolvimento do Delphi XE


Na primeira parte do curso foi apresentado no ambiente Delphi XE um projeto do tipo
Console Application, na segunda parte do curso ser apresentado um projeto do tipo VCL
Forms Application Delphi. Para tal clique em File, depois New e em seguida selecione o
item VCL Forms Application Delphi.

Para confeco de um projeto VCL, o ambiente Delphi disponibiliza os seguintes elementos:


a) Barra Rpida (Speed Bar): permite executar as funes mais comuns do menu por
meio do mouse, como por exemplo: abrir projetos, salvar projetos, etc. Ao passar
com o mouse sobre seus botes, um texto explicativo apresentado.

b) Formulrio (Form): representa uma janela, que ser a janela principal de um


aplicativo desenvolvido no Delphi. Contm uma rea livre em seu interior, onde
sero colocados os componentes que o aplicativo ir necessitar.
Note que o formulrio pertence aba Design. Desta maneira, as ferramentas para a
confeco da aparncia do aplicativo somente so exibidas quando essa aba estiver
selecionada.

Delphi XE Guia de Componentes

c) Palheta de ferramentas (Tool Palette): possui um conjunto de componentes


organizados segundo a sua funo e que podem ser acessados com o mouse.

d) Editor de Cdigo: uma janela que apresenta um arquivo texto contendo o cdigo
fonte em Object Pascal referente ao Form. O nome do arquivo texto contendo cdigo
fonte no Delphi conhecido como Unit (Unidade).

Delphi XE Guia de Componentes

Para acessar o editor de cdigo selecione a aba Code.


e) Inspetor de Objetos (Object Inspector): Esta janela indica os valores das
propriedades dos objetos (componentes) e os eventos que sero utilizados em um
programa. Possui um ComboBox que permite selecionar cada componente utilizado
na aplicao e possui, tambm, uma lista de propriedades pertinentes a esse objeto,
bem como uma lista de eventos relacionadas ao objeto que est selecionado.

Delphi XE Guia de Componentes

Observao: Clicar com o boto direito do mouse em Properties no Object Inspector.


No item Arrange selecione by name para ordenar por nome as propriedades e
eventos do Object Inspector.

3. Manipulao de Projetos
Um projeto um conjunto de Forms e Units que o Delphi usa para gerar o programa final
executvel.
A seguir sero apresentados os processos, de maneira segura, para criar, abrir e salvar
projetos.

3.1. Criar um novo projeto


Para criar um novo projeto devemos nos certificar que no existe nenhum projeto aberto,
isto pode ser feito clicando no menu File, em seguida no item Close All. Aps esta verificao
clique novamente em File, depois New e em seguida selecione o item VCL Forms
Application Delphi for Win32 para criar um novo projeto.

3.2. Salvar um projeto


Para salvar um projeto no Delphi clique no menu File, em seguida Save All, o Delphi pedir
para salvar primeiro a unidade e depois o projeto. D um nome para a unidade, aperte o
boto Salvar e a seguir faa o mesmo com o projeto. O nome desses arquivos devem seguir
as regras para criao de nome de variveis.
Delphi XE Guia de Componentes

3.3. Abrir um novo projeto


Para abrir um novo projeto devemos nos certificar que no existe nenhum projeto aberto,
isto pode ser feito clicando no menu File, em seguida no item Close All. Depois disso clique
no menu File, em seguida Open.

Dentre os arquivos apresentados escolha o arquivo de projeto (.dpr).


Ateno! No abra o arquivo da unidade (.pas), pois esse possui apenas o cdigo fonte.
Delphi XE Guia de Componentes

10

Captulo 2 Bibliotecas e Funes


Esse captulo apresenta algumas funes e tipos de dados disponibilizados em bibliotecas
(units).

1. Converses: Texto Nmero


Quando desejamos ler uma informao digitada pelo usurio em algum componente do
formulrio, devemos analisar como a informao ser armazenada no aplicativo, ou seja,
devemos observar qual ser o tipo da varivel utilizada.
Todas as informaes do formulrio que so representadas por caracteres so valores do
tipo texto (string). Desta maneira, quando desejamos ler um valor numrico, devemos
converter o valor, escrito na forma de texto, para valores numricos. Alm disso, devemos
escolher como ser o formato do nmero, inteiro ou real (chamado nmero de ponto
flutuante, ou float).
a) funo que transforma um texto para um nmero inteiro: StrToInt;
b) funo que transforma um texto para um nmero real: StrToFloat.
Quando desejamos exibir um valor numrico em algum componente do formulrio,
devemos utilizar funes complementares para converter os valores numricos (inteiros ou
reais) para texto.
a) funo que transforma um nmero inteiro para um texto: IntToStr;
b) funo que transforma um nmero real para um texto: FloatToStr.
Veja no exemplo como ler e exibir valores em componentes do tipo Edit, considerando que
foram declaradas as variveis A: Integer, B: Real e C: String.
// Lendo valores
A := StrToInt(Edit1.Text);
B := StrToFloat(Edit2.Text);
C := Edit3.Text; // note que no fazemos a converso
// Exibindo valores
Edit4.Text := IntToStr(A);
Edit5.Text := FloatToStr(B);
Edit6.Text := C; // note que no fazemos a converso

Tambm possvel exibir um determinado nmero de casas decimais quando valores reais
forem apresentados nos componentes. Para tal, utilize a funo FloatToStrF que formata
o valor no momento da converso para texto. Essa funo possui quatro parmetros:
a)
b)
c)
d)

o valor que ser exibido;


o formato do nmero. Normalmente utilizamos a constante ffFixed;
a preciso, que representa o nmero de algarismos significativos;
a quantidade de casas aps o separador decimal.
Delphi XE Guia de Componentes

11

Considerando que o valor da varivel real x seja 2, veja como o valor pode ser exibido
alterando os parmetros.
Instruo
FloatToStrF(x,ffFixed,6,5)
FloatToStrF(x,ffFixed,5,5)
FloatToStrF(x,ffFixed,2,5)
FloatToStrF(x,ffFixed,6,4)
FloatToStrF(x,ffFixed,6,0)

Valor Exibido
1,41421
1,41420
1,40000
1,4142
1

Note que o parmetro da preciso deve ser maior do que o nmero de casas decimais para
que no haja alterao do valor.

2. Funes Matemticas
Algumas funes matemticas esto disponveis na biblioteca Math. Para acessar essas
funes, devemos declarar essa biblioteca na clusula uses.
Uses Math;

Das funes existentes na biblioteca Math, destacam-se trs, descritas a seguir:


a) as funes DegToRad e RadToDeg fazem a converso de valores reais de graus para
radianos e de radianos para graus, respectivamente, retornando novos valores reais.
Veja os exemplos, considerando que as variveis reais AnguloGrau e
AnguloRadiano foram declaradas:
AnguloRad := DegToRad(AnguloGrau);
AnguloGrau := RadToDeg(AnguloRad);

b) at o momento, o clculo da potncia de dois valores ( ) era feita da seguinte


maneira:
Potencia := Exp(y*ln(x));

Entretanto, essa expresso possui uma limitao, pois o domnio da funo ln


somente definido para valores positivos de x.
Para evitar esse problema, sem ter que criar uma estrutura condicional, podemos
utilizar a funo Power que possui dois parmetros reais, a base e o expoente. A
funo possui o tratamento de eventuais erros, retornando o valor da potncia sem
restries de valores da base e do expoente.
Potencia := Power(x,y);

Delphi XE Guia de Componentes

12

Captulo 3 Componentes Bsicos


Neste captulo apresentaremos os componentes bsicos para a criao dos aplicativos que
sero desenvolvidos no curso.

1. Form
O formulrio objeto que serve como base para colocar outros objetos (componentes).
Possui controles que permitem que o usurio realize aes como minimizar, maximizar e
fechar, encerrando a execuo do programa.
Quando um novo projeto criado (VCL Forms Application Delphi for Win 32), esse
componente imediatamente colocado a disposio do programador, permitindo que a
confeco do aplicativo se d por ele.

Propriedades e eventos
a) dentre suas propriedades, destacam-se a Caption que indica qual o texto que ser
exibido na barra superior do formulrio. No exemplo acima, foi usado:
Form1.Caption := Form1;

b) a sub-rotina que est associada ao evento OnCreate ativada logo aps a execuo
do programa, como se fosse a primeira coisa que ser feita. Aproveite essa subrotina para iniciar suas variveis globais e fazer algumas configuraes iniciais nos
objetos que estiverem sobre o formulrio.

Delphi XE Guia de Componentes

13

2. Button
Esse componente est na aba Standard da barra de componentes. O boto o principal
objeto que ir sofrer aes (Eventos) oriundas do usurio quando esse desejar executar
algumas instrues (Mtodos).

Propriedades e eventos
a) a propriedade Caption indica o texto que ser exibido no boto;
b) a sub-rotina que est associada ao evento OnClick executada quando o boto for
pressionado. A maioria dos cdigos que sero desenvolvidos estar alocada nessa
sub-rotina.

3. Edit
Esse componente est na aba Standard da barra de componentes. O Edit permite a
entrada de um nico valor, digitado via teclado, na forma de texto. Lembre-se das funes
de converso de texto para nmero caso o valor digitado tenha que ser utilizado em algum
clculo.

Propriedades
a) a propriedade Text contm informaes digitadas no componente. o meio mais
comum para a leitura de valores.
O exemplo a seguir mostra como ler alguns valores, considerando que as variveis A,
B e C so do tipo inteiro, real e texto, respectivamente:
A := StrToInt(Edit1.Text);
B := StrToFloat(Edit2.Text);
C := Edit3.Text; // note que no fazemos a converso

Embora os exemplos tenham mostrado o uso do Edit para a leitura de informaes,


tambm possvel exibir os valores obtidos pelo processamento do aplicativo,
escrevendo as variveis na propriedade Text.

Delphi XE Guia de Componentes

14

b) para colocar o foco em um componente, ou seja, prepar-lo para receber uma nova
informao, utiliza-se:
Edit1.SetFocus;

c) para limpar o contedo do Edit, a propriedade Clear deve ser usada da seguinte
maneira:
Edit1.Clear;

4. Label
Esse componente est na aba Standard da barra de componentes. O Label permite exibir
um nico dado (valor de uma varivel) na forma de texto ou apenas melhora a aparncia da
interface do programa.

Propriedades
a) Para exibir um texto no Label, devemos escrever sobre a propriedade Caption.
Veja os exemplos de como exibir uma varivel do tipo inteiro, uma do tipo real, uma
do tipo string e um texto constante, respectivamente.
Label1.Caption
Label2.Caption
Label3.Caption
Label4.Caption

:=
:=
:=
:=

IntToStr(A);
FloatToStr(B);
C;
Texto;

Ateno! O Edit possui Text e o Label possui Caption.

5. Memo
Esse componente est na aba Standard da barra de componentes. Exibe um texto que pode
ser dividido em linhas, sendo que estas linhas so manipuladas de forma independente.

Delphi XE Guia de Componentes

15

Propriedades
a) para adicionar um texto na ltima linha do Memo, usa-se:
Memo1.Lines.Add(Texto);

b) para conhecer o nmero de linhas (valor inteiro) existentes no Memo faz-se:


NumeroDeLinhas:= Memo1.Lines.Count;

c) para conhecer o valor do ndice da ltima linha (valor inteiro) existente no Memo,
utiliza-se:
UltimaLinha:= Memo1.Lines.Count - 1;

d) pode-se apagar uma determinada linha (do tipo Integer) com:


Memo1.Lines.Delete(Linha);

e) para apagar todas as linhas de um Memo.


Memo1.Clear;

f) retorna o contedo da linha indicada pela varivel inteira Linha em uma varivel do
tipo String.
Texto:= Memo1.Lines[Linha];

6. RadioGroup
Esse componente est na aba Standard da barra de componentes. O RadioGroup um
componente que permite a escolha de somente uma opo em um grupo contendo vrias
alternativas. Tambm um componente para a entrada de dados, entretanto o usurio deve
utilizar o mouse ao invs do teclado.

Delphi XE Guia de Componentes

16

Propriedades e eventos
a) embora existam elementos dentro do RadioGroup que sejam semelhantes aos
RadioButton (no utilizado no curso), eles so, na verdade, textos digitados dentro
da propriedade Items no Object Inspector;
b) para descobrir qual dos itens foi selecionado, pode-se usar uma estrutura condicional
caso. A expresso que ser verificada ser a propriedade ItemIndex, que retorna o
valor inteiro da posio do RadioGroup selecionado.
Importante! O primeiro item sempre definido com o ndice zero;
c) para obter o texto do item selecionado, devemos verificar qual o valor da lista
Items que est na posio selecionada, como faramos em uma varivel indexada.
TextoSelecionado := RadioGroup1.Items[RadioGroup1.ItemIndex];

d) tambm possvel executar uma sequncia de instrues quando uma opo do


RadioGroup for selecionada (instrues no Mtodo OnClick).

7. ListBox
Esse componente est na aba Standard da barra de componentes. O ListBox um
componente semelhante ao RadioGroup em termos de utilizao. Apresenta uma lista de
itens, na forma de String, que podem ser selecionados com o auxlio do apontador do
mouse.

Propriedades
a) Para preencher a lista de itens do ListBox, devemos digitar os valores dentro da
propriedade Items do Object Inspector, exatamente como no RadioGroup.
Caso o contedo deva ser adicionado em tempo de execuo do aplicativo, podemos
acrescentar um texto na ltima linha do ListBox, utilizando:
ListBox1.Items.Add(Texto);

Delphi XE Guia de Componentes

17

b) para descobrir qual dos itens foi selecionado, pode-se usar uma estrutura condicional
caso. A expresso que ser verificada ser a propriedade ItemIndex, que retorna o
valor inteiro da posio do ListBox selecionado.
Importante! O primeiro item sempre definido com o ndice zero;
c) para obter o texto do item selecionado, devemos verificar qual o valor da lista
Items que est na posio selecionada, como faramos em uma varivel indexada.
TextoSelecionado := ListBox1.Items[ListBox1.ItemIndex];

d) para apagar uma linha qualquer, utiliza-se:


ListBox1.Items.Delete(NumeroDaLinha);

e) tambm possvel executar uma sequncia de instrues quando uma opo do


ListBox for selecionada. Para tal, utilize o mtodo OnClick para digitar o cdigofonte do que deve ser executado.

8. StringGrid
Esse componente est na aba Additional da barra de componentes. O StringGrid permite
a entrada ou exibio de dados na forma de texto. Estes dados podem ser, normalmente,
vetores ou matrizes, na forma de uma tabela. Assim como todos os componentes que
possuem mais do que um item, o primeiro possui ndice 0, no caso, a primeira linha e a
primeira coluna possuem o ndice 0, no importando a cor.
Cada item do StringGrid denominado de clula. A figura a seguir mostra um objeto com
5 linhas e 5 colunas, com clulas em trs cores diferentes. As clulas brancas representam as
clulas que podem ser utilizadas pelo usurio para digitar informaes. A clula azul
representa uma clula branca selecionada. As clulas da esquerda e as de cima da tabela so
denominadas clulas fixas e no permitem que o usurio escreva nelas.

Propriedades
a) a quantidade de linhas e colunas do StringGrid pode ser definida diretamente no
Object Inspector, ou em tempo de execuo do aplicativo, manipulando as
propriedades inteiras RowCount e ColCount, respectivamente. Veja o exemplo:
Delphi XE Guia de Componentes

18

StringGrid1.RowCount:= NumeroDeLinhas;
StringGrid1.ColCount:= NumeroDeColunas;

Note que a alterao dessas propriedades modifica apenas a quantidade de linhas e


colunas, no modificando o tamanho, em pixels, do StringGrid no formulrio. Para
acessar as linhas e colunas que no cabem na janela, utilize as barras de rolagem
vertical e horizontal.
b) um caso de interesse conhecer o valor de ndice (representado por um valor
inteiro) da ltima linha ou coluna:
UltimaLinha:= StringGrid1.RowCount - 1;
UltimaColuna:= StringGrid1.ColCount - 1;

c) Para alterar o modo de edio do StringGrid, deve-se clicar na propriedade


Options do Object Inspector. Nesta propriedade existe o campo goEditing, que
pode receber valores booleanos (True ou False).
No caso do StringGrid ser utilizado apenas para a exibio de dados, ou seja, o
usurio no ir digitar nenhum valor nas clulas do componente, a propriedade
goEditing dever receber False.
Existe outra possibilidade na qual o usurio ir digitar valores nas clulas do
StringGrid. Neste caso, goEditing receber True.
d) Para escrever ou acessar o contedo da clula, na forma de texto, utilizamos a
propriedade Cells como uma varivel indexada bidimensional, lembrando que a
primeira clula possui os ndices [0,0]. Lembre-se de que os ndices das clulas
devem ser valores do tipo inteiro.
Ateno! Naturalmente utilizamos matrizes considerando o primeiro ndice para as
linhas e o segundo para as colunas. No StringGrid os ndices so coluna e linha,
respectivamente.
Veja os exemplos que mostram a leitura e exibio de alguns valores. Note que o
exemplo mostra que para valores reais e inteiros devemos fazer a converso dos
valores. Considere a seguinte declarao de variveis:
Var A, linha, coluna: Integer;
B: Real;
C: String;

As variveis coluna e linha devem estar devidamente preenchidas com os ndices


desejados.

Delphi XE Guia de Componentes

19

// leitura de valores
A:= StrToInt(StringGrid1.Cells[coluna,linha]);
B:= StrToFloat(StringGrid1.Cells[coluna,linha]);
C:= StringGrid1.Cells[coluna,linha];
// exibio de valores
StringGrid1.Cells[coluna,linha]:= IntToStr(A);
StringGrid1.Cells[coluna,linha]:= FloatToStr(B);
StringGrid1.Cells[coluna,linha]:= C;

9. CheckBox
Esse componente est na aba Standard da barra de componentes. O CheckBox um
componente que permite a entrada de uma informao do tipo Selecionado/No
Selecionado (True / False). A figura a seguir mostra trs componentes CheckBox
distintos:

Propriedades e eventos
a) para verificar se um CheckBox est ou no selecionado, pode-se verificar o
resultado da propriedade Checked. Esta propriedade retorna um valor lgico (True
ou False) indicando se o item analisado est ou no selecionado;
b) a verificao deve ser feita para cada um dos componentes CheckBox existentes. No
exemplo da figura anterior, devem ser feitas trs estruturas condicionais, uma para
cada componente;
c) tambm possvel executar uma sequncia de instrues quando o usurio clicar
sobre o CheckBox. Para tal, digite as instrues no mtodo OnClick.

10. CheckListBox
Esse componente est na aba Additional da barra de componentes. O CheckListBox um
componente que combina particularidades do CheckBox e do ListBox. Apresenta uma
lista de itens, na forma de String, que podem ser selecionados com o auxlio do apontador
do mouse.

Delphi XE Guia de Componentes

20

Propriedades
a) Para preencher a lista de itens do CheckListBox, devemos digitar os valores dentro
da propriedade Items do Object Inspector, exatamente como no ListBox.
Caso o contedo deva ser adicionado em tempo de execuo do aplicativo, podemos
acrescentar um texto na ltima linha do CheckListBox, utilizando:
CheckListBox1.Items.Add(Texto);

b) para fazer a leitura ou exibio das informaes, necessrio utilizar uma varivel
auxiliar indexada unidimensional do tipo lgica, sendo a faixa de valores para o ndice
deve comear em zero e terminar em um nmero compatvel com os itens do
CheckListBox. No exemplo da imagem anterior, sero utilizados os itens 0, 1 e 2.
var itensMarcados: array[0..2] of Boolean;

O exemplo a seguir mostra como percorrer todos os elementos do CheckListBox e


armazenar na varivel itensMarcados, criada para o exemplo, os valores da
propriedade Checked, que tambm um vetor de valores lgicos.
for i := 0 to CheckListBox1.Count-1 do
itensMarcados[i] := CheckListBox1.Checked[i];

c) para obter o texto do item selecionado, devemos verificar qual o valor da


propriedade Items da posio selecionada, como faramos em variveis indexadas.
TextoSelecionado := CheckListBox1.Items[CheckListBox1.ItemIndex];

d) para apagar uma linha qualquer, utiliza-se:


CheckListBox1.Items.Delete(NumeroDaLinha);

e) tambm possvel executar uma sequncia de instrues quando uma opo do


CheckListBox for selecionada. Para tal, utilize o mtodo OnClick para digitar o
cdigo-fonte do que deve ser executado.

Delphi XE Guia de Componentes

21

Captulo 4 Um Exemplo de Resoluo de Problema


Neste captulo iremos mostrar o processo de resoluo de um exerccio desde a leitura e
compreenso do enunciado at o desenvolvimento e teste do aplicativo final.
Passo 1: Leitura e compreenso do enunciado.
Elaborar um programa que calcule e exiba as razes de uma equao de segundo grau.
O primeiro passo consiste em analisar a equao necessria para a resoluo do problema:
=

2 4
2

So necessrios trs valores digitados pelo usurio (, e ) para calcular as duas razes (1
e 2 ). Alm disso, ser criada uma varivel auxiliar para calcular o valor de delta ().
Passo 2: Representao da soluo na forma grfica.
Button1Click
Incio
a, b, c
d sqr(b)-4*a*c
x1 (-b+sqrt(d))/(2*a)
x2 (-b-sqrt(d))/(2*a)
x1, x2
Fim

Passo 3: Criando o aplicativo.


No Delphi, crie um novo projeto clicando no item New do menu File. Dentre as opes
apresentadas escolha VCL Forms Application Delphi for Win32.
Adicione um componente Label ao formulrio arrastando-o da palheta de ferramentas para
o Form1. Aps posicionar o Label verifique se os marcadores de seleo esto visveis, como
mostra a figura a seguir. Caso no estejam d um clique sobre o objeto Label1. Com o
objeto selecionado, altere o texto da propriedade Caption no Object Inspector para a:.
Delphi XE Guia de Componentes

22

Depois disso adicione outros quatro Labels, trs Edits e um Button. Modifique as
propriedades de maneira conveniente para que o seu formulrio possua a seguinte
aparncia:

Para digitar o cdigo-fonte, selecione o Button1 e localize o evento OnClick no Object


Inspector. D um duplo clique na regio branca desse evento, como mostra a figura a seguir:

Delphi XE Guia de Componentes

23

O Delphi automaticamente ir criar o cabealho do procedimento Button1Click. Nessa


regio escreveremos o cdigo-fonte de maneira condizente com o fluxograma desenvolvido.
procedure TForm1.Button1Click(Sender: TObject);
var a, b, c, d, x1, x2: real;
begin
a := StrToFloat(Edit1.Text);
b := StrToFloat(Edit2.Text);
c := StrToFloat(Edit3.Text);
d := sqr(b)-4*a*c;
x1 := (-b+sqrt(d))/(2*a);
x2 := (-b-sqrt(d))/(2*a);
Label4.Caption := FloatToStr(x1 = , x1);
Label5.Caption := FloatToStr(x2 = , x2);
end;

Clique sobre o boto com a seta verde ou utilize a tecla F9. Isso far com que seu aplicativo
seja compilado e executado.
O simples fato do programa ter sido compilado no significa que est correto. Como o Delphi
no informou nenhum erro, significa apenas que no existem erros de sintaxe.
Para tentar localizar eventuais erros de lgica, devemos testar alguns valores e compar-los
aos valores de teste do fluxograma. Nesse exemplo, vamos utilizar os valores 1, 2 e 3 para
calcular as razes do polinmio 2 + 2 + 3 = 0.
Depois de digitar os valores 1, 2 e 3 nos trs Edits e clicar sobre o boto, podemos verificar a
seguinte mensagem de erro:

Como podemos observar, a mensagem de erro Invalid floating point


operation indica que houve um erro em algum clculo com valores reais. Para descobrir
qual a linha onde o erro foi gerado, clique sobre o boto Break.
Note que a linha x1 := (-b+sqrt(d))/(2*a); recebe um destaque.
Ateno! No tente modificar o cdigo-fonte nessa situao. necessrio parar a execuo
do aplicativo clicando na opo Program Reset no menu Run.
Vamos lembrar uma tcnica para a depurao: d um clique no ponto ao lado da linha que
recebeu destaque do erro.
Delphi XE Guia de Componentes

24

Note que um crculo aparece e a linha novamente recebe destaque. Quando o aplicativo for
executado novamente, ele ir parar antes da execuo dessa linha. Dessa maneira,
poderemos analisar as condies das variveis que podem gerar o erro.
Execute o aplicativo, apertando a tecla F9 e preencha os Edits com os mesmos valores: 1, 2 e
3.
Note que ao clicar sobre o boto, o cdigo-fonte exibido novamente com uma seta ao lado
da linha em destaque. Isso significa que a linha ainda no foi executada. Nesse momento
conveniente utilizarmos um recurso do ambiente Delphi para verificar qual o valor das
variveis.

Selecione o item Add Watch... do menu Run. Preencha o campo Expression com o nome da
varivel que dever ser inspecionada. Repita o processo para todas as variveis desejadas.

A figura anterior mostra que a varivel foi calculada como esperado, ou seja,
2 4 . Como os valores 1 e 2 ainda no foram calculados, so exibidos valores
remanescentes dos espaos de memria.
Analisando o valor = 8 podemos concluir que esse valor ir gerar um erro quando a raiz
quadrada for calculada, uma vez que 8 no possui soluo real.
Delphi XE Guia de Componentes

25

Pressionando a tecla F7, que executa apenas a instruo em destaque, a linha que calcula 1
ser executada e, como previsto, ser gerado um erro.
Para interromper a execuo do programa, clique novamente no item Program Reset do
menu Run.
Para resolver o problema, devemos modificar o algoritmo, como mostra o fluxograma a
seguir:
Button1Click
Incio
a, b, c
d sqr(b)-4*a*c
False

d >= 0

True
x1 (-b+sqrt(d))/(2*a)

No existem
razes reais.

x2 (-b-sqrt(d))/(2*a)
x1, x2
Fim

Alterando o cdigo-fonte, temos:


procedure TForm1.Button1Click(Sender: TObject);
var a, b, c, d, x1, x2: real;
begin
a := StrToFloat(Edit1.Text);
b := StrToFloat(Edit2.Text);
c := StrToFloat(Edit3.Text);
d := sqr(b)-4*a*c;
if d >= 0 then
begin
x1 := (-b+sqrt(d))/(2*a);
x2 := (-b-sqrt(d))/(2*a);
Label4.Caption := FloatToStr(x1 = , x1);
Label5.Caption := FloatToStr(x2 = , x2);
end
else
Showmessage(No existem razes Reais.);
end;
Delphi XE Guia de Componentes

26

Captulo 5 Outras Funcionalidades


Este captulo dedica-se aos programadores que desejam tornar seus aplicativos agradveis
ao usurio, tornando o processo de insero e exibio de dados mais natural.
Sero apresentados componentes visuais, componentes que fazem a chamada para algumas
funes do Windows, alm de estruturas de dados que facilitam o uso e armazenamento de
cores e datas, alm de permitir a impresso dos valores obtidos pelo aplicativo.

1. Componentes Visuais
1.1. ComboBox
Esse componente est na aba Standard da barra de componentes. O ComboBox um
componente cujas funcionalidades so idnticas ao RadioGroup, entretanto, sua disposio
mais compacta.

Propriedades e eventos
a) os elementos do ComboBox devem ser digitados dentro da propriedade Items no
Object Inspector;
b) para descobrir qual dos itens foi selecionado, pode-se usar uma estrutura condicional
caso. A expresso que ser verificada ser a propriedade ItemIndex, que retorna o
valor inteiro da posio do ComboBox selecionado.
Importante! O primeiro item sempre definido com o ndice zero;
c) para obter o texto do item selecionado, devemos verificar qual o valor da lista
Items que est na posio selecionada, como faramos em uma varivel indexada.
TextoSelecionado := ComboBox1.Items[ComboBox1.ItemIndex];

Tambm possvel conhecer o valor do texto utilizando o ComboBox como se fosse


um Edit.
TextoSelecionado := ComboBox1.Text;

d) tambm possvel executar uma sequncia de instrues quando uma opo do


ComboBox for selecionada (instrues no Mtodo OnClick).

Delphi XE Guia de Componentes

27

Veja a aparncia do objeto quando o usurio clica sobre o boto com a seta.

1.2. Image
Esse componente est na aba Additional da barra de componentes. Embora o Image possua
um conjunto de ferramentas associadas propriedade Canvas que permite a criao de
desenhos em tempo de execuo, nos atentaremos a uma caracterstica mais simples,
utilizando-o apenas para exibir uma imagem armazenada em arquivo. Em tempo de
execuo as linhas tracejadas que o contornam no so exibidas.

Propriedades
a) Para carregar uma imagem de um arquivo devemos indicar todo o caminho fsico
dessa imagem. Isso deve ser feito clicando no boto com trs pontos da propriedade
Picture do Object Inspector.
Depois devemos clicar em Load... e selecionar a figura. Para aceitar clique sobre o
boto OK.

Delphi XE Guia de Componentes

28

b) Caso o resultado no seja esperado, ou seja, a imagem original maior do que a


janela criada pelo Image no formulrio, podemos definir o valor True para a
propriedade Proportinoal no Object Inspector. Veja a diferena nas imagens
quando o valor False (esquerda) e True (direita) esto aplicados na propriedade
Proportional.

1.3. SpinEdit
Esse componente est na aba Samples da barra de componentes. O SpinEdit um
componente muito til e prtico, entretanto, limitado para entrada de dados de nmeros
inteiros.

Propriedades
a) para obter o valor do SpinEdit devemos acessar a propriedade Value, que retorna
um valor inteiro e no texto, como todos os outros apresentados. Veja o exemplo,
considerando que a varivel n foi declarada inteira.
n := SpinEdit1.Value;

b) as propriedades inteiras MinValue e MaxValue definem os limites para o valor do


SpinEdit, seja a entrada realizada via teclado ou mouse, quando o usurio clica
sobre os botes com as setas;
c) a propriedade inteira Increment indica qual o valor do acrscimo ou decrscimo
sofrido pelo valor exibido quando o usurio clicar sobre os botes com as setas. Seu
valor padro um.

1.4. PageControl
Esse componente est na aba Win32 da barra de componentes. O PageControl nada mais
do que um componente para organizar as diferentes funcionalidades do seu aplicativo.
Delphi XE Guia de Componentes

29

Por exemplo, podemos criar vrias abas, uma para cadastro de clientes, outra para consulta
de preos e outra para efetuar o balano do dia. Todas esto relacionadas com as
informaes de um comrcio qualquer, mas so utilizadas em momentos diferentes do dia.
Isso permite que o formulrio possua uma apresentao melhor, sem uma quantidade
absurda de objetos que no so utilizados para a maior parte das tarefas.
Para criar uma aba, denominada TabSheet, clique sobre o PageControl com o boto
direito do mouse e selecione New Page. Repita a operao quantas vezes forem
necessrias.

O exemplo a seguir podemos ver que foram criados dois ambientes, um em cada aba do
PageControl. Note que a numerao dos objetos contnua em todo o formulrio, ou
seja, no TabSheet2 foi criado o Edit2, pois existem dois Edits no programa.

Delphi XE Guia de Componentes

30

1.5. Chart
Esse componente est na aba TeeChart Std da barra de componentes. O componente
Chart uma ferramenta para exibio de grficos de diversos tipos, como linha, pizza,
barras e outros. Podemos desenhar vrias curvas em um nico grfico.

Criando uma curva


O primeiro passo para criar uma curva dar um duplo clique sobre o componente Chart,
posicionado no formulrio. Isso faz com que a janela Editing Chart1 seja exibida, como na
figura a seguir.

Delphi XE Guia de Componentes

31

Ao clicar sobre o boto Add... uma nova srie ser criada. Neste momento, necessrio
decidir qual tipo de grfico ser utilizado. Para o exemplo, escolha Line e remova a seleo
da opo 3D. essa opo no cria um grfico que representa trs dimenses, apenas um
efeito visual de profundidade. Depois disso, clique em OK.

Veja que a Series1 foi criada. Quando criarmos o cdigo-fonte que d forma a srie devemos
alterar as propriedades desse objeto. Alm disso, podemos repetir esse passo e criar vrias
sries. Isso torna possvel criar vrias curvas em uma nica janela.

Delphi XE Guia de Componentes

32

A srie est pronta para ser utilizada, entretanto podemos configurar alguns itens para que o
grfico traga mais informaes.
Selecione a srie e clique na aba Axis.

Nessa aba, escolha a aba Title. Selecione Left Axis e d o nome ao eixo, por exemplo:
Valores de y. Depois disso, escolha Botton Axis e faa o mesmo, escrevendo Valores de
x. Agora que os eixos das abscissas e ordenadas possuem uma designao, faremos o
mesmo com o ambiente do grfico, clicando na aba Titles, como mostra a figura a seguir.

Delphi XE Guia de Componentes

33

Em Text digite o ttulo do grfico.

Em grficos com mais de uma srie conveniente manter uma legenda que relaciona as
cores das linhas com as sries. No exemplo esse recurso ser desabilitado, clicando sobre o
item Visible da aba Style da aba Legend.
Existem muitas outras configuraes que podem ser realizadas no assistente de criao das
sries, como, por exemplo, grficos com eixos invertidos ou em escala logartmica.
Aps concluirmos as configuraes, devemos clicar em Close.
Existem duas propriedades da Series que sero utilizadas:
a) Clear: apaga todos os pontos da srie;
b) Add: adiciona um ponto srie. Pode ser utilizado com dois parmetros, sendo o
primeiro o valor da imagem (y) e o segundo o valor do domnio (x) na forma de texto.
Isso permite fazer grficos por categorias, ou por dias da semana, por exemplo.
Finalmente vamos criar o cdigo-fonte, em um boto, por exemplo, que ir traar uma curva
especfica. No caso, vamos desenhar a funo = (10 ) para o intervalo [0; 4]
da abscissa.

Delphi XE Guia de Componentes

34

procedure TForm1.Button1Click(Sender: TObject);


var x, xi, xf, dx, y: real;
n: integer;
begin
xi := 0;
// limite inferior do domnio
xf := 4;
// limite superior do domnio
n := 100;
// nmero de sub-divises do domnio
dx := (xf-xi)/n; // valor do incremento na direo x
Series1.Clear;
// apaga a curva
x := xi;
// x recebe o limite inferior
while x < xf+dx do // enquanto x pertencer aos limites do domnio
begin
y := exp(-x)*sin(10*x);
// clculo da imagem
Series1.Add(y,FloatToStr(x)); // adiciona o ponto Series1
x := x + dx;
// prximo x
end;
end;

Aps a execuo do cdigo-fonte apresentado, podemos observar o seguinte resultado.

Compare o cdigo-fonte com o seu fluxograma. Note que a o uso do componente nada mais
do que a exibio das coordenadas dos pontos, y e x, nesta ordem.

Delphi XE Guia de Componentes

35

Button1Click
Incio
xi 0
xf 4
n 100
dx (xf-xi)/n
x xi
Enquanto
x < x+dx Faa
y exp(-x)*sin(10*x)
y, x
x x + dx
Fim Enquanto
Fim

2. Manipulao de Arquivos
2.1. OpenDialog
Esse componente est na aba Dialogs da barra de componentes. O OpenDialog um
componente que faz uso da interface do sistema operacional Windows para abrir arquivos.
Esse componente no abre o arquivo! Cabe ao programador verificar as informaes
fornecidas pelo usurio e abrir ou salvar o arquivo.
Como faz uso de elementos do sistema operacional, sua aparncia pode ser diferente em
computadores com verso de Windows diferentes.

Note que o usurio somente perceber os efeitos quando os componentes forem


executados. Caso contrrio, no so exibidos.

Delphi XE Guia de Componentes

36

Propriedades
a) InitialDir: uma propriedade do tipo texto que recebe um caminho que pode
ser do disco rgido ou at mesmos de um pen drive. Quando OpenDialog
executado, a pasta que exibida inicialmente o caminho definido nessa
propriedade;
b) Execute: o mecanismo de chamada do OpenDialog. Normalmente utilizado em
uma estrutura condicional, pois retorna o valor True quando o usurio clica sobre o
boto Abrir e False quando o usurio cancela a operao;
c) FileName: a propriedade que armazena o caminho do arquivo informado.
O cdigo-fonte a seguir mostra um exemplo da execuo do OpenDialog em um boto.
Considere que a varivel que representa o arquivo lgico arq foi criada globalmente.
procedure TForm1.Button1Click(Sender: TObject);
begin
// faz a chamada da janela do OpenDialog
if OpenDialog1.Execute then
// o usurio clicou no boto Abrir
begin
// associar o arquivo lgico com o arquivo fsico escolhido
AssignFile(arq,OpenDialog1.FileName);
// abrir o arquivo
reset(arq);
end;
end;

Quando a instruo OpenDialog1.Execute executada, a seguinte janela exibida.

Delphi XE Guia de Componentes

37

3. Manipulao de Cores
Em algumas aplicaes devemos proporcionar ao usurio escolher uma cor. Entretanto, o
computador nos oferece mais de dezesseis milhes de cores. Os elementos que sero
apresentados permitiro criar ferramentas para dar ao usurio a opo de escolher uma cor
pela sua percepo.

3.1. TColor
O TColor um tipo, assim como o String ou o Integer. Sua modelagem interna permite
armazenar um nmero inteiro suficientemente grande para manipular as mais de dezesseis
milhes de cores.
Uma vez criada uma varivel do tipo TColor, ela pode ser preenchida de duas maneiras
distintas:
a) valores constantes. As constantes de cores comeam por cl, como os exemplos
clRed, clBlue, clGreen, clBlack, entre outras;
b) composio de trs canais de cores: vermelho, verde e azul. Esses canais so valores
inteiros entre 0 e 255 e devem ser passados via parmetro funo RGB, que
retorna um valor do tipo TColor.
Var Cor1, Cor2, Cor3: TColor;
...
Cor1 := clRed;
Cor2 := clBtnFace;
Cor3 := RGB(255,0,0); // no exemplo, vermelho
...

Assim como outros tipos de varivel, o TColor pode compor campos de registros (record)
criados para a manipulao de arquivos.

3.2. ColorDialog
Esse componente est na aba Dialog da barra de componentes. Assim como o componente
OpenDialog, o ColorDialog somente est visvel ao usurio quando executado.
Possui uma regio de cores predefinidas e outra para que o usurio possa escolher a cor
visualmente, seja pela percepo, por valores de Matiz, Saturao e Brilho ou as
componentes dos canais Vermelho, Verde e Azul.

Delphi XE Guia de Componentes

38

Propriedades
a) Execute: o mecanismo de chamada do ColorDialog. Normalmente utilizado
em uma estrutura condicional, pois retorna o valor True quando o usurio clica
sobre o boto Abrir e False quando o usurio cancela a operao;
b) Color: retorna a cor, do tipo TColor, selecionada pelo usurio.
Quando a instruo ColorDialog1.Execute executada, a seguinte janela exibida.

3.3. Shape
Esse componente est na aba Additional da barra de componentes. O Shape um objeto
que exibe uma figura geomtrica como retngulos, elipse e retngulos com cantos
arredondados.

Propriedades e eventos
a) para escolher a forma do objeto, escolha uma das opes da propriedade Shape no
Object Inspector;
Delphi XE Guia de Componentes

39

b) a cor do preenchimento definida quando um valor do tipo TColor atribudo


propriedade Color da propriedade Brush, como mostra o exemplo a seguir.
Shape1.Brush.Color := clBlue;

c) tambm possvel executar uma sequncia de instrues quando o usurio apertar


um boto do mouse sobre o Shape. Para tal, utilize o mtodo OnMouseDown para
digitar o cdigo-fonte do que deve ser executado. O evento OnClick no est
presente no Shape.

Exemplo de manipulao de cores


O exemplo a seguir mostra como criar uma interface para a entrada de dados em forma de
cor. Em seu formulrio, acrescente um componente ColorDialog e um Shape.
Com o objeto Shape selecionado, d um duplo clique para abrir o evento OnMouseDown no
Object Inspector. Nessa regio ser digitado o cdigo-fonte que far a leitura e exibio da
cor escolhida pelo usurio.
procedure TForm1.Shape1MouseDown(Sender: TObject; Button:
TMouseButton; Shift: TShiftState; X, Y:
Integer);
var cor: TColor;
begin
if ColorDialog1.Execute then
begin
cor := ColorDialog1.Color;
Shape1.Brush.Color := cor;
end;
end;

Quando o usurio pressionar um boto do mouse sobre o Shape a janela do ColorDialog


ser exibida. Aps a escolha da cor, quando a janela estiver oculta, poderemos ver o Shape
todo preenchido com a cor escolhida.
Sob o ponto de vista de fluxograma, essa sub-rotina faz apenas a entrada de dados da
varivel cor.

4. Manipulao de Datas
Essa seo destina-se a apresentao de elementos para o armazenamento e manipulao
de datas e horas, alm da interface com o usurio.

4.1. TDateTime
O tipo TDateTime uma estrutura de dados que permite armazenar um valor numrico sob
a forma de data, contendo dia, nmero da semana, ms, ano, hora, minuto, segundo e
milsimo de segundo.
Delphi XE Guia de Componentes

40

Veja o exemplo da declarao de uma varivel.


Var Data: TDateTime;

Assim como outros tipos de varivel, o TDateTime pode compor campos de registros
(record) criados para a manipulao de arquivos.
possvel exibir os dados de uma varivel do tipo TDateTime de trs maneiras distintas
nos objetos apresentados at o momento, bastando fazer a converso para texto. Veja o
exemplo, considerando que a varivel data indica o dia 12.11.1955 e a hora 22:04:00.
Label1.Caption := DateTimeToStr(Data);
Label2.Caption := DateToStr(Data);
Label3.Caption := TimeToStr(Data);

// exibe 12.11.1955 22:04:00


// exibe 12.11.1995
// exibe 22:04:00

4.2. Now
A funo Now retorna a data e hora do instante em que foi executada, no formato tipo
TDateTime, com preciso da ordem de milsimo de segundo.
Essa funo muito utilizada em aplicativos que medem o tempo de execuo de algoritmos
ou aplicativos que fazem clculos com datas e horas, como por exemplo, aplicativos para
hotis, estacionamentos e outros.
Veja o exemplo de como obter o valor da data e hora atual do computador. Considere que a
varivel Data, do tipo TDateTime foi declarada como no exemplo anterior.
Data := Now;

4.3. Diferena entre dois instantes


Existem algumas funes que retornam valores inteiros da diferena entre dois instantes de
tempo distintos. Para utilizar essas funes necessrio declarar a biblioteca DateUtilis.
Uses DateUtils;

A tabela a seguir relaciona as funes com a unidade de tempo calculada. Todas as funes
recebem como parmetro o instante final e o instante inicial, nessa ordem, sob a forma de
um valor do tipo TDateTime.

Delphi XE Guia de Componentes

41

Funo

Unidade de tempo

MilliSecondsBetween

Milissegundos

SecondsBetween

Segundos

MinutesBetween

Minutos

HoursBetween

Horas

DaysBetwwen

Dias

WeeksBetween

Nmero de Semanas

MonthsBetween

Meses

YearBetween

Anos

O exemplo a seguir mostra como calcular quanto milissegundos se passaram durante a


execuo de um algoritmo que calcula o comprimento da curva = 2 no intervalo [0; 1].
procedure TForm1.Button1Click(Sender: TObject);
var x, y, xa, ya, dx, c: real;
DataInicio: TDateTime;
tempo: integer;
begin
DataInicio := Now;
// hora de incio
c := 0;
xa := 0;
dx := 1/10000000;
while xa+dx <= 1 do
begin
x := xa + dx;
y := sqr(x);
c := c + sqrt(sqr(x-xa)+sqr(y-ya));
xa := xa + dx;
ya := sqr(xa);
end;

// comprimento inicial
// incio do domnio
// incremento de x
// at valor final
// posio futura
// calcula comprimento
// incrementa posio atual

tempo := MilliSecondsBetween(now,DataInicio); // calcula durao


Label2.Caption := IntToStr(tempo);
// exibe durao
Label1.Caption := FloatToStr(c);
end;

// exibe comprimento

4.4. DateTimePicker
Esse componente est na aba Win32 da barra de componentes. O componente
DateTimePicker torna a entrada e a exibio de datas de maneira simples e clara ao
usurio.

Delphi XE Guia de Componentes

42

Note que o componente, na sua forma compacta exibe uma data, entretanto, quando o
usurio clica sobre o boto com a seta, o componente se abre e permite a escolha de uma
nova data. Note que existe uma indicao da data atual na forma expandida.

Propriedades
a) A propriedade DateTime pode ser lida ou receber uma informao. Essa informao
um valor do tipo TDateTime.
O exemplo a seguir considera que uma loja aceita que a primeira parcela de um produto
vendido seja pago quinze dias aps a data da compra. Foram utilizados dois componentes
DateTimePicker, um para a entrada de dados (dia da compra) e outro para exibir a data
do pagamento da primeira parcela.
procedure TForm1.Button1Click(Sender: TObject);
var DataCompra, PrimeiraParcela: TDateTime;
begin
DataCompra := DateTimePicker1.DateTime;
// entrada de dados
PrimeiraParcela :=
DataCompra + 15;
// calcula nova
data
DateTimePicker2.DateTime := PrimeiraParcela; // exibe resposta
end;

5. Navegao na Internet
possvel fazer com que suas aplicaes acessem sites de maneira muito simples. Como
exemplo, ser apresentado como fazer um aplicativo acessar informaes cartogrficas
utilizando o Google Maps.

Delphi XE Guia de Componentes

43

5.1. WebBrowser
Esse componente est na aba Internet da barra de componentes. O WebBrowser apresenta
uma rea que ser utilizada para visualizar a pgina aberta.

Mtodos
a) O procedimento Navigate o responsvel pela chamada do acesso internet.
Possui um parmetro do tipo String que representa o endereo do site.
O exemplo a seguir mostra como acessar um site cujo endereo foi digitado no componente
Edit1.
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate(Edit1.Text);
end;

Delphi XE Guia de Componentes

44

Neste outro exemplo vamos mostrar como usar o parmetro do Nagivate para apresentar
mapas no aplicativo. Ser utilizada uma String que possui dois parmetros: Local e Zoom.
'http://maps.google.com.br/maps?q=' + Local + '&z=' + Zoom
Veja alguns exemplos do contedo da varivel Local:
a) endereo: 'Praa Mau, 1 - So Caetano do Sul';
b) CEP: '09580-900';
c) Coordenadas latitude e longitude: '-23.648283,-46.573378';
Neste caso, os dois valores utilizam o ponto como separador decimal e a vrgula
para separar as coordenadas. Valores positivos representam Norte e Leste,
enquanto que negativos so Sul e Oeste para a latitude e longitude,
respectivamente.
d) estabelecimento: 'Instituto Mau de Tecnologia'.
Segundo a documentao da API do Google Maps, o parmetro Zoom deve ser um valor
inteiro, mas escrito sob a forma de String, entre 0 e 21.
Uma vez que a aplicao ou o usurio definiram os valores dos parmetros Local e Zoom,
basta fazer o chamado da pgina, utilizando o mtodo Navigate.

Delphi XE Guia de Componentes

45

6. Impresso
Em alguns aplicativos necessrio gerar relatrios com o contedo armazenado ou
calculado durante a execuo. Sero apresentadas duas solues, com caractersticas
totalmente diferentes, mas que permitem imprimir as informaes desejadas.
Cabe lembrar que a impresso tambm deve ser expressa na forma de fluxograma. Desta
maneira, quando desejamos imprimir o nome, o endereo e a idade de uma pessoa,
utilizamos a seguinte representao.

Nome, Endereco, Idade

6.1. Print
Uma soluo simples, entretanto no usual em virtude da sua apresentao visual, consiste
em utilizar a propriedade Print do prprio formulrio.
Isso faz com que todo o formulrio, desde os botes at a barra com os botes maximizar e
minimizar sejam impressas na impressora padro do usurio.
Form1.Print;

6.2. Rave Report


O Rave Reports um programa que permite ao usurio criar relatrios de impresso, da
mesma maneira que o usurio adiciona objetos em um formulrio, com parmetros que
podem ser preenchido por um aplicativo criado no Delphi.
Uma vez instalado, devemos ter o cuidado de somente executar o Rave Reports com o
Delphi aberto.

Delphi XE Guia de Componentes

46

O ambiente de confeco do Rave Reports semelhante filosofia de confeco da


aparncia de um formulrio. Podemos notar as abas com os componentes sobre a folha de
trabalho. Sero utilizadas duas abas para gerar o exemplo de um relatrio: Standard e
Report.

A principal diferena entre as duas abas consiste na caracterstica dos componentes da aba
Standard serem imutveis durante a execuo do aplicativo em Delphi, enquanto que na
aba Report, o contedo dos componentes podem ser alterados, permitindo exibir, por
exemplo, os valores calculados pelo aplicativo.
O exemplo a seguir mostra a criao de um relatrio contendo uma imagem e trs textos,
sendo um fixo e os outros dois preenchidos por um aplicativo.
a) O primeiro passo consiste em analisar o que dever ser exibido em funo da
resposta do aplicativo que estamos desenvolvendo. No caso, de um Pet Shop, ser
cadastrado o nome e a data de nascimento dos ces dos clientes. Isso significa que o
nome e a data so os parmetros do relatrio;
b) para definir esses parmetros, clique sobre o item Report1 da rvore do projeto e
depois sobre o boto com trs pontos do item Parameters do Object Inspector.

Delphi XE Guia de Componentes

47

c) a janela Strings Editor ser exibida. Digite o nome dos dois parmetros desejados.
Vale ressaltar que os parmetros no Rave Reports so textos e no precisam seguir as
regras para criao de variveis, ou seja, podem possuir caracteres especiais e
espaos. Depois disso clique em OK;

d) vamos adicionar um componente Text da aba Standard e criar o ttulo do relatrio,


alterando as caractersticas da fonte e a propriedade Text;
e) depois adicione um componente Bitmap, tambm da aba Standard. Assim como no
componente Image do Delphi defina a imagem alterando a propriedade Image do
Bitmap;
f) Para exibir o nome e a data de nascimento, adicione dois componentes DataText da
aba Report. Selecione o DataText1 e clique no boto com trs pontos da propriedade
DataField no Object Inspector.

Delphi XE Guia de Componentes

48

Escolha o nome do parmetro em Project Parameters e clique sobre o boto Insert


Parameter. Isso faz que o Data Text seja preenchido com Param.Nome, nesse
exemplo.
possvel concatenar um texto fixo com parmetros, somando strings. Para tal,
vamos escrever um texto antes do parmetro no Data Text. No se esquea de
utilizar apstrofos para delimitar o texto.
Nome do Animal: + Param.Nome

Depois disso clique sobre o boto OK;


g) repita os passos do item f) para definir o parmetro Data para o DataText2.
Veja o resultado na figura a seguir.

Delphi XE Guia de Componentes

49

Salve o arquivo, de preferncia na mesma pasta do projeto do Delphi e feche o Rave


Reports.
De volta ao Delphi, vamos criar um boto que ir fazer o chamado ao relatrio de impresso
criado no Rave Reports. Para tal, acrescente ao formulrio um componente RvProject, da
aba Rave.

Com o objeto RvProject1 selecionado, clique sobre o boto com os trs pontos da
propriedade ProjectFile no Object Inspector e escolha o arquivo criado no Rave Reports.
Lembre-se que a extenso desse arquivo rav.
Depois disso, devemos criar o cdigo-fonte do boto que preencher os campos do relatrio
e o exibir. A mecnica de funcionamento do objeto RvProject a seguinte:
a)
b)
c)
d)

abrir o projeto com a propriedade Open;


preencher os parmetros com a propriedade SetParameters;
fazer a chamada do relatrio com a propriedade Execute;
fechar o projeto com a propriedade Close.

Note que o cdigo-fonte apresentado a seguir preenche as propriedades Nome e Data


com valores digitados pelo usurio em componentes do tipo Edit.
procedure TForm1.Button1Click(Sender: TObject);
begin
RvProject1.Open;
RvProject1.SetParam(Nome, Edit1.Text);
RvProject1.SetParam(Data, Edit2.Text);
RvProject1.Execute;
RvProject1.Close;
end;

Veja o resultado quando o boto for pressionado.

Delphi XE Guia de Componentes

50

Delphi XE Guia de Componentes