Você está na página 1de 24

Projeto Controle de Pedidos

Neste projeto iremos pôr em prática nossos conhecimentos a respeito do Delphi através da
elaboração de um mini-aplicativo que terá como objetivo controlar os pedidos dos clientes de uma
empresa de representações. Para isto, o sistema deverá permitir:
 Cadastro dos clientes
 Cadastro dos produtos
 Emissão dos pedidos dos clientes
Siga os procedimentos abaixo para efetuar a criação do aplicativo desde a criação do banco de
dados, passando pela conexão ODBC para acessar o banco até a criação da aplicação completa
incluindo relatórios.

CRIAÇÃO DO BANCO DE DADOS

1. Abra o Windows Explorer e crie uma pasta denominada Controle de Pedidos no local de sua
preferência.

2. Abra o MS-Access, crie um banco de dados em branco denominado Pedidos.mdb dentro da pasta
criada anteriormente.

3. Crie as tabelas abaixo definindo as chaves primárias e relacionando as tabelas conforme ilustrado
a seguir:

Ilustração 1 - Tabela de Clientes

Ilustração 2 - Tabela de Produtos


Ilustração 3 - Tabela de Pedidos

Ilustração 4 - Tabela de Itens do Pedido

Ilustração 5 - Relacionamento entre as tabelas do Banco

Obs.: Altere o relacionamento entre as tabelas Pedidos e ItensPedido selecionando a opção para
“Propagar exclusão dos itens relacionados”. Isto irá fazer com que, ao excluir um registro da tabela
Pedidos, automaticamente sejam excluídos os registros relacionados na tabela ItensPedido.

Ilustração 6 - Propagando exclusão dos itens relacionados

4. Saia do Access, acesse o painel de controle, abra o item Ferramentas Administrativas, abra o item
Fontes de dados (ODBC). Dê um clique no botão Adicionar e na janela que aparece, selecione o
tipo de banco de dados que estamos usando neste projeto e clique em Concluir, conforme ilustra a
figura.
Ilustração 7 - Selecionando o driver para Access

5. Digite o nome da fonte de dados PEDIDOS e selecione o arquivo de banco de dados clicando no
botão Selecionar, conforme ilustra a figura.

Ilustração 8 - Criação da fonte de dados ODBC

CRIAÇÃO DO APLICATIVO

1. Abra o Delphi e salve a aplicação em branco clicando em File / Save all. Atribua os seguintes
nomes de arquivo:

Unit1  UPrincipal
Project1  SisPed

2. Configure as propriedades para o formulário em branco inserido automaticamente na aplicação


Caption = Sistema de Controle de Pedidos
Icon = <à gosto>
Name = FrmPrincipal
WindowState = wsMaximized

3. Insira um componente MainMenu (paleta Standard) dentro do formulário e dê um duplo clique


sobre o mesmo. Isto irá exibir uma janela denominada Menu Designer, onde iremos projetar a barra
de menus da nossa aplicação. Crie a seguinte estrutura de menus e em seguida saia do menu
designer. O resultado produzido deverá ficar semelhante à figura a seguir:

Ilustração 9 - Menu Cadastro

Ilustração 10 - Menu Movimento

Ilustração 11 - Menu Relatórios

CRIANDO O DATA MODULE (MODULO DE DADOS)

1. Clique no menu File / New / Data Module. Altere a propriedade Name do Data Module para DM
e salve-o dentro da pasta do projeto com o nome UDM.

2. Insira dentro do Data Module um componente ADOConnection (paleta ADO) e configure suas
propriedades LoginPrompt para False e Name para Conexao. A seguir dê um duplo clique sobre o
mesmo para configurarmos a conexão com o banco. Clique no botão Build e a seguir seleciona o
provedor Microsoft OLEDB Provider for ODBC Drivers e clique em Avançar. Selecione a fonte de
dados PEDIDOS, marque a opção para definir a senha em branco e clique no botão Testar conexão.
Clique nos botões Ok para fechar todas as janelas.
Ilustração 12 - Selecionando a fonte de dados ODBC

3. Insira um componente ADOTable (paleta ADO) e altere suas propriedades:


Connection = Conexao
Name = TblClientes
TableName = Clientes

4. Dê um duplo clique no componente TblClientes e adicione todos os campos do banco de dados.


Configure adequadamente a máscara do campo Telefone (propriedade EditMask).

