Escolar Documentos
Profissional Documentos
Cultura Documentos
2011 Delphi XE PDF
2011 Delphi XE PDF
Guia de Componentes
2011
3
Sumário
a) programação visual;
b) RAD – Rapid Application Development;
c) Pascal (Object Pascal);
d) programação orientada a objetos;
e) programação 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) Barra Rápida (Speed Bar): permite executar as funções mais comuns do menu por
meio do mouse, como por exemplo: abrir projetos, salvar projetos, etc. Ao passar
com o mouse sobre seus botões, um texto explicativo é apresentado.
Note que o formulário pertence à aba Design. Desta maneira, as ferramentas para a
confecção da aparência do aplicativo somente são exibidas quando essa aba estiver
selecionada.
d) Editor de Código: é uma janela que apresenta um arquivo texto contendo o código
fonte em Object Pascal referente ao Form. O nome do arquivo texto contendo código
fonte no Delphi é conhecido como Unit (Unidade).
3. Manipulação de Projetos
Um projeto é um conjunto de Forms e Units que o Delphi usa para gerar o programa final
executável.
A seguir serão apresentados os processos, de maneira segura, para criar, abrir e salvar
projetos.
Para criar um novo projeto devemos nos certificar que não existe nenhum projeto aberto,
isto pode ser feito clicando no menu File, em seguida no item Close All. Após esta verificação
clique novamente em File, depois New e em seguida selecione o item VCL Forms
Application – Delphi for Win32 para criar um novo 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
botão Salvar e a seguir faça o mesmo com o projeto. O nome desses arquivos devem seguir
as regras para criação de nome de variáveis.
Para abrir um novo projeto devemos nos certificar que não 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.
Quando desejamos ler uma informação digitada pelo usuário em algum componente do
formulário, devemos analisar como a informação será armazenada no aplicativo, ou seja,
devemos observar qual será o tipo da variável utilizada.
Todas as informações do formulário que são representadas por caracteres são valores do
tipo texto (string). Desta maneira, quando desejamos ler um valor numérico, devemos
converter o valor, escrito na forma de texto, para valores numéricos. Além disso, devemos
escolher como será o formato do número, inteiro ou real (chamado número de ponto
flutuante, ou float).
a) função que transforma um texto para um número inteiro: StrToInt;
b) função que transforma um texto para um número real: StrToFloat.
Veja no exemplo como ler e exibir valores em componentes do tipo Edit, considerando que
foram declaradas as variáveis A: Integer, B: Real e C: String.
// Lendo valores
A := StrToInt(Edit1.Text);
B := StrToFloat(Edit2.Text);
C := Edit3.Text; // note que não fazemos a conversão
// Exibindo valores
Edit4.Text := IntToStr(A);
Edit5.Text := FloatToStr(B);
Edit6.Text := C; // note que não fazemos a conversão
Também é possível exibir um determinado número de casas decimais quando valores reais
forem apresentados nos componentes. Para tal, utilize a função FloatToStrF que formata
o valor no momento da conversão para texto. Essa função possui quatro parâmetros:
a) o valor que será exibido;
b) o formato do número. Normalmente utilizamos a constante ffFixed;
c) a precisão, que representa o número de algarismos significativos;
d) a quantidade de casas após o separador decimal.
Considerando que o valor da variável real x seja √2, veja como o valor pode ser exibido
alterando os parâmetros.
Note que o parâmetro da precisão deve ser maior do que o número de casas decimais para
que não haja alteração do valor.
2. Funções Matemáticas
Algumas funções matemáticas estão disponíveis na biblioteca Math. Para acessar essas
funções, devemos declarar essa biblioteca na cláusula uses.
Uses Math;
AnguloRad := DegToRad(AnguloGrau);
AnguloGrau := RadToDeg(AnguloRad);
Potencia := Exp(y*ln(x));
Potencia := Power(x,y);
1. Form
O formulário é objeto que serve como “base” para colocar outros objetos (componentes).
Possui controles que permitem que o usuário realize ações como minimizar, maximizar e
fechar, encerrando a execução do programa.
Quando um novo projeto é criado (VCL Forms Application – Delphi for Win 32), esse
componente é imediatamente colocado a disposição do programador, permitindo que a
confecção 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 formulário. No exemplo acima, foi usado:
Form1.Caption := ‘Form1’;
b) a sub-rotina que está associada ao evento OnCreate é ativada logo após a execução
do programa, como se fosse “a primeira coisa que será feita”. Aproveite essa sub-
rotina para iniciar suas variáveis globais e fazer algumas configurações iniciais nos
objetos que estiverem sobre o formulário.
2. Button
Propriedades e eventos
3. Edit
Propriedades
O exemplo a seguir mostra como ler alguns valores, considerando que as variáveis A,
B e C são do tipo inteiro, real e texto, respectivamente:
A := StrToInt(Edit1.Text);
B := StrToFloat(Edit2.Text);
C := Edit3.Text; // note que não fazemos a conversão
b) para colocar o foco em um componente, ou seja, prepará-lo para receber uma nova
informação, utiliza-se:
Edit1.SetFocus;
c) para limpar o conteúdo 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 variável) na forma de texto ou apenas melhora a aparência da
interface do programa.
Propriedades
Label1.Caption := IntToStr(A);
Label2.Caption := FloatToStr(B);
Label3.Caption := C;
Label4.Caption := ‘Texto’;
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 são manipuladas de forma independente.
Propriedades
Memo1.Lines.Add(‘Texto’);
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;
Memo1.Lines.Delete(Linha);
Memo1.Clear;
f) retorna o conteúdo da linha indicada pela variável inteira Linha em uma variável do
tipo String.
Texto:= Memo1.Lines[Linha];
6. RadioGroup
Propriedades e eventos
b) para descobrir qual dos itens foi selecionado, pode-se usar uma estrutura condicional
caso. A expressão que será verificada será a propriedade ItemIndex, que retorna o
valor inteiro da posição 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 posição selecionada, como faríamos em uma variável indexada.
TextoSelecionado := RadioGroup1.Items[RadioGroup1.ItemIndex];
7. ListBox
Propriedades
ListBox1.Items.Add(‘Texto’);
b) para descobrir qual dos itens foi selecionado, pode-se usar uma estrutura condicional
caso. A expressão que será verificada será a propriedade ItemIndex, que retorna o
valor inteiro da posição 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 posição selecionada, como faríamos em uma variável indexada.
TextoSelecionado := ListBox1.Items[ListBox1.ItemIndex];
ListBox1.Items.Delete(NumeroDaLinha);
8. StringGrid
Propriedades
StringGrid1.RowCount:= NumeroDeLinhas;
StringGrid1.ColCount:= NumeroDeColunas;
UltimaLinha:= StringGrid1.RowCount - 1;
UltimaColuna:= StringGrid1.ColCount - 1;
Existe outra possibilidade na qual o usuário irá digitar valores nas células do
StringGrid. Neste caso, goEditing receberá True.
Veja os exemplos que mostram a leitura e exibição de alguns valores. Note que o
exemplo mostra que para valores reais e inteiros devemos fazer a conversão dos
valores. Considere a seguinte declaração de variáveis:
// leitura de valores
A:= StrToInt(StringGrid1.Cells[coluna,linha]);
B:= StrToFloat(StringGrid1.Cells[coluna,linha]);
C:= StringGrid1.Cells[coluna,linha];
// exibição de valores
StringGrid1.Cells[coluna,linha]:= IntToStr(A);
StringGrid1.Cells[coluna,linha]:= FloatToStr(B);
StringGrid1.Cells[coluna,linha]:= C;
9. CheckBox
Propriedades e eventos
a) para verificar se um CheckBox está ou não selecionado, pode-se verificar o
resultado da propriedade Checked. Esta propriedade retorna um valor lógico (True
ou False) indicando se o item analisado está ou não selecionado;
b) a verificação deve ser feita para cada um dos componentes CheckBox existentes. No
exemplo da figura anterior, devem ser feitas três estruturas condicionais, uma para
cada componente;
10. CheckListBox
Propriedades
CheckListBox1.Items.Add(‘Texto’);
b) para fazer a leitura ou exibição das informações, é necessário utilizar uma variável
auxiliar indexada unidimensional do tipo lógica, sendo a faixa de valores para o índice
deve começar em zero e terminar em um número compatível com os itens do
CheckListBox. No exemplo da imagem anterior, serão utilizados os itens 0, 1 e 2.
for i := 0 to CheckListBox1.Count-1 do
itensMarcados[i] := CheckListBox1.Checked[i];
TextoSelecionado := CheckListBox1.Items[CheckListBox1.ItemIndex];
CheckListBox1.Items.Delete(NumeroDaLinha);
“Elaborar um programa que calcule e exiba as raízes de uma equação de segundo grau.”
−𝑏 ± √𝑏 2 − 4𝑎𝑐
𝑥=
2𝑎
São necessários três valores digitados pelo usuário (𝑎, 𝑏 e 𝑐) para calcular as duas raízes (𝑥1
e 𝑥2 ). Além disso, será criada uma variável auxiliar para calcular o valor de delta (𝑑).
Button1Click
Início
a, b, c
d ← sqr(b)-4*a*c
x1 ← (-b+sqrt(d))/(2*a)
x2 ← (-b-sqrt(d))/(2*a)
x1, x2
Fim
No Delphi, crie um novo projeto clicando no item New do menu File. Dentre as opções
apresentadas escolha VCL Forms Application – Delphi for Win32.
Adicione um componente Label ao formulário arrastando-o da palheta de ferramentas para
o Form1. Após posicionar o Label verifique se os marcadores de seleção estão visíveis, como
mostra a figura a seguir. Caso não estejam dê um clique sobre o objeto Label1. Com o
objeto selecionado, altere o texto da propriedade Caption no Object Inspector para ‘a:’.
Depois disso adicione outros quatro Labels, três Edits e um Button. Modifique as
propriedades de maneira conveniente para que o seu formulário possua a seguinte
aparência:
Clique sobre o botão 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 não significa que está correto. Como o Delphi
não informou nenhum erro, significa apenas que não existem erros de sintaxe.
Para tentar localizar eventuais erros de lógica, 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 raízes do polinômio 𝑥 2 + 2 ∙ 𝑥 + 3 = 0.
Depois de digitar os valores 1, 2 e 3 nos três Edits e clicar sobre o botão, podemos verificar a
seguinte mensagem de erro:
Atenção! Não tente modificar o código-fonte nessa situação. É necessário parar a execução
do aplicativo clicando na opção Program Reset no menu Run.
Vamos lembrar uma técnica para a depuração: dê um clique no ponto ao lado da linha que
recebeu destaque do erro.
Note que um círculo aparece e a linha novamente recebe destaque. Quando o aplicativo for
executado novamente, ele irá parar antes da execução dessa linha. Dessa maneira,
poderemos analisar as condições das variáveis que podem gerar o erro.
Selecione o item Add Watch... do menu Run. Preencha o campo Expression com o nome da
variável que deverá ser inspecionada. Repita o processo para todas as variáveis desejadas.
A figura anterior mostra que a variável 𝑑 foi calculada como esperado, ou seja,
√𝑏 2 − 4 ∙ 𝑎 ∙ 𝑐. Como os valores 𝑥1 e 𝑥2 ainda não foram calculados, são exibidos valores
remanescentes dos espaços de memória.
Analisando o valor 𝑑 = −8 podemos concluir que esse valor irá gerar um erro quando a raiz
quadrada for calculada, uma vez que √−8 não possui solução real.
Pressionando a tecla F7, que executa apenas a instrução em destaque, a linha que calcula 𝑥1
será executada e, como previsto, será gerado um erro.
Para interromper a execução do programa, clique novamente no item Program Reset do
menu Run.
Button1Click
Início
a, b, c
d ← sqr(b)-4*a*c
False True
d >= 0
x1 ← (-b+sqrt(d))/(2*a)
‘Não existem
x2 ← (-b-sqrt(d))/(2*a)
raízes reais.’
x1, x2
Fim
Serão apresentados componentes visuais, componentes que fazem a chamada para algumas
funções do Windows, além de estruturas de dados que facilitam o uso e armazenamento de
cores e datas, além de permitir a impressão dos valores obtidos pelo aplicativo.
1. Componentes Visuais
1.1. ComboBox
Propriedades e eventos
b) para descobrir qual dos itens foi selecionado, pode-se usar uma estrutura condicional
caso. A expressão que será verificada será a propriedade ItemIndex, que retorna o
valor inteiro da posição 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 posição selecionada, como faríamos em uma variável indexada.
TextoSelecionado := ComboBox1.Items[ComboBox1.ItemIndex];
TextoSelecionado := ComboBox1.Text;
Veja a aparência do objeto quando o usuário clica sobre o botão 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 criação de
desenhos em tempo de execução, nos atentaremos a uma característica mais simples,
utilizando-o apenas para exibir uma imagem armazenada em arquivo. Em tempo de
execução as linhas tracejadas que o contornam não são exibidas.
Propriedades
a) Para carregar uma imagem de um arquivo devemos indicar todo o caminho físico
dessa imagem. Isso deve ser feito clicando no botão com três pontos da propriedade
Picture do Object Inspector.
Depois devemos clicar em Load... e selecionar a figura. Para aceitar clique sobre o
botão OK.
b) Caso o resultado não seja esperado, ou seja, a imagem original é maior do que a
janela criada pelo Image no formulário, podemos definir o valor True para a
propriedade Proportinoal no Object Inspector. Veja a diferença nas imagens
quando o valor False (esquerda) e True (direita) estão aplicados na propriedade
Proportional.
1.3. SpinEdit
Propriedades
a) para obter o valor do SpinEdit devemos acessar a propriedade Value, que retorna
um valor inteiro e não texto, como todos os outros apresentados. Veja o exemplo,
considerando que a variável n foi declarada inteira.
n := SpinEdit1.Value;
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.
Por exemplo, podemos criar várias abas, uma para cadastro de clientes, outra para consulta
de preços e outra para efetuar o balanço do dia. Todas estão relacionadas com as
informações de um comércio qualquer, mas são utilizadas em momentos diferentes do dia.
Isso permite que o formulário possua uma apresentação melhor, sem uma quantidade
absurda de objetos que não são utilizados para a maior parte das tarefas.
Para criar uma aba, denominada TabSheet, clique sobre o PageControl com o botão
direito do mouse e selecione New Page. Repita a operação quantas vezes forem
necessárias.
O exemplo a seguir podemos ver que foram criados dois ambientes, um em cada aba do
PageControl. Note que a numeração dos objetos é contínua em todo o formulário, ou
seja, no TabSheet2 foi criado o Edit2, pois existem dois Edits no programa.
1.5. Chart
O primeiro passo para criar uma curva é dar um duplo clique sobre o componente Chart,
posicionado no formulário. Isso faz com que a janela Editing Chart1 seja exibida, como na
figura a seguir.
Ao clicar sobre o botão Add... uma nova série será criada. Neste momento, é necessário
decidir qual tipo de gráfico será utilizado. Para o exemplo, escolha Line e remova a seleção
da opção 3D. essa opção não cria um gráfico que representa três dimensões, é apenas um
efeito visual de profundidade. Depois disso, clique em OK.
Veja que a Series1 foi criada. Quando criarmos o código-fonte que dá forma a série devemos
alterar as propriedades desse objeto. Além disso, podemos repetir esse passo e criar várias
séries. Isso torna possível criar várias curvas em uma única janela.
A série está pronta para ser utilizada, entretanto podemos configurar alguns itens para que o
gráfico traga mais informações.
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 faça o mesmo, escrevendo “Valores de
x”. Agora que os eixos das abscissas e ordenadas possuem uma designação, faremos o
mesmo com o ambiente do gráfico, clicando na aba Titles, como mostra a figura a seguir.
Em gráficos com mais de uma série é conveniente manter uma legenda que relaciona as
cores das linhas com as séries. No exemplo esse recurso será desabilitado, clicando sobre o
item Visible da aba Style da aba Legend.
Existem muitas outras configurações que podem ser realizadas no assistente de criação das
séries, como, por exemplo, gráficos com eixos invertidos ou em escala logarítmica.
Após concluirmos as configurações, devemos clicar em Close.
Finalmente vamos criar o código-fonte, em um botão, por exemplo, que irá traçar uma curva
específica. No caso, vamos desenhar a função 𝑦 = 𝑒 −𝑥 ∙ 𝑠𝑒𝑛(10 ∙ 𝑥) para o intervalo [0; 4]
da abscissa.
Compare o código-fonte com o seu fluxograma. Note que a o uso do componente nada mais
é do que a exibição das coordenadas dos pontos, y e x, nesta ordem.
Button1Click
Início
xi ← 0
xf ← 4
n ← 100
dx ← (xf-xi)/n
x ← xi
Enquanto
x < x+dx Faça
y ← exp(-x)*sin(10*x)
y, x
x ← x + dx
Fim Enquanto
Fim
2. Manipulação de Arquivos
2.1. OpenDialog
Propriedades
a) InitialDir: é uma propriedade do tipo texto que recebe um caminho que pode
ser do disco rígido 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 usuário clica sobre o
botão Abrir e False quando o usuário cancela a operação;
c) FileName: é a propriedade que armazena o caminho do arquivo informado.
3. Manipulação de Cores
3.1. TColor
O TColor é um tipo, assim como o String ou o Integer. Sua modelagem interna permite
armazenar um número inteiro suficientemente grande para manipular as mais de dezesseis
milhões de cores.
Uma vez criada uma variável do tipo TColor, ela pode ser preenchida de duas maneiras
distintas:
Assim como outros tipos de variável, o TColor pode compor campos de registros (record)
criados para a manipulação de arquivos.
3.2. ColorDialog
Esse componente está na aba Dialog da barra de componentes. Assim como o componente
OpenDialog, o ColorDialog somente está visível ao usuário quando executado.
Possui uma região de cores predefinidas e outra para que o usuário possa escolher a cor
visualmente, seja pela percepção, por valores de Matiz, Saturação e Brilho ou as
componentes dos canais Vermelho, Verde e Azul.
Propriedades
3.3. Shape
Propriedades e eventos
a) para escolher a forma do objeto, escolha uma das opções da propriedade Shape no
Object Inspector;
Shape1.Brush.Color := clBlue;
O exemplo a seguir mostra como criar uma interface para a entrada de dados em forma de
cor. Em seu formulário, 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 região será digitado o código-fonte que fará a leitura e exibição da
cor escolhida pelo usuário.
4. Manipulação de Datas
4.1. TDateTime
O tipo TDateTime é uma estrutura de dados que permite armazenar um valor numérico sob
a forma de data, contendo dia, número da semana, mês, ano, hora, minuto, segundo e
milésimo de segundo.
Delphi XE – Guia de Componentes
40
Assim como outros tipos de variável, o TDateTime pode compor campos de registros
(record) criados para a manipulação de arquivos.
É possível exibir os dados de uma variável do tipo TDateTime de três maneiras distintas
nos objetos apresentados até o momento, bastando fazer a conversão para texto. Veja o
exemplo, considerando que a variável data indica o dia 12.11.1955 e a hora 22:04:00.
4.2. Now
A função Now retorna a data e hora do instante em que foi executada, no formato tipo
TDateTime, com precisão da ordem de milésimo de segundo.
Essa função é muito utilizada em aplicativos que medem o tempo de execução de algoritmos
ou aplicativos que fazem cálculos com datas e horas, como por exemplo, aplicativos para
hotéis, estacionamentos e outros.
Veja o exemplo de como obter o valor da data e hora atual do computador. Considere que a
variável Data, do tipo TDateTime foi declarada como no exemplo anterior.
Data := Now;
Existem algumas funções que retornam valores inteiros da diferença entre dois instantes de
tempo distintos. Para utilizar essas funções é necessário declarar a biblioteca DateUtilis.
Uses DateUtils;
A tabela a seguir relaciona as funções com a unidade de tempo calculada. Todas as funções
recebem como parâmetro o instante final e o instante inicial, nessa ordem, sob a forma de
um valor do tipo TDateTime.
c := 0; // comprimento inicial
xa := 0; // início do domínio
dx := 1/10000000; // incremento de x
while xa+dx <= 1 do // até valor final
begin
x := xa + dx; // posição futura
y := sqr(x);
c := c + sqrt(sqr(x-xa)+sqr(y-ya)); // calcula comprimento
xa := xa + dx; // incrementa posição atual
ya := sqr(xa);
end;
4.4. DateTimePicker
Note que o componente, na sua forma compacta exibe uma data, entretanto, quando o
usuário clica sobre o botão com a seta, o componente se abre e permite a escolha de uma
nova data. Note que existe uma indicação da data atual na forma expandida.
Propriedades
a) A propriedade DateTime pode ser lida ou receber uma informação. Essa informação
é 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 após 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.
5. Navegação na Internet
É possível fazer com que suas aplicações acessem sites de maneira muito simples. Como
exemplo, será apresentado como fazer um aplicativo acessar informações cartográficas
utilizando o Google Maps.
5.1. WebBrowser
Métodos
O exemplo a seguir mostra como acessar um site cujo endereço foi digitado no componente
Edit1.
Neste outro exemplo vamos mostrar como usar o parâmetro do Nagivate para apresentar
mapas no aplicativo. Será utilizada uma String que possui dois parâmetros: Local e Zoom.
Segundo a documentação da API do Google Maps, o parâmetro Zoom deve ser um valor
inteiro, mas escrito sob a forma de String, entre 0 e 21.
Uma vez que a aplicação ou o usuário definiram os valores dos parâmetros Local e Zoom,
basta fazer o chamado da página, utilizando o método Navigate.
6. Impressão
Cabe lembrar que a impressão também deve ser expressa na forma de fluxograma. Desta
maneira, quando desejamos imprimir o nome, o endereço e a idade de uma pessoa,
utilizamos a seguinte representação.
6.1. Print
Uma solução simples, entretanto não usual em virtude da sua apresentação visual, consiste
em utilizar a propriedade Print do próprio formulário.
Isso faz com que todo o formulário, desde os botões até a barra com os botões maximizar e
minimizar sejam impressas na impressora padrão do usuário.
Form1.Print;
A principal diferença entre as duas abas consiste na característica dos componentes da aba
Standard serem imutáveis durante a execução do aplicativo em Delphi, enquanto que na
aba Report, o conteúdo dos componentes podem ser alterados, permitindo exibir, por
exemplo, os valores calculados pelo aplicativo.
O exemplo a seguir mostra a criação de um relatório contendo uma imagem e três textos,
sendo um fixo e os outros dois preenchidos por um aplicativo.
b) para definir esses parâmetros, clique sobre o item Report1 da árvore do projeto e
depois sobre o botão com três pontos do item Parameters do Object Inspector.
c) a janela Strings Editor será exibida. Digite o nome dos dois parâmetros desejados.
Vale ressaltar que os parâmetros no Rave Reports são textos e não precisam seguir as
regras para criação de variáveis, ou seja, podem possuir caracteres especiais e
espaços. Depois disso clique em OK;
É possível concatenar um texto fixo com parâmetros, somando strings. Para tal,
vamos escrever um texto antes do parâmetro no Data Text. Não se esqueça de
utilizar apóstrofos para delimitar o texto.
De volta ao Delphi, vamos criar um botão que irá fazer o chamado ao relatório de impressão
criado no Rave Reports. Para tal, acrescente ao formulário um componente RvProject, da
aba Rave.
Com o objeto RvProject1 selecionado, clique sobre o botão com os três pontos da
propriedade ProjectFile no Object Inspector e escolha o arquivo criado no Rave Reports.
Lembre-se que a extensão desse arquivo é rav.
Depois disso, devemos criar o código-fonte do botão que preencherá os campos do relatório
e o exibirá. A mecânica de funcionamento do objeto RvProject é a seguinte: