Escolar Documentos
Profissional Documentos
Cultura Documentos
Curso Delphi 7
Curso Delphi 7
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
Propriedades:
Contedo
Significado
+ BorderIcons
biMaximize: False (clique no sinal +)
BorderStyle:bsSingle
Caption:Sistema Comercial verso 1.0
Color:clBtnFace
Height:480
Icon...: Load (carregue o cone HandShak.ico)
Name:FrmMenuPrin
Position:poScreenCenter
Width:640
WindowState:wsNormal
nome da tela
posiciona a janela no centro da tela
largura em pixels
abre a tela no tamanho original
Selecione a guia
componente Image
Selecione o objeto Image1 que foi inserido na tela e altere as propriedades abaixo,
na janela Object Inspector:
OBS: Escolha para a propriedade Picture:HandShak.bmp, que se encontra na pasta:
C:\Arquivos de Programas\Arquivos Comuns\Borland Shared\Images\Splash\256Color
Propriedades:
Contedo
Align:
Autosize:
Picture...
Name:
Stretch:
FrmSplash
250
BorderStyle
Position
bsNone
poScreenCenter
Width
400
Color
clGray
210
385
Stretch
True
Top
Left
3
3
Picture...
HandShak.bm
p
clWhite
True
Sistema Comercial 1.0
Font.Size
Left
26
45
Top
90
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 :
Name
ShortCut
Hint
Aes
Action1
&Clientes
ActCliente
F2
Cadastro de Clientes
Action2
&Fornecedore
ActFornec
F3
Cadastro de Fornecedores
Action3
s
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
10
11
12
13
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.
14
Obs: Caso precise inserir uma Form/Unit, j existentes, ao projeto, utilize o comando
da opo de menu Project-> Add to Project e escolha a unit da form a ser inserida.
15
ADOConnection1
LoginPrompt
False
Contedo
Name
ConnectionString..
Conexao
Clique em ... e siga as
instrues a seguir
Significado
Desabilita tela de login (no pede
usurio e senha) ao fazer conexo com
o banco de dados.
Nome do componente AdoConnection
String para conexo ao banco de dados
16
Clique em Build...
ADOTable1
Connection
Contedo
Conexao
Name
TableName
Tab_Clientes
Escolha Clientes
Significado
Conexo ao Banco de dados onde se
encontra a tabela desejada.
Nome do componente ADOTable
Nome da tabela no banco de dados
17
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).
Selecione o componente DataSource1 e escolha tab_Clientes na propriedade DataSet.
Altere a propriedade AutoEdit (edio automtica nos dados) para False. Altere a propriedade
Name para Ds_Tab_Clientes. Faa o mesmo para as demais tabelas. O resultado final
dever ser como o mostrado na tela a seguir:
18
FrmLogin
225
BorderStyle
Position
bsDialog
poScreenCenter
Width
400
Caption
Login
84
113
Left
Top
Stretch
True
Picture...
4
4
HandShak.bmp
Height
88
Width
GrpBxLogin
96
382
taCenter
False
True
Comic Sans Ms, 14, Bord
140, 4, 208, 50
Label2
Usurio
taLeftJustify
True
False
18, 20,-,-
Label 3
Senha
taLeftJustify
True
False
18, 54,-,-
Edit2
Text
(em branco)
(em branco)
Name
EdtApelido
EdtSenha
PassWordChar
#0
CharCase
ecUpperCase
ecLowerCase
19
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.
20
21
4 GroupBox vazio.
01 StatusBar (Win32) com 03 painis com Width = 150.
1
2
Close;
3
4
22
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.
23
Crie na tela padro uma varivel global chamada Ascendente do tipo Boolean
para que todas as telas de cadastro passem a utiliz-la.
No evento OnShow, da tela padro, digite: Ascendente := False;
Em FrmCadCliente, no evento OnTitleClick do DBGrid digite:
Ascendente:= not Ascendente ;
If Ascendente then
Dm.tab_Clientes.IndexFieldNames := Column.FieldName + ' ASC'
else
Dm.tab_Clientes.IndexFieldNames := Column.FieldName + '
DESC';
24
25
26
o 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;
um
duplo-clique
no
evento
OnExecute
da
mesma
digite
27
28
29
DataSource = Ds_Tab_ItemVenda
DataField = ItVeProduto
ListSource = Ds_Tab_Produtos.
ListField = ProdNome
KeyField = ProdID
30
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:
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]);
31
32
33
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.
Components
34
Para testar o relatrio clique com o boto direito do mouse sobre o QuickRep e
escolha Preview. Salve o relatrio como URelCliCid.
Para chamar o relatrio digite os comandos abaixo no boto Imprimir da tela
FrmCadCliente:
FrmPesCliCid.ShowModal;
FrmRelCliCid.QuickRep1.Preview;
35
, que
responsvel pela conexo com o banco de dados. Mude a propriedade Name para
RvDtCnCliente. Configure a propriedade DataSet selecionando o nome da tabela
ou query. Neste exemplo, escolha a query QueryClientes.
Insira um componente RvSystem
36
37
, que ser
38
39
40
OBS: Os comandos acima so apenas ilustrativos de exemplos. Para utiliz-los no sistema, faa
as devidas adaptaes, de acordo com o local onde julgar necessrio. Em vrios tpicos a seguir
utilizaremos exemplos de uso dos mesmos. No digite nada ainda.
41
42
43
44
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
45
Chame cada funo no evento OnClick dos botes, passando como parmetro o
nmero de que se deseja calcular o triplo ou o dobro.
Ex.:Edit1.Text := IntToStr(Dobro(100)); // retorna 200
Edit1.Text := IntToStr(Triplo(100)); // retorna 300
46
47
48
49
50
51
Obs: Para instalaes mais simples, utilize o modo Project Wizard (assistente de projetos), que
auxilia, passo a passo, a construo do programa de instalao.
52
Crie uma opo no menu principal: Ferramentas -> Compactar para chamar a
procedure Compactar: Lembre-se usar a ActionList1 (ActComp) e digite os
seguintes comandos no Evento OnExecute da ao ActComp:
If MessageDlg('Antes de confirmar esta operao, feche o banco de dados.' + #13 + #13 + 'Deseja efetuar
a compatao do Banco de Dados?', mtConfirmation, [mbYes, mbNo],0) = mrNo then
Abort;
Compactar;
53
Selecione o
DriveComboBox1 e
altere sua propriedade
DirList, para
DirectoryListBox1
para que os dois
fiquem associados.
54
55
Name: QCliCid
Connection: Dm.Conexao
56
CliCid.Clear;
chtGrafico.Title.Text.Clear;
chtGrafico.Title.Text.Add('Grfico Clientes por Cidade);
QCliCid.Open;
While (not QCliCid.Eof) do
begin
// Insere dados do Eixo Y do grfico de barras
CliCid.AddY(QCliCidQtde.Value, QCliCidCliCid.AsString, clSkyBlue);
QCliCid.Next;
end;
57
Name: QComprarProdutos
Connection:ConexaoBanco
SQL...: Select CatDesc, ProdNome, ProdQtdeEst From Categorias, Produtos
Where CatCodigo = ProdCategoria And ProdQtdeEst <= :Qtde
Active: True
Nome do Produto
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
Qtde em Estoque
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
99
99
99
58
GroupBox1.Enabled := True;
GroupBox2.Enabled := True;
DbNavigator1.Enabled := True;
DbNavigator2.Enabled := True;
DbNavigator3.Enabled := False;
No evento OnBeforeAction do DbNavigator2 da tela FrmCadCliente, digite:
padro do sistema e altere a propriedade KeyPreview para True. Logo em seguida, digite os
seguintes comandos no evento OnKeyPress da tela padro:
if Key = #13 then
begin
keybd_event(9,0,0,0);
Key := #0;
end;
59
60
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
AutoNumerao
Texto
Texto
Texto
Texto
Texto
Texto
Texto
Texto
ForRazao
ForEnd
ForCid
ForEst
ForCep
ForCont
ForNumFone
ForHomPag
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
AutoNumerao
Texto
CatDesc
Tamanho
15
Tabela: Produtos
Nome Campo
Tipo
*ProdID
AutoNumerao
Nmero
Texto
Texto
Moeda
Nmero
Texto
ProdCategoria
ProdCodigo
ProdNome
ProdPrecoVenda
ProdQtdeEst
ProdUnidade
61
Tamanho
7
50
5
ProdFornecedor
Nmero
Tabela: Venda
Nome Campo
Tipo
*VendID
AutoNumerao
Nmero
Data/Hora
Moeda
Moeda
Moeda
Moeda
Nmero
VendCliente
VendDt_venda
VendValorProdutos
VendDesconto
VendAcrescimo
VendFrete
VendQtde
Tamanho
Tabela: ItemVenda
Nome Campo
Tipo
*ItVeID
AutoNumerao
Nmero
Nmero
Moeda
Moeda
Nmero
ItVeVenda
ItVeProduto
ItVeValorUnitario
ItVeDescontoItem
ItVeQtde
Tamanho
62
APOSTILA
63