5. Insira mais três componentes ADOTable (paleta ADO) e altera suas propriedades. Adicione
todos os campos para cada um dos componentes inseridos.
ADOTable1
Connection = Conexao
Name = TblProdutos
TableName = Produtos
ADOTable2
Connection = Conexao
Name = TblPedidos
TableName = Pedidos
ADOTable3
Connection = Conexao
Name = TblItensPedido
TableName = ItensPedido
6. Insira quatro componentes DataSource (paleta Data Access) e configure as suas propriedades.
DataSource1
DataSet = TblClientes
Name = DsClientes
DataSource2
DataSet = TblProdutos
Name = DsProdutos
DataSource3
DataSet = TblPedidos
Name = DsPedidos
DataSource4
DataSet = TblItensPedido
Name = DsItensPedido

O Data Module deverá ficar semelhante a figura a seguir.

Ilustração 13 - Data Module com os componentes de conexão


7. Selecione o componente TblItensPedido. Clique na propriedade MasterSource e selecione
DsPedidos. Selecione a propriedade MasterFields, clique no botão e estabeleça a ligação entre as
tabelas Pedidos e ItensPedido (selecione o campo CodPedido em ambas as listas e clique no botão
Add). Clique em Ok para confirmar.

Ilustração 14 - Ligando as tabelas Pedidos e ItensPedido


8. Dê um duplo clique no fundo do Data Module para criar um procedimento para o evento
OnCreate (ou seja quando o objeto for criado na memória), ideal para abrirmos as conexões com o
banco de dados e as tabelas e digite:

procedure TDM.DataModuleCreate(Sender: TObject);


begin
Conexao.Open;
TblClientes.Open;
TblProdutos.Open;
TblPedidos.Open;
TblItensPedido.Open;
end;

Obs: Digite apenas as linhas em negrito dentro do bloco Begin/End do procedimento.

CRIANDO O FORMULÁRIO DE MODELO PARA CADASTROS

1. Clique no menu File / New / Form. Altera as propriedades para este novo formulário.

BorderIcons.biMaximize = False
BorderIcons.biMinimize = False
BorderStyle = bsSingle
Caption = Modelo de Cadastro
FormStyle = fsMDIChild
KeyPreview = True
Name = FrmModeloCadastro
Position = poScreenCenter
OnClose: Action := cafree;
2. Salve este formulário na pasta da aplicação com o nome UModeloCadastro.

3. Adicione neste formulário os componentes ImageList e ToolBar (paleta Win32). Configure a


propriedade Name do ImageList para ImgBotoes. Dê um duplo clique no ImageList e carregue as
figuras abaixo, que irão compor a barra de ferramentas do formulário.

Ilustração 15 - Imagens dos botões da barra de ferramentas

4. Altere a propriedade Name do componente ToolBar para TbrFerramentas e configure a


propriedade Images para ImgBotoes. Altere, também, a propriedade EdgeBorders.ebBottom para
True. A seguir, dê um clique com o botão direito do mouse sobre a ToolBar e clique em New
Button. Repita o procedimento para cada um dos demais botões. Altere a propriedade Name de cada
um dos botões de acordo com a listagem abaixo:
Componente Name
ToolButton1 BtnPrimeiro
ToolButton2 BtnAnterior
ToolButton3 BtnProximo
ToolButton4 BtnUltimo
ToolButton5 BtnNovo
ToolButton6 BtnSalvar
ToolButton7 BtnExcluir
ToolButton8 BtnPesquisar
ToolButton9 BtnSair

5. Pressione F12 para ter acesso à janela de código do formulário. Localize a seção uses no início do
arquivo. Acrescente à lista já definida a biblioteca DB. A seguir, localize a seção public e declare,
logo abaixo as variáveis a seguir:

Tabela: TDataSet;
CampoPesquisa: String;

6. Alterne para o formulário, dê um duplo clique no botão BtnPrimeiro e digite as linhas de código a
seguir:

procedure TFrmModeloCadastro.BtnPrimeiroClick(Sender: TObject);


begin
Tabela.First;
end;

7. Alterne para o formulário, dê um duplo clique no botão BtnAnterior e digite as linhas de código a
seguir:

procedure TFrmModeloCadastro.BtnAnteriorClick(Sender: TObject);


begin
if (Tabela.Bof=False) then
begin
Tabela.Prior;
end;
end;

