Professional Documents
Culture Documents
Autor:
Adalberto Vieira do Nascimento
NDICE:
Como construir um sistema utilizando Delphi?.........................................................................
Como criar uma nova aplicao no Delphi?..............................................................................
Como salvar a aplicao no Delphi?..........................................................................................
Como alterar as propriedades da tela? ......................................................................................
Como executar a aplicao no Delphi? .....................................................................................
Como fechar a aplicao? .........................................................................................................
Como abrir a aplicao? ............................................................................................................
Como inserir uma imagem na tela? ..........................................................................................
Como criar uma tela de splash? ................................................................................................
Como criar uma lista de aes? ................................................................................................
Como criar um menu de opes? ..............................................................................................
Como inserir uma lista de imagens? .........................................................................................
Como criar uma barra de ferramentas? .....................................................................................
Como criar uma barra de status do sistema? .............................................................................
Como inserir data e hora na barra de status do sistema? ..........................................................
Como pedir confirmao ao fechar tela na aplicao?..............................................................
Como criar uma nova tela na aplicao?...................................................................................
Como remover uma tela da aplicao?......................................................................................
Como preparar o banco de dados para ser usado no sistema? ..................................................
Como criar uma tela de login do sistema? ................................................................................
Como alterar a Main Form do sistema? ....................................................................................
Como criar uma tela padro? ....................................................................................................
Como utilizar uma tela padro do sistema? ..............................................................................
Como utilizar um DBGrid? .......................................................................................................
Como utilizar um DBNavigator? ..............................................................................................
Como inserir campos de uma tabela na tela? ............................................................................
Como chamar uma tela no Delphi? ...........................................................................................
Como criar uma tela manualmente na aplicao? .....................................................................
Como criar relacionamento Master/Detail na aplicao? .........................................................
Como utilizar componentes do tipo LookUp? ..........................................................................
Como criar consultas em tabelas do banco de dados? ..............................................................
Como utilizar filtro em uma tabela? .........................................................................................
Como usar a linguagem SQL no Delphi? .................................................................................
Como criar um relatrio com o QuickReport? .........................................................................
Como criar um relatrio no Rave Reports? ..............................................................................
Como criar um relatrio com a linguagem Rave Reports? .......................................................
Como validar dados e tratar erros no Delphi? ..........................................................................
Como criar campos calculados? ................................................................................................
Como criar campos Lookup? ....................................................................................................
Como exportar / importar dados com Delphi/Excel? ...............................................................
Como utilizar uma Unit no vinculada a forms? ......................................................................
Como utilizar uma DLL? ..........................................................................................................
Como preparar um sistema para ser utilizado em rede? ...........................................................
Como criar um sistema de ajuda? .............................................................................................
Como criar discos de instalao para a aplicao? ...................................................................
Como compactar o banco de dados do Access no Delphi? ..............................................
Como criar uma rotina de Backup/Restore do sistema? ...................................................
Como criar um grfico no Delphi? ......................................................................................
Como criar um relatrio de produtos em falta....................................................................
Como realizar algumas melhorias no sistema? .........................................................................
Como criar um objeto em tempo de execuo? ........................................................................
Como estruturar o banco de dados Banco.MDB ...................................................................
.............................................................................
02
03
03
04
05
05
06
07
08
09
10
11
12
13
13
14
14
15
16
19
21
22
23
24
25
26
27
28
29
30
31
32
33
35
36
38
41
42
43
44
45
46
47
48
51
53
54
56
58
59
60
61
Bom trabalho!
Ronaldo Lavestein Casa Branca - SP
pastas criadas
anteriormente.
Propriedades:
Contedo
Significado
+ BorderIcons
biMaximize: False (clique no sinal +)
BorderStyle:bsSingle
Color:clBtnFace
Height:480
altura em pixels
Name:FrmMenuPrin
nome da tela
Position:poScreenCenter
Width:640
largura em pixels
WindowState:wsNormal
componente Image
Selecione o objeto Image1 que foi inserido na tela e altere as propriedades
abaixo, na janela Object Inspector:
Propriedades:
Contedo
Align:
Autosize:
Picture...
Name:
Stretch:
10
FrmSplash
BorderStyle
bsNone
Height
250
Position
poScreenCenter
Width
400
Color
clGray
210
Top
Width
385
Left
Stretch
True
Picture...
HandShak.bmp
Font.Size
26
True
Left
45
Top
90
clWhite
Transparent
Caption
Selecione, na barra de menus, a opo Project -> View Source para exibir o
cdigo fonte da aplicao.
Procure a linha de comando Application.CreateForm(TFrmSplash,
FrmSplash) e insira os comandos abaixo aps a mesma :
Para
testar
aplica
o
11
at
este
Name
ShortCut
Hint
Aes
Action1
&Clientes
ActCliente
F2
Cadastro de Clientes
Action2
&Fornecedores ActFornec
F3
Cadastro de Fornecedores
Action3
F&uncionrios
ActFuncio
F4
Cadastro de Funcionrios
Action4
Ca&tegorias
ActCatego
F5
Cadastro de Categorias
Action5
&Itens
ActItens
F6
Cadastro de Itens
Action6
&Sair
ActSair
F7
Sair do Sistema
12
13
um
depsito de
14
15
16
Obs: Outras opes de Caixa de Dilogo MessageDlg para usar em outra ocasio:
Tipos de tela: mtConfirmation, mtWarning, mtError, mtInformation, mtCustom
Botes: mbOk, mbCancel, mbYes, mbNo, mbAll, mbRetry, mbYesToAll, mbNoToAll, mbAbort
Respostas aos botes: mrOk, mrCancel, mrYes, mrNo, etc.
17
18
File -> New -> DataModule (tipo especial de tela para agrupar os objetos de
banco de dados). Salve a Unit da tela como UDM.pas
Contedo
LoginPrompt
False
Name
Conexao
Significado
Desabilita tela de login (no pede
usurio e senha) ao fazer conexo com
o banco de dados.
Nome do componente AdoConnection
19
Clique em Build...
20
ADOTable1
Contedo
Significado
Connection
Conexao
Name
Tab_Clientes
TableName
Escolha Clientes
Selecione cada campo e altere suas propriedades, quando necessrio. Por exemplo,
altere a propriedade DisplayLabel do campo CliCodigo para Cdigo do Cliente. Isto
far com que todas as telas que usarem este campo aparea como Cdigo do Cliente
em seu rtulo, e no mais CliCdigo. Outra propriedade a EditMask, usada com
campos do tipo Texto e Data/Hora, que define a mscara do campo (Ex.: CliCep =
99.999-999). Para campos do tipo Moeda, altere a propriedade Currency para True,
para que lhe seja aplicado o formato monetrio. Quando precisar acessar informaes
de um campo em uma tabela, use a sintaxe: DataModule.TabelaCampo.Propriedade.
Por exemplo, para atribuir o contedo do campo CliNome varivel Nome, use
Nome:=Dm.Tab_ClientesCliNome.Value; (no precisa fazer isso agora).
21
FrmLogin
BorderStyle
bsDialog
Height
225
Position
poScreenCenter
Width
400
Caption
Login
84
Left
Width
113
Top
Stretch
True
Picture...
HandShak.bmp
GrpBxLogin
Left
Top
96
Height
88
Width
382
Label2
Label 3
Caption
Usurio
Senha
Alignment
taCenter
taLeftJustify taLeftJustify
AutoSize
False
True
True
WordWrap
True
False
False
Font...
18, 20,-,-
22
18, 54,-,-
Edit2
Text
(em branco)
(em branco)
Name
EdtApelido
EdtSenha
PassWordChar
#0
CharCase
ecUpperCase
ecLowerCase
BitBtn2
Kind
bkOk
bkCancel
Caption
&OK
&Cancelar
Name
BtnOk
BtnCancelar
Obs.: Se, ao tentar compilar o programa, for exibido um erro dizendo que
loPartialKey no foi declarado, tecle [F1] e pea ajuda sobre loPartialKey.
Quando o Delphi exibir a ajuda, anote o nome da Unit qual pertence este
parmetro e inclua o nome da mesma (no caso, DB) na clusula Uses do
formulrio em questo.
23
do
sistema, ou seja, fazer com que seja mudada a tela que apresentada em primeiro
lugar quando o sistema executado.
Se voc tentou executar o sistema at este ponto, percebeu que a tela de
login no apareceu. Uma das maneiras de fazer com que isto acontea, alterar a
Main Form para a tela FrmLogin. Para isto siga os procedimentos abaixo:
24
2
Close;
3
25
OBS: Repita a execuo dos tpicos das pginas 23 28 para criar as demais telas do
menu Cadastros (Clientes, Fornecedores, Categoria, Itens (Produtos), Funcionrios) e do
menu Movimentos (Vendas e Itens da Venda), fazendo as devidas adaptaes, de acordo
com a tabela utilizada, pois nos exemplos esto sendo utilizadas apenas a tabela de
Clientes. A tela Itens da Venda dever ser chamada por um boto na tela de Vendas.
26
DESC';
27
28
29
Para criar uma tela Modal (no permite acessar as demais telas da
aplicao enquanto a tela modal no for fechada):
Nome_Form.ShowModal;
Ex.: FrmCadCliente.ShowModal;
Ex.: FrmCadCliente.Show;
30
31
32
DataSource = Ds_Tab_ItemVenda
DataField = ItVeProduto
ListSource = Ds_Tab_Produtos.
ListField = ProdNome
KeyField = ProdID
33
Para realizar uma consulta pela chave completa, ou seja, o contedo s ser
encontrado depois de digitado todo o contedo do campo, utilize o mesmo comando,
remova a palavra loPartialKey e coloque o comando dentro de uma estrutura de deciso If,
conforme o exemplo a seguir:
If not Dm.tab_Clientes.Locate( 'CliNome',ValorCampo.Text, [loCaseInsensitive]) then
MessageDlg(Cliente no cadastrado!, mtError, [mbOk], 0);
Digite o comando acima no evento OnClick do boto Pesquisar, por exemplo. Neste
caso, lembre-se de colocar comentrio (//) no comando do evento OnChange do TEdit
ValorCampo, utilizado anteriormente. Para fazer uma consulta com dois campos utilize a
sintaxe: Tabela.Locate('Campo1;Campo2', VarArrayOf([Contedo1, Contedo2]),
[loPartialKey]);
34
35
36
seus principais comandos como Select, Update, Insert, Delete, Create Table,
bem como tcnicas de Join, agrupamentos, etc.
Caso queira, voc pode criar uma tela Datamodule para organizar
seus objetos AdoQuery, evitando que os mesmos fiquem espalhados pelas
telas da aplicao.
37
FrmPesCliCid.ShowModal;
FrmRelCliCid.QuickRep1.Preview;
38
39
40
, que ser
41
42
43
44
45
46
47
48
File -> New -> Unit para acrescentar uma unit nova no vinculada a tela na
aplicao. Para acess-la de outros locais, use [Ctrl] + [F12].
Para que as funes e procedimentos criados na nova Unit possam ser utilizados, informe
o nome da mesma na clusula uses de cada unit em que os mesmos forem solicitados.
Aproveite este momento para pesquisar ou criar procedures e funes que possam ser
utilizadas em vrios pontos do sistema e acrescente-as Unit UFunProGeral.pas
49
50
51
52
53
54
55
56
57
Obs: Para instalaes mais simples, utilize o modo Project Wizard (assistente de
projetos), que auxilia, passo a passo, a construo do programa de instalao.
58
59
Selecione o
DriveComboBox1 e
altere sua propriedade
DirList, para
DirectoryListBox1
para que os dois
fiquem associados.
60
61
Name: QCliCid
Connection: Dm.Conexao
62
63
Name: QComprarProdutos
Connection:ConexaoBanco
SQL...: Select CatDesc, ProdNome, ProdQtdeEst From Categorias, Produtos
Where CatCodigo = ProdCategoria And ProdQtdeEst <= :Qtde
Active: True
Nome do Produto
Qtde em Estoque
XXXXXXXXX XXXXXXXXXXXXXXX
XXXXXXXXX XXXXXXXXXXXXXXX
XXXXXXXXX XXXXXXXXXXXXXXX
99
99
99
64
65
66
Tipo
*CliCodigo
AutoNumerao
Texto
Texto
Texto
Texto
Texto
Texto
Texto
Texto
Texto
Texto
CliNome
CliEnd
CliCep
CliCid
CliEst
CliNumFone
CliEmail
CliDoc1
CliDoc2
CliContato
Tamanho
50
40
9
35
2
15
50
15
15
50
Tabela: Fornecedores
Nome Campo
Tipo
*ForCodigo
ForRazao
ForEnd
ForCid
ForEst
ForCep
ForCont
ForNumFone
ForHomPag
AutoNumerao
Texto
Texto
Texto
Texto
Texto
Texto
Texto
Texto
Tamanho
40
40
35
2
8
35
15
50
Tabela: Funcionarios
Nome Campo
Tipo
*FunCodigo
AutoNumerao
Texto
Texto
Texto
Texto
Texto
Texto
Data/Hora
Moeda
FunNome
FunEnder
FunCep
FunCid
FunEst
FunNumFone
FunDatAdm
FunSalario
Tamanho
50
40
8
30
2
15
Tabela: Usuarios
Nome Campo
Tipo
*UsuCodigo
AutoNumerao
Texto
Texto
Texto
Texto
Nmero
UsuNome
UsuApelido
UsuSenha
UsuDepto
UsuNivel
Tamanho
50
15
7
15
Tabela: Categorias
Nome Campo
Tipo
*CatCodigo
CatDesc
AutoNumerao
Texto
67
Tamanho
15
Tabela: Produtos
Nome Campo
Tipo
*ProdID
ProdCategoria
ProdCodigo
ProdNome
ProdPrecoVenda
ProdQtdeEst
ProdUnidade
ProdFornecedor
AutoNumerao
Nmero
Texto
Texto
Moeda
Nmero
Texto
Nmero
Tamanho
7
50
Tabela: Venda
Nome Campo
Tipo
*VendID
VendCliente
VendDt_venda
VendValorProdutos
VendDesconto
VendAcrescimo
VendFrete
VendQtde
AutoNumerao
Nmero
Data/Hora
Moeda
Moeda
Moeda
Moeda
Nmero
Tamanho
Tabela: ItemVenda
Nome Campo
Tipo
*ItVeID
AutoNumerao
Nmero
Nmero
Moeda
Moeda
Nmero
ItVeVenda
ItVeProduto
ItVeValorUnitario
ItVeDescontoItem
ItVeQtde
68
Tamanho
APOSTILA
69