Escolar Documentos
Profissional Documentos
Cultura Documentos
Digite as variáveis no
início do programa.
Œ Vamos criar duas tabela para este sistema, uma será para os Usuários e uma para Clientes.
Tabela de Clientes
Índices
secundários
para pesquisa.
Dê um clique duplo no
componente MainMenu
para definir as opções na
tela abaixo:
Clique duplo no componente ImageList, será aberta uma tela onde será possível adicionar ícones.
Ao clicar no botão x vermelho, pede se Clicar no X no canto do formulário para fecha-lo, será
realmente quer remover todos os registros. pedido confirmação.
Se ao clicar na setinha para posicionar o ponteiro no primeiro registro os ícones setinhas desaparecerão visto que
o ponteiro estará posicionado no primeiro registro.
Insira um botão
para o relatório.
• Insira 5 componentes QRLabel, estes serão alterados recebendo um nome ( caption ) adequado.
• Insira dois componentes QRSysData1, para definir a data e hora e outro para numeração da página.
“ Veja abaixo após alterado todos os captions dos QRLabels com seus respectivos nomes.
” Agora insira 4 componentes QRDBText para imprimir ( listar ) os registros da tabela Clientes.
Clique em
Clientes_TB_Relatório, clique
na propriedade Active e defina o
valor True. Clique no botão
direito, Add Fields e OK
Alterando as propriedades
dos objetos QRLabel e
ŒŒ Abra o formulário onde se encontra o botão Relatório. QRDBLabel.
Alignment: Alinha o
conteúdo de um
QRDBLabel no lado
esquerdo, direito ou centro
da banda.
QReport_Todos_Clientes.Preview;
Resultado:
• Todos os componentes
que estão na banda Detail
são do tipo QRDBText,
para cada um destes
deverá ser definido as
propriedades DataSet e
DataField
( para associar o nome do
campo ).
Clique na banda Summary, clique no evento BeforePrint ( ante de imprimir ) e digite o código abaixo:
Resultado:
• Title
• Column header
• Detail band
• Summary
Clique OK
Ž Insira um componente Query, clique na propriedade DatabaseName e defina o Alias, clique em Query,
clique no botão direito, clique em SQL Builder, será aberta uma tela, selecione a tabela Funcionários.db,
selecione os campos desejados nos quadrinhos ( veja página seguinte ), após clique X para fechar e Yes para
gravar a SQL.
• Os componentes
QRDBText imprimirão os
dados.
‘ Para totalizar os
Salários insira um
componente QRExpr.
• Clique onde o
bolão esta
apontando, clique • Para imprimir a quantidade de registros da
em DataSet e tabela insira um componente QRSysData1,
defina Query1. altere a propriedade Data para qrsDetailCount.
‘ Clique no componente QRDBText1, clique em DataSet e defina Query1, clique em Datafield e defina o
nome do campo Func_Nome, repite estes passos para os componentes QRDBText2 e QRDBText3.
Altere a propriedade
Caption de cada
QRLabel nomeando
de acordo com o
exemplo.
Œ File - New - Other - Report - Ok, o Delphi abrirá a tela abaixo ( QuickReport1 )
• File Use Unit escolha Clientes, clique no formulário do relatório e defina a propriedade DataSet para
Clientes_Frm.Clientes_TB.
’ Insira dois componentes
‘ Insira um
QRSysData e altere a
“ Insira componente QRLabel ( aba componente
propriedade Data para
Report ) para definir os cabeçalhos QRSysdata ( aba
qrsDateTime e a segunda
dos campos, altere a propriedade Report ), altere a
propriedade Data para
Caption de cada objeto, de acordo propriedade Data para
qrsPageNumber.
como os nomes definidos abaixo. qrsReportTitle.
Frame: Pode ser definido, cor do traço, estilo ( pontilhado ), traço na parte superior da banda, direita e esquerda.
Clique duplo sobre o ícone Relatório,
Imprimirá o título do
digite o código abaixo.
relatório onde mostra
Para visualizar e imprimir:
a palavra
QReport_Clientes_Todos.Preview;
( Report title )
idNo
idYes
Como padrão o Delphi disponibiliza alguns botões para aumentar ou diminuir visualização, navegar nos registros,
configurar impressora, informar quantidade de cópias, salvar relatório, abrir etc..
O código da página abaixo foi alterado para verificar se é digitada uma data válida:
Clique duplo sobre o componente Timer ( aba System ) e digite a linha de código acima. Para mostrar a data em
um Label é preciso primeiramente converter Hora para String ( TimeToStr ).
• Clique no DBGrid , clique duplo sobre o DBGrid, será abera uma tela, posicione o ponteiro do mouse sobre o
primeiro ícone da tela abaixo ( Add new Ins ), insira quatro colunas.
• Clique no componente Table1, com o ponteiro do mouse posicionado sobre a tela ( Produtos_TB ) clique no
botão direito, clique na opção New field ... ( continua no balão abaixo ... ).
Veja abaixo o
campo Calculado
que foi criado.
Temp_Total
Œ• Agora definina a coluna Total no Grid. Dê um clique no DBGrid, clique em 4 Tcolumn, clique na
propriedade FieldName e defina o nome do campo = Temp_Total, na propriedae mais abaixo, clique no + da
opção Title, clique no Caption - Total e mude este Caption para Descrição, use a propriedade Alignment para
alinhar o Caption para direita (taRightJustify ).
Œ‘ O código a seguir serve para atualizar os Totais que estão fora da grade, assim quando for alterado uma
quantidade, preço ou deletado algum registro estes valores também serão alterados. Clique no componente
Table1 ( Produtos_TB ), dê um clique duplo no evento OnCalcfields e digite o código abaixo.
Resultado:
Se o preço, quantidade ou se algum registro for removido os totais serão todos atualizados.
« O Campo Total_Temp é do tipo calculado, ou seja, ele é somente utilizado quando o programa estiver
rodando ( na memória ), o resultado que este armazenará não será mantido na tabela, portanto é um tipo de campo
variável – uso temporário. Assim sendo, não será necessário criar este campo na tabela para ocupar mais bytes
físicos.
Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 236
R Ordenando colunas de dados no DBGrid
Ao clicar em uma das colunas ordenará os Nomes em ordem ascendente.
Ž Crie a pasta Dados e grave a tabela nesta para não misturar com os outros arquivos.
• Crie um projeto novo, File New Application, clique na opção Project, clique em Remove from poject,
selecione Unit, clique OK e clique Yes
• Clique em Database ( que está na barra de títulos ), FormWizard, clique no botão Next, nesta caixa selecione
o alias Gráficos, clique na tabela Produtos.db, clique em Next, clique no botão >>, clique Next, Next e Finish,
veja abaixo:
Dê um clique duplo,
veja abaixo será aberta
outra tela....
’ Clique na aba Data Source, no menu dropdown selecione Dataset, clique no Dataset e defina Table1,
Labels: Prod_Desricao ( que é a descrição do produto ), Pie, defina o campo Prod_Qtde, clique no botão Close.
Definir título do gráfico , clique na aba Titles e mais abaixo digite Produtos.
Ao lado do nome do produto mostrar o equivalente em percentual que é bem interessante para melhor visualizar.
Removi o campo código, como este é gerado automaticamente não há necessidade deixa-lo no formulário.
Dê um clique duplo no
botão e digite as duas linhas
abaixo:
Table1.Close;
Table1.Open;
Basta brincar um pouco mais com este recurso e aprenderá muito mais J
Clique no botão Add da tela acima, clique no tipo de gráfico Bar e Ok.
Clique em Series,
• defina Funcinários,
• DataSet,
• Dataset: Query,
• Labels: Func_Nome
• X: Func_Salario
• Bar: Func_Salario
Decrementa dias ,
menos 60 dias.
Ao abrir a tela, dê um clique duplo sobre o registro desejado, após será aberta a tela de Cadastro do
Cliente, digamos que você esta pesquisando um determinado registro e precisa altera-lo ao clicar no
registro selecionado.
Ž File – New – Frame, insira um componente Table1, clique em Table1, clique na propriedade DatabaseName
e defina o alias, clique na propriedade TableName e defina a tabela Clientes.db, clique no Table1, clique na
propriedade Name e mude o nome para Clientes_TB, clique duplo em Clientes_TB, clique no botão direito,
clique em Add fields e clique Ok para adicionar todos os campos da tabela. Clique no componente DataSource1
clique na propriedade DataSet e defina Clientes_TB, clique no componente DataSource e na propriedade Name
defina o nome Clientes_DS. Insira um DBNavigator ( aba Data Controls ), clique no DBNavigator e defina a
propriedade DataSource para Clientes_DS. Clique no formulário frame para seleciona-lo e na propriedade
Name defina o nome Frame_Clientes.
• Funcionários
• Produtos
Insira um componente
TreeView e um ImageList1 que
estão na aba Win32
Clique no TreeView, clique em
Images e defina ImageList1
Insira outro formulário frame para crirarmos o relatório ( ou formulário de pesquisa ), na propriedade Name
digite Frame_Clientes_Rel
Tela de Clientes
Quando multiplicamos um valor por outro e se um destes valores possuir um ponto separador, certamente será
problema... L Como posso contornar este problema ?
Problema:
O campo Relaciona_Com_Empresa foi criado na tabela Funcionários apenas para relacionar com a tabela
Empresas. Teremos duas telas, uma de Funcionários e outra de Empresas
Cadastro de Funcionário
Insira um componente
DBLookupComboBox1 que
esta na aba Data Controls e
defina as propriedades como
mostra na página seguinte.
Ž Quando criamos uma nova aplicação o Delphi sempre abre um formulário em branco ( uma Unit ), remova-o
clicando no ícone “Remove file from Project” .
• Use o FormWizard e crie o formulário de Clientes. Defina as propriedades do Form, Table, Alias etc.
‘ Use o FormWizard e crie o formulário de Pedidos. Defina as propriedades do Form, Table, Alias etc.
’ Próximo passo é fazermos o relacionamento entre as tabelas Pedidos e Clientes. Insira um componente
Table1, altere a propriedade Name de Table1 para Clientes_TB, insira um DataSource, mude o nome para
Clientes_DS. Insira um componente DBLookupComboBox1 para buscar o Cliente que fará o Pedido corrente.
Clique em DBLookupComboBox1, clique em DataSource = Pedidos_DS, clique em DataField =
Ped_Cli_Cod_Relaciona, clique em ListSource = Clientes_DS, clique em ListField = Clie_Nome e finalmente
clique em KeyField = Clie_Codigo.
“ Insira um componente Table para: Clientes ( Clinentes_Db ), Itens ( Itens_TB ) e um para Produtos (
Produtos_TB ), insira três componentes DataSource ( Clientes_DS, Itens_DS e Produtos_DS ).
ŒŒ Clique em Itens_TB, clique na propriedade MasterSource e defina Pedidos_DS, clique nos 3 pontinhos
( ... ) da propriedade MasterFields, será aberta a caixa abaixo, clique nos dois campos que serão relacionados e
clique em no botão Add e Ok.
Œ• Crie um divisão para o Grid clicando no ícone Add New ( Ins ) ( primeiro ícone amarelo veja setinha
vermelha ), clique na propriedade FieldName e informe o campo temporário ( calculado ) chamado de
Descr_Prod_Temp, veja tela abaixo:
•Œ Vamos criar um Menu para abrir os cadastros que criamos até o momento. Insira 3 botões, clique em File,
Use Unit, selecione as 3 units, Clientes, Produtos e Pedidos. Clique na opção Project ( opção da barra de títulos
), clique em Options, arraste o formulário Menu_Frm para ser o primeiro da lista, para abrir o formulário do
Menu por primeiro.
•Ž Relacionamento para gerar relatório. Vamos criar o formulário para o relatório. File New Other
Report. Insira um componente Query, faremos a filtragem dos registros com SQL. Clique em Query e defina o
Alias. Clique no botão direito, clique na opção SQL Builder, no dropdown Table abra as tabelas Pedidos,
Produtos, Itens e Cidades. Relacione os códigos arrastando até a segunda tabela. Clique na tabela Pedidos,
clique no campo Ped_Cli_Cod_Relaciona e arraste-o até o campo Clie_Codigo da tabela de Clientes, clique na
tabela Pedidos, clique no campo Ped_Nr_Pedido e arraste até o campo Item_Nr_Pedido_Relaciona da tabela
de Itens, clique na tabela de Produtos, clique no campo Prod_Codigo e arraste-o até o campo
Item_Cod_Prod_Relaciona da tabela Itens.
Banda Summary:
Insira dois componentes QRExpr. No primeiro QRExpr somaremos as quantidades. Clique no primeiro
QRExpr, clique nos três pontinhos da propriedade Expression, será aberta uma tela, clique no botão Function,
clique em Statistical, clique no lado direito na opção Sum, clique no botão Continue, será aberta uma pequena
caixa, clique nos três pontinhos, clique no botão DataField, clique em Query1, clique no lado direito sobre o
campo Item_Qtde, clique OK, OK, OK, OK. SUM(Query1.Item_Qtde)
Insira um Edit ( para o nome ), um Memo1 ( para o histórico ), um MaskEdit ( aba Additional ), um SpinEdit (
aba Samples ), insira dois botões, uma para Imprimir e outro para Sair.
Imprime_Recibo_Txt é o
formulário onde o recibo será
impresso, este está na página
seguinte.
Œ Crie a unidade ( File New Unit ) que conterá as rotinas de proteção do sistema, arquivo Rotinas.pas
Ž Crie um projeto novo, e funcionará somente se serial for válido, a tela abaixo salve com o nome de
Unit_Protegida e o projeto com o nome de Sistema_Protegido, altere o projeto de acordo com o código abaixo:
Se o programa PROTEGE for executado na máquina onde será rodado o sistema que foi feito, e se após isto este
for copiado para outra máquina e assim por diante, será mostrada a mensagem abaixo:
A diferença básica entre procedures e functions é: Functions ( funções ) retornam valores. Procedures não
retornam.
Exemplo 2
:
Após digitado a linha no
Private, pressione a combinação
Ctrl Shift C para gerar a linha
da procedure, e para finalizar
basta digitar o código.
Digite as
procedures
Soma e Subtrai
Œ New New Other DLL Wizard e OK, será aberta a tela abaixo
• Mude o código acima, deverá ficar como o código abaixo, compile o projeto ( Ctrl F9 ) e salve o projeto como
o nome de exemplo_dll
File New Application, insira um botão Bitbtn. Copie o arquivo exemplo_dll.dll para dentro da pasta do
projeto abaixo para que este localize o arquivo Dll.
R Gráfico - Url
Escreve a URL definida no programa na área de trabalho do Windows.
R Gráfico – Pirâmide 1
R Gráfico – Retângulos
Anima fundo do form fazendo retângulos, constantemente gera retângulos no formulário.
Digite a Procedure
Reajusta_Larg_Coluna
Ao clicar na barra de
título do Grid ordena
nomes por Nome.
Cliquei na barra
de títulos na
coluna Data
Nascimento
ordenou por data
R Criando componente
File – New – Other – Component - Ok
O método override, não substitui o evento Click herdado do Tbutton, ele apenas estende ou refina este evento
no novo componente. Usamos override para especificar que haverá uma modificação no evento.
Na seção public, declaramos o método constructor que controlará a construção do componente. Usamos
comumente Create como nome deste método, e Aowner como nome de parâmetro, nada impedindo a utilização
de outros nomes. Na implementação do constructor, semelhante ao Click, primeiro herdamos as características
do objeto base e depois alteramos as propriedades Caption e Cursor.
A propriedade Cursor, especifica qual será o desenho que representará o mouse quando este estiver em cima do
controle, e pode ser:
Após a digitação do código, selecione Component/Install Component..., na barra de menu para instalar este
componente dentro do pacote de componentes do usuário (Delphi User’s Components) - dclusr30.dpk.
File New Application, na aba Samples selecione o botão e arraste-o para o formulário.
R ActiveControl
Controlando eventos com o controle ativo.
R Arredondando valores
Quarto exemplo:
Para resolver o problema, basta acrescentar no evento AfterPost de cada componente Table as linhas de código
que estão abaixo.
Dessa forma, você não precisa temer perder os seus dados por uma falha elétrica ou pela quebra do sistema.
:
:
Insira os seguintes componentes: SaveDialog, dois componentes OpenDialog ( aba Dialogs ), MainMenu ( aba
Standard ), StatusBar ( aba Win32 )
Insira um ListBox
( aba Standard )
Defina o nome do
formulário de
Name: FrmPrinc
Statusbar
Dê um clique duplo no componente MainMenu1 e defina as propriedades Name para as três opções do Menu,
Aquivo1, Novo_Arq_Zip, Descompacta_Zip e Fechar1
:
:
Digite as funções
:
:
Em Options defina as
opções:
ofHideReadOnly = True
ofEnableSizing = True
ofHideReadOnly = True
ofAllowMultiSelect = True
ofEnableSizing = True
ofHideReadOnly = True
ofEnableSizing = True
Name: Abre_Arq_Zipado
Name: Pasta_Destino_Bit
Descompactando
Declare na cláusula uses a unit dbctrls. (se ainda não estiver declarado)
Apagando Registro
Ao clicar no sinal de
menos ( - ) do
DbNavegador será
pedido confirmação para
excluir o registro. Digite
o código abaixo no
evento BeforeAction.
Dê um clique duplo no
componente Table1,
selecione os dois campos
e arraste-os para dentro
do formulário.