8. Alterne para o formulário, dê um duplo clique no botão BtnProximo e digite as linhas de código a
seguir:

procedure TFrmModeloCadastro.BtnProximoClick(Sender: TObject);


begin
if (Tabela.Eof=False) then
begin
Tabela.Next;
end;
end;

9. Alterne para o formulário, dê um duplo clique no botão BtnUltimo e digite as linhas de código a
seguir:

procedure TFrmModeloCadastro.BtnUltimoClick(Sender: TObject);


begin
Tabela.Last;
end;

10. Alterne para o formulário, dê um duplo clique no botão BtnNovo e digite as linhas de código a
seguir:

procedure TFrmModeloCadastro.BtnNovoClick(Sender: TObject);


begin
Tabela.Insert;
end;

11. Alterne para o formulário, dê um duplo clique no botão BtnSalvar e digite as linhas de código a
seguir:

procedure TFrmModeloCadastro.BtnSalvarClick(Sender: TObject);


begin
if (Tabela.State=dsInsert) or (Tabela.State=dsEdit) then
begin
Tabela.Post;
end;
end;

12. Alterne para o formulário, dê um duplo clique no botão BtnExcluir e digite as linhas de código a
seguir:

procedure TFrmModeloCadastro.BtnExcluirClick(Sender: TObject);


var resp: integer;
begin
if (Tabela.RecordCount=0) then
begin
Showmessage('Não há dados para excluir');
end
else
begin
resp := MessageDlg('Confirma exclusão?',mtConfirmation,[mbyes,mbno],0);
if (resp=mryes) then
begin
Tabela.Delete;
Showmessage('Registro excluído com sucesso!');
end;
end;
end;
13. Alterne para o formulário, dê um duplo clique no botão BtnPesquisar e digite as linhas de
código a seguir:

procedure TFrmModeloCadastro.BtnPesquisarClick(Sender: TObject);


var ValorPesquisa: String;
Achou: Boolean;
begin
ValorPesquisa := InputBox('Pesquisa','Digite o valor da pesquisa','');
if (ValorPesquisa<>'') then
begin
Achou := Tabela.Locate(CampoPesquisa,ValorPesquisa,[LoPartialKey]);
if (Achou=False) then
begin
Showmessage('Registro não encontrado!');
end;
end;
end;

14. Alterne para o formulário, dê um duplo clique no botão BtnSair e digite as linhas de código a
seguir:

procedure TFrmModeloCadastro.BtnSairClick(Sender: TObject);


begin
Close;
end;

O formulário deverá ficar semelhante à figura a seguir:

Ilustração 16 - Modelo de formulário para os cadastros do sistema

CADASTRO DE CLIENTES

1. Clique no menu File / New / Other. Clique na guia SisPed, selecione a opção
FrmModeloCadastro e clique no botão Ok. Isto irá criar um novo formulário seguindo o modelo
definido a partir do formulário FrmModeloCadastro, incluindo a programação dos botões, já
definida. Este recurso é denominado Herança Visual de Formulários e ajuda bastante o processo
de desenvolvimento.
2. Altere as propriedades Caption e Name do formulário recém inserido para Cadastro de Clientes e
FrmClientes. Salve este formulário com o nome UClientes dentro da pasta do projeto.

3. Insira os seguintes componentes dentro do formulário

Ilustração 17 - Componentes usados no cadastro de clientes

4. Iremos criar uma referência ao Data Module para permitir configurar os componentes de acesso a
dados. Clique no menu File / Use Unit. Na janela que aparece, selecione a unit do Data Module
(UDM) e clique em OK.

Ilustração 18 - Criando a referência ao Data Module da aplicação

5. Configure cada componente de acesso a dados para acessar os respectivos campos. Por exemplo,
selecione o componente DBText1. Configure a propriedade DataSource para DM.DsClientes e a
propriedade DataField para CodCliente. Repita o procedimento para todos os demais componentes.

6. Selecione o componente DBComboBox1. Insira a lista dos estados dentro da propriedade Items e
configure as propriedades Style para csDropDownList e Sorted para True.

7. Crie um procedimento para o evento OnShow do formulário e digite as seguintes linhas de


código:

procedure TFrmClientes.FormShow(Sender: TObject);


begin
inherited;
Tabela := DM.TblClientes;
CampoPesquisa := 'RazaoSocial';
DBEdit1.SetFocus;
end;

8. Abra o formulário principal, dê um clique no menu Cadastro / Clientes para criar um


procedimento de evento para este item de menu. Digite a linha de código abaixo:

procedure TFrmPrincipal.MnuClientesClick(Sender: TObject);


begin
if (FrmCadClientes = nil) then
begin
Application.CreateForm(TFrmClientes, FrmCadClientes);
FrmClientes.Show;
end
else
FrmClientes.Show;

FrmClientes.WindowState := wsNormal;
end;

No evento Onclose do formulário de clientes, digite: FrmClientes := nil;

9. Pressione F9 para compilar a aplicação. Irá aparecer o aviso abaixo, perguntando se desejamos
que o Delphi crie uma referência no formulário FrmPrincipal para o formulário FrmClientes. Clique
no botão Yes e pressione novamente F9 para rodar a aplicação.

Ilustração 19 - Criando referência para o formulário de clientes

O resultado da aplicação encontra-se logo abaixo:


Ilustração 20 - Testando a aplicação

A janela de cadastro de produtos fica como exercício.

EMISSÃO DE PEDIDOS

1. Clique no menu File / New / Other. Clique na guia SisPed, selecione a opção
FrmModeloCadastro e clique no botão Ok.

2. Altere as propriedades Caption e Name do formulário recém inserido para Emissão de Pedidos e
FrmPedidos. Salve este formulário com o nome UPedidos dentro da pasta do projeto.

3. Insira os seguintes componentes dentro do formulário.


Ilustração 21 - Componentes da janela de emissão de pedidos

4. Iremos criar uma referência ao Data Module para permitir configurar os componentes de acesso a
dados. Clique no menu File / Use Unit. Na janela que aparece, selecione a unit do Data Module
(UDM) e clique em OK.

5. Configure os componentes de acordo com a relação abaixo:


DBText1
DataSource = DM.DsPedidos
DataField = CodPedido
DBLookUpComboBox1
DataSource = DM.DsPedidos
DataField = CodCliente
ListSource = DM.DsClientes
ListField = RazaoSocial
KeyField = CodCliente
DBEdit1
DataSource = DM.DsPedidos
DataField = Data
GroupBox1
Caption = Itens do Pedido
Edit1
Name = EdtProduto
Text = <vazio>
Edit2
Name = EdtQuant
Text = <vazio>
SpeedButton1
Name = BtnPesquisa
DBGrid1
DataSource = DM.DsProdutos
Options
dgRowSelect = True
dgAlwaysShowSelection = True
DBGrid2
DataSource = DM.DsItensPedido
Options
dgRowSelect = True
dgAlwaysShowSelection = True
Button1
Caption = &Incluir
Name = BtnIncluir
Button2
Caption = &Remover
Name = BtnRemover
DBText2
DataSource = DM.DsPedidos
DataField = Total

6. Abra o Data Module (File / Open ou View / Forms). Dê um duplo clique no componente
TblItensPedido. Clique com o botão direito no Editor de Campos e clique no comando New Field.
Na janela que aparece, preencha as informações ilustradas na figura abaixo e clique no botão Ok:
Ilustração 22 - Parâmetros para criação do campo "Lookup"

7. Na janela do Editor de campos, dê novamente um clique com o botão direito e clique no


comando New Field. Desta vez, informe os valores conforme a figura abaixo:

Ilustração 23 - Parâmetros para criação do campo "Calculado"

8. Volte para a janela de Pedidos (FrmPedidos). Dê um duplo clique no componente DBGrid1. Irá
aparecer a janela do Editor de Colunas (figura abaixo). Clique duas vezes no botão , para inserir
duas colunas no Grid.
Ilustração 24 - Editor para personalizar as colunas do DBGrid

9. Configure cada coluna de acordo com a listagem abaixo:


Coluna 0
FieldName = CodProduto
Title
Caption = Código
Coluna 1
FieldName = Descricao
Title
Caption = Descrição

10. Ajuste as colunas do Grid para que fique semelhante à figura a seguir:

Ilustração 25 - DBGrid para pesquisa dos produtos configurado

11. Dê um duplo clique no componente DBGrid1. Irá aparecer a janela do Editor de Colunas (figura
abaixo). Clique quatro vezes no botão , para inserir duas colunas no Grid. Ajuste as propriedades
FieldName e Title.Caption de forma que o Grid fique semelhante à figura a seguir:

Ilustração 26 - DBGrid dos itens do pedido configurado

Ao final destes passos, a janela de emissão de pedidos ficará semelhante à figura a seguir:
Ilustração 27 - Layout da janela de emissão de pedidos

12. Pressione F12 para ter acesso à janela de código do formulário. Localize a seção uses no início
do arquivo. Acrescente à lista já definida a biblioteca DB.

13. Ainda na janela de código, localize a seção private e logo abaixo declare o seguinte
procedimento:

procedure CalcularTotal;

14. Com o cursor nesta linha de código, pressione CTRL+SHIFT+C para criar o corpo do
procedimento abaixo da linha implementation. Digite as linhas de código a seguir dentro do corpo
do procedimento:

procedure TFrmPedidos.CalcularTotal;
var Soma: double;
begin
Soma := 0;
DM.TblItensPedido.First;
while (DM.TblItensPedido.Eof=False) do
begin
Soma := Soma + (DM.TblItensPedido.FieldByName('Quant').Value *
DM.TblItensPedido.FieldByName('Valor').Value);
DM.TblItensPedido.Next;
end;
Tabela.Edit;
Tabela.FieldByName('Total').Value := Soma;
Tabela.Post;
end;
15. Crie um procedimento para o evento OnShow do formulário e digite as seguintes linhas de
código:

procedure TFrmPedidos.FormShow(Sender: TObject);


begin
inherited;
Tabela := 'Pedidos';
CampoPesquisa := 'CodPedido';
end;

16. Dê um duplo clique no SpeedButton BtnPesquisa e digite as seguintes linhas de código:

procedure TFrmPedidos.BtnPesquisaClick(Sender: TObject);


var Achou: Boolean;
begin
inherited;
if (EdtProduto.Text<>'') then
begin
Achou := DM.TblProdutos.Locate('Descricao',EdtProduto.Text,[LoPartialKey]);
if (Achou=False) then
begin
Showmessage('Produto não encontrado');
end
else
begin
EdtQuant.Text := '1';
end;
end;
end;

17. Crie um procedimento para o evento OnCellClick do componente DBGrid1 e digite as seguintes
linhas de código:

procedure TFrmPedidos.DBGrid1CellClick(Column: TColumn);


begin
inherited;
EdtQuant.Text := '1';
end;

18. Dê um duplo clique no botão BtnIncluir e digite as seguintes linhas de código:

procedure TFrmPedidos.BtnIncluirClick(Sender: TObject);


var resp: integer;
begin
inherited;
if (Tabela.State=dsInsert) or (Tabela.State=dsEdit) then
begin
Tabela.Post;
Tabela.Refresh;
end;
resp := MessageDlg('Incluir produto no pedido?', mtConfirmation, [mbyes,mbno],0);
if (resp=mryes) then
begin
DM.TblItensPedido.Insert;
DM.TblItensPedido.FieldByName('CodProduto').Value :=
DM.TblProdutos.FieldByName('CodProduto').Value;
DM.TblItensPedido.FieldByName('Quant').Value := EdtQuant.Text;
DM.TblItensPedido.FieldByName('Valor').Value :=
DM.TblProdutos.FieldByName('ValorUnit').Value;
DM.TblItensPedido.Post;
CalcularTotal;
end;
end;

19. Dê um duplo clique no botão BtnRemover e digite as seguintes linhas de código:

procedure TFrmPedidos.BtnRemoverClick(Sender: TObject);


var resp: integer;
begin
inherited;
if (DM.TblItensPedido.RecordCount=0) then
begin
Showmessage('Não há itens no pedido para excluir!');
end
else
begin
resp := MessageDlg('Excluir produto do pedido?',mtConfirmation,[mbyes,mbno],0);
if (resp=mryes) then
begin
DM.TblItensPedido.Delete;
CalcularTotal;
end;
end;
end;

20. Abra o Data Module (File / Open ou View / Forms). Selecione o componente TblItensPedido e
crie um procedimento para o evento OnCalcFields. Digite as seguintes linhas de código:

procedure TDM.TblItensPedidoCalcFields(DataSet: TDataSet);


begin
if (TblItensPedido.FieldByName('Quant').IsNull=False) and
(TblItensPedido.FieldByName('Valor').IsNull=False) then
begin
TblItensPedido.FieldByName('Total').Value :=
TblItensPedido.FieldByName('Quant').Value *
TblItensPedido.FieldByName('Valor').Value;
end;
end;

21. Ainda no Data Module, selecione o componente TblPedidos e crie um procedimento para o
evento AfterInsert. Digite as seguintes linhas de código:

procedure TDM.TblPedidosAfterInsert(DataSet: TDataSet);


begin
TblPedidos.FieldByName('Data').Value := Date;
end;

Obs.: Compile a sua aplicação e, de preferência, execute-a “fora” do Delphi. Isto impedirá que
mensagens desagradáveis do compilador apareçam durante o teste da aplicação, fazendo com que a
máquina trave com o tempo.
CRIANDO O RELATÓRIO DE CLIENTES

1. Crie um novo formulário (File / New / Form). Altere a propriedade Name deste formulário para
FrmRelClientes e salve-o como URelClientes dentro da pasta da aplicação.

2. Insira dentro do formulário um componente QuickRep (paleta QReport). Altere sua propriedade
Name para QrpClientes.

Ilustração 28 - Componente QuickRep dentro do formulário

3. Dê um duplo clique no componente QrpClientes e marque as opções ilustradas na figura abaixo:

Ilustração 29 - Opções do relatório

4. Iremos criar uma referência ao Data Module para permitir configurar os componentes de acesso a
dados. Clique no menu File / Use Unit. Na janela que aparece, selecione a unit do Data Module
(UDM) e clique em OK.
5. Altere a propriedade DataSet selecionando o item DM.TblClientes.

6. Insira dentro da seção Page Header (cabeçalho da página) um componente QRLabel (paleta
QReport). Altere sua propriedade Caption para Sistema de Controle de Pedidos. Formate a fonte
deste componente à gosto.

7. Insira dentro da seção Title (título do relatório) um componente QRLabel. Altere sua propriedade
Caption para Relatório de Clientes. Altere suas propriedades Alignment para taCenter e
AlignToBand para True. Formate a fonte deste componente à gosto.

8. Insira dentro da seção Column Header (cabeçalho das colunas) seis componentes QRLabel.
Configure as propriedades Caption destes componentes, segundo a figura a seguir.

Ilustração 30 - QRLabel's inseridos na seção Column Header

9. Insira dentro da seção Detail (detalhe do relatório) seis componentes QRDBText. Organize-os
para que fiquem na mesma direção dos componentes QRLabel’s inseridos na seção logo acima.

Ilustração 31 - QRDBText's inseridos na seção Detail

10. Configure as propriedades DataSet e DataField de cada um dos componentes QRDBText para
que acessem os respectivos campos da tabela de clientes (componende DM.TblClientes).

11. Insira dentro da seção Summary um componente QRSysData. Altere suas propriedades Data e
Text para qrsDetailCount e Total de clientes:, respectivamente

12. Insira dentro da seção Page Header, dois componentes QRSysData no canto superior esquerdo,
um acima do outro.

Ilustração 32 - Componentes QRSysData inseridos na seção Page Header

13. Configure os componentes QRSysData inseridos anteriormente de acordo com a listagem


abaixo:
1º QRSysData
Alignment = taRightJustify
AlignToBand = True
Data = qrsDate
2º QRSysData
Alignment = taRightJustify
AlignToBand = True
Data = qrsDate
Text = Página

14. Selecione a seção Column Header. Dê um clique no botão “+” ao lado da propriedade Frame.
Altere a propriedade DrawBottom para True.

15. Selecione a seção Summary. Dê um clique no botão “+” ao lado da propriedade Frame. Altere a
propriedade DrawTop para True.

O resultado final ficará semelhante a figura a seguir:

Ilustração 33 - Relatório pronto para ser visualizado

16. Abra o formulário principal (Open / File ou View / Forms). Dê um clique no menu Relatórios /
Clientes, para criar um procedimento de evento para este item de menu. Digite as linhas de código
abaixo:

procedure TFrmPrincipal.MnuRelClientesClick(Sender: TObject);


begin
FrmRelClientes.QrpClientes.Preview;
end;

17. Compile e rode a aplicação. Clique no menu Relatórios / Clientes e veja o resultado.
Ilustração 34 - Relatório sendo exibido no vídeo

Você também pode gostar