Você está na página 1de 116

R Fecha formulário com animação

Ao clicar no “x” fechará o formulário de forma animada.

Ao clicar no X para fechar


o formulário, este começará
ficar com os cantos
arredondados, diminuindo e
aumentando seu tamanho...
em ciclo, até que for
confirmado Sim ou Não.

Digite as variáveis no
início do programa.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 209


R Animando formulário na abertura
O código abaixo abrirá um outro formulário de forma animada, tipo, explodindo o formulário. Escreva o código
no formulário que deseja abrir, neste exemplo será aberto o formulário de nome Form2.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 210


R Sistema com senha
A seguir faremos um cadastro para usuários e senhas, um menu e um cadastro simples para Clientes.

Œ 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.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 211


• Formulário de Login:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 212


Ž Formulário do menu.

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.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 213


Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 214
• Formulário de Clientes

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 215


Ícones usados:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 216


Clique em
ComboBox1, na
propriedade Items
digite um abaixo do
outro:
Nome
Sobrenome
Cep

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 217


Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 218
Resultado:

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.

Setinhas estão ocultas Veja as setinhas abaixo:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 219


R Relatório w Exemplo “básico” ( 1 )
Primeiramente criaremos um cadastro de clientes para listarmos alguns registros, após faremos o programa
abaixo para listar os registros.

ΠCrie uma tabela com o Form Wizard e cadastre alguns registros.

Insira um botão
para o relatório.

• File w New w Other w Report w OK

Será aberto um formulário em branco abaixo ...

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 220


Ž Insira um componente Table, altere a propriedade Name para Clientes_TB_Relatorio, na propriedade
Databasename defina o alias, na propriedade TableName defina a tabela Clientes.Db.

• Clique no formulário no QuickReport ( região branca ),


clique no componente Table1 e mude o nome para
Clientes_TB_Relatorio , defina a tabela na propriedade
TableName para Clientes.DB. Clique em
Clientes_TB_Relatorio, clique na propriedade Active e
defina True.

Clique na região branca e defina a propriedade DataSet para


Clientes_TB_Relatorio. Altere a propriedade Name para QuickReport1 para
QReport_Todos_Clientes. Se preferir deixe o nome QuickReport.
• Clique duplo no formulário QuickReport, será aberta a tela abaixo:

‘ Após clicado OK teremos o formulário abaixo.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 221


’ Vamos definir o cabeçalho do relatório, data, hora e numeração de página do relatório. O layout do
formulário será visto mais adiante, alinhamentos etc.

• Os componentes do relatório estão na aba QReport.

• 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.

Clique em QRSysData, mude a


propriedade Data que esta mostrando
como default ( padrão ) qrsTime,
mude para qrsPageNumber

“ Veja abaixo após alterado todos os captions dos QRLabels com seus respectivos nomes.

Para digitar o texto Pág.:


Clique no componente QRSysData e na propriedade Data
defina qrsPageNumber, na propriedade Text digite Pág.:

” Agora insira 4 componentes QRDBText para imprimir ( listar ) os registros da tabela Clientes.

Obs: Todos os dados da tabela são impressos na banda Detail.


Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 222
• Cada componente QRDBText deve ser associado com o Dataset e ao campo a ser impresso.

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.

Propriedade Top: Posiciona


QRDBLabel na parte
superior da banda corrente.

Alignment: Alinha o
conteúdo de um
QRDBLabel no lado
esquerdo, direito ou centro
da banda.

Banda: Clique na banda em


uma banda ( PageHeader,
Œ• File – Use Unit, clique no formulário do relatório Grid_Rel_Frm. Column Header ou Detail ),
clique em Height e defina
ŒŽ Clique duplo ( evento OnClick ), no botão Relatório digite o um valor para altura da
código fonte abaixo: banda – mais alta / baixa.

QReport_Todos_Clientes.Preview;

Resultado:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 223


Considere o seguinte exemplo, ao invés de ser Cadastro de Clientes, ser apenas um Cadastro de
Funcionários com alguns detalhes a mais.
ŒInsira um componente Table, clique na propriedade Name e digite Ž Todos os
Funcionários_TB_Rel, na propriedade DatabaseName defina um componentes que estão
Alias, na propriedade TableName defina o nome da tabela na banda Title e
Funcionários.db, clique na propriedade Active e defina o valor para
Column Header são do
True, clique duplo sobre Funcionários_TB_Rel, clique no botão
direito, clique em Add fields e Ok para confirmar.
tipo QRlabel, basta
alterar a propriedade
Caption de cada um
digitando o texto
desejado.

• 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 parte •Contando a


quantidade de registros ‘Somando os salários que serão listados.
branca do formulário Insira um componente QRExpr1, clique na
do relatório, clique na que há na tabela. Insira
propriedade Expression e digite
propriedade DataSet e um componente
SUM(Funcionarios_TB_Rel.Func_Salario)
defina QRSysData1, clique na
propriedade Data e
Funcionarios_TB_Rel
escolha a opção
qrsDetailCount.

Clique na banda Summary, clique no evento BeforePrint ( ante de imprimir ) e digite o código abaixo:

Resultado:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 224


R Relatório w Exemplo básico usando “SQL” ( 2 )
O exemplo a seguir é igual ao da página anterior, porém feito com SQL.
ΠClique em New Other Report e Ok.

• Clique no formulário, clique na propriedade Name e digite QReport_Funcionarios_SQL_Rel. Clique duplo


no centro do formulário, será aberta a tela abaixo:

Clique / marque os seguintes


quadrinhos:

• Title
• Column header
• Detail band
• Summary

Clique OK

Após clicado em OK teremos a tela abaixo:

Ž 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.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 225


• Selecione os campos a serem impressos:

• Defina detalhes do formulário abaixo:

Ž Como já vimos no relatório


ΠDefina anterior os componentes QRLabel
DatabaseName = Alias servem para imprimir os
Cabeçalhos ( textos ).

• 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.

Na banda Title insira um


Propriedade componente QRLabel e no
Active = True Caption digite
Relatório de Funcionários.

Altere a propriedade
Caption de cada
QRLabel nomeando
de acordo com o
exemplo.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 226


R Relatório w Exemplo “básico” ( 3 )
Outro exemplo básico para listar e imprimir registros da tabela Clientes. Como trabalharemos com Relatórios
usaremos vários componentes da palheta QReport

Campos da tabela usados no relatório: Nome, Cidade, Data_Nasc

Œ File - New - Other - Report - Ok, o Delphi abrirá a tela abaixo ( QuickReport1 )

• Clique duplo onde o


balão esta apontando para
abrir a tela de
propriedades do
QuickReport, veja tela ao
lado. Assinale as opções
que estão marcadas com
um círculo veremlho.

Ž Após confirmar propriedades da página anterior teremos a tela abaixo:

Banda para título do relatório,


data, hora, numeração de página
etc
Banda onde serão impressos os cabeçalhos de cada coluna
dos dados ( banda detail ).

Banda onde os dados serão


impressos.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 227


• Pressione F11 e altere a propriedade Name de QuickReport1 para QReport_Clientes_Todos.

• 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.

” Insira componentes QRDBText para definir onde os dados serão


impressos. Preste atenção nas iniciais dos nomes dos componentes
QRDB = Query Report Data Base Text, comparando com os
componentes do cabeçalho QRLabel = QR = Query Report Label.

• Selecione individualmente cada componente e defina


suas propriedades: DataSet será
Clientes_Frm.Clientes_TB e a propriedade DataField
para definir os campos desejados.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 228


Œ• Vamos fazer traço abaixo dos cabeçalhos dos campos. Clique na banda column header, na propriedade
Frame ( no mais + ), defina o valor da propriedade DrawBottom para True e na propriedade Width o
valor 2.

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

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 229


Ao confirmar previsualizar,
será mostrado o relatório antes
de imprimir na tela.

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..

As descrições dos botões estão em


inglês, como traduzi-las ?

No Delphi 6.0 abra a pasta:


C:\Arquivos de
programas\Borland\Delphi6\Lib
e edite o arquivo qrprev.dfm,
e altere as linhas Hint ( somente ! )

de: Hint = 'Print'


Para: Hint = 'Imprime

No Delphi 5.0, abra o seguinte


caminho: C:\Arquivos de
programas\Borland\Delphi5\lib e
altere os Hints que estão no arquivo
qrprev.pas

Ahh, salve o arquivo J qrprev.pas

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 230


Relatório Filtrando por data:
Insira um novo Formulário, dois componentes
Edit ( aba Standard ) e um Bitbtn, veja abaixo o
código fonte. Crie um índice secundário (Database
Desktop) chamado de Idata_Nasc.

O código da página abaixo foi alterado para verificar se é digitada uma data válida:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 231


Resultado página anterior. Imprimindo relatório por data ( veja código página anterior ).

R Como mostrar “data” e “hora” no formulário ?

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 ).

R Como formatar “data” por extenso ?


Formatando data em um label.

No evento OnShow digite a linha abaixo:

Label1.Caption := FormatDateTime('"Timbó, "dddd", "d" de "mmmm" de "yyyy',date);

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 232


R Fazendo cálculos no DBGrid com “OnCalcFields” ?
Calcula e atualiza valores na grade de dados.
ΠCrie a tabela de Produtos.

• Insira um novo formulário, e os seguintes componentes: Table, Datasource, DbGrid e 5 Labels.


Ž Clique no Table, clique na propriedade DatabaseName e defina o Alias ou pasta onde está a tabela de
Produtos, clique na propriedade TableName, defina o nome da tabela Produtos.DB, clique duplo sobre o
componente Table1, será aberta uma pequena tela, clique no botão direito, clique em Add fields, clique Ok.
• Clique no DBGrid, clique na propriedade DataSource e defina DataSource1.

• 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.

Teremos a tela abaixo:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 233


’ Agora faça a associação das colunas do DBGrid com os campos da tabela. Clique no DBGrid, clique em 0
Tcolumn, clique na propriedade FieldName e defina o nome do campo = Prod_Descricao, na propriedade
mais abaixo, clique no + da opção Title, clique no Caption - Prod_Descricao, mude o Caption para
Descrição, use a propriedade Alignment para alinhar o conteúdo do Caption para direita, esquerda ou
centro, repita estes passos para as colunas Qtde e Preço. Clique no DataSource e na propriedade DataSet
defina Table1.

“ Agora crie um campo “calculado” ( campo virtual ou um campo de uso temporário ).

• 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 ... ).

ŒŒ Campo Name: Digite o nome do


campo calculado ( ou campo virtual ),
no Type informe a opção Currency
( moeda ), clique na opção Calculated e
clique Ok.

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 ).

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 234


Veja como esta a tela até o momento.

ŒŽ No início do programa digite a linha da procedure abaixo:

Υ Digite a procedure abaixo:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 235


Υ Digite a procedure Atualiza_Total nos respectivos eventos:

Œ‘ 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.

Coluna Nome desordenada Coluna Nome ordenada – nomes ascendentes

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 237


R Como criar um gráfico “básico” ?
ΠCrie tabela de Produtos.

• Criar Alias para esta tabela, defina o nome Gráfico

Ž 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:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 238


‘ Insira um componente DBChart ( aba Data Controls ):

Dê um clique duplo,
veja abaixo será aberta
outra tela....

Após clicar no botão


Add será aberta a
tela abaixo, clique no
gráfico Pie ( torta ) e
clique OK.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 239


Clique na aba Series, será aberta a tela abaixo:

’ 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.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 240


Resultado até o momento:

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.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 241


Definindo fundo do gráfico, Panel Gradient, visible....

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;

As duas linhas acima


servem para atualizar o
gráfico caso um registro for
excluído.

Basta brincar um pouco mais com este recurso e aprenderá muito mais J

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 242


R Como criar um gráfico com SQL ?
Œ Crie a tabela de Funcionários.

• Crie um formulário para entrada de dados.

Ž Insira um novo formulário para fazer o gráfico.

• Insira dois componentes


DateTimePicker1 ( aba Win32 )
• Insira um componente DBChart
( aba Data Controls )

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 243


‘ Clique duplo no componente DBChart.

Clique no botão Add


para selecionar
( adicionar ) um tipo de
gráfico.

Clique no botão Add da tela acima, clique no tipo de gráfico Bar e Ok.

Há muitas outras propriedades


do gráfico que poderão ser
alteradas. Este exemplo lhe
dará apenas uma rápida idéia
de como gerar um gráfico J

Clique no botão Title,


será aberta uma tela,
digite o nome
Funcionários

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 244


Clique na aba Series
para definir valores
para o DataSet.

Clique em Series,

• defina Funcinários,
• DataSet,
• Dataset: Query,
• Labels: Func_Nome
• X: Func_Salario
• Bar: Func_Salario

E clique em Close para


finalizar.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 245


Clique no componente Query1 e digite código SQL abaixo.

Defina o DatabseName = digite_seu_alias,


clique na proprieda SQL ( TStrings ) e digite o
código SQL abaixo. Clique na propriedade Active
e defina o valor True.

Decrementa dias ,
menos 60 dias.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 246


R Pesquisando em uma tela e retornando resultado em outra

Dê um clique duplo no DbGrid, selecione o componente OnDblClick

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.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 247


R Frames
ΠFile РNew - Application.
• Mude a propriedade Name digite Menu_Frm, insira dois Panel ( aba Standard ), o primeiro Panel , mude a
propriedade Name para Panel_Esquerda, defina a propriedade Align para alLeft, clique no Caption, apaga o
texto Panel1, insira o segundo Panel , mude a propriedade Name para Panel_Direita, defina a propriedade
Align para alClient, clique no Caption e apague o texto Panel2, salve o arquivo como o nome Frame_Pai.

Foram inseridos dois


painéis ( Panel ) um na
esquerda e outro na
direita.

Ž 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.

Todos os passos acima


deverão ser repetidos
para os formulários:

• Funcionários
• Produtos

Clique duplo sobre o


componente Clientes_TB,
arraste os campos para o
formulário, após organize os
campos de acordo com seu
gosto.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 248


Formulários do projeto de Frames

Propriedade Name: Frame_Clientes

Insira outro frame para os


Funcionários. Clique na
propriedade Name e Insira outro frame para os
defina o nome deste Produtos.
formulário frame de Para ver os registros e iniciar
processo de cadastramento,
Frame_Func
alteração etc, clique no
componente Produtos_TB,
clique na propriedade Active e
defina o valor para True.

Propriedade Name: Frame_Func

Propriedade Name: Frame_Produtos


• Clique no Menu_Frm ( primeiro frame que criamos ).

Insira um componente
TreeView e um ImageList1 que
estão na aba Win32
Clique no TreeView, clique em
Images e defina ImageList1

Propriedade Name: Menu_Frm

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 249


• Clique duplo sobre o ícone ImageList1 para definir os ícones, clique no botão Add para adicionar dois ícones.

Para adicionar imagens


clique no botão Add,
para apagar imagens
clique Clear.

Insira outro formulário frame para crirarmos o relatório ( ou formulário de pesquisa ), na propriedade Name
digite Frame_Clientes_Rel

Abra o formulário “menu” ( Name: Menu_Frm ) e digite o código abaixo:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 250


Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 251
No evento do OnChange do TreeView digite o código abaixo:

Tela de Clientes

Como ficou a tela de Funcionários

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 252


Tela vazia ( Frame Vazia )

Relatório de Clientes ( com DBGrid ).

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 253


R Como livrar-se do “ponto” em um valor ?

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:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 254


Solução do problema:

R Como fechar formulário ao pressionar ESC ?

R Como usar eventos de sons do Windows ?

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 255


R Relacionando Funcionários e Empresas

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.

Insira um componente Table


( aba BDE ) e um DataSource
( aba Data Access ). Clique no
componente Table, defina
Cadastro de Empresas propriedade DataBaseName para
Relaciona ( Alias ), role para baixo e
altere a propriedade Name de Table1
para Empresas_TB, clique em
TableName e defina o nome da tabela
Clietnes.db e defina a propriedade
Active para True.
Resultado

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 256


Defina as propriedades abaixo do componente DBLookupComboBox1

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 257


R Cadastro de Pedidos e relacionamentos
No exemplo a seguir farei um pequeno Sistema de Pedidos e mostrarei como fazer relacionamentos.

ΠCrie as tabelas abaixo:

Índices, veja há dois campos,


o primeiro campo índice
Integer e o segundo campo
AutoIncrement.

• Crie o Alias para apontar para pasta onde se encontram as tabelas.

Ž 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.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 258


• Use o FormWizard, crie o formulário de Produtos. 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.

DatabaseName: Pedidos3 ( meu alias ),


Propriedade Name: Pedidos_Frm,
Propriedade TableName: Pedidos.db

’ 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 ).

Como já vimos até o


momento em vários exemplos
cada Table deve ser
renomeado para um nome
mais sugestivo, defina o
DatabaseName, Name de
cada table renomeado e o
TableName

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 259


Continua item “ ... Defina as propriedades básicas do formuláro: Caption = Cadastro de Pedidos. Agora
definina as propriedades do componente Itens_TB è Propriedade do formulário Name = Pedidos_Frm, clique
no componente Table1, pressione F11, na propriedade DataBaseName defina Alias, Name para Pedidos_TB,
clique na propriedade TableName = Pedidos.db, clique em Pedidos_TB, clique no botão direito em Fields
Editor, Add Fields e Ok ( para adicionar os campos ), clique no DataSource1, pressione F11, mude a
propriedade Name para Pedidos_DS. ( este passos DEVEM sempre ser executados quando inserimos um
componente Table e um DataSource ).

” Defina as propriedades para o componente Produtos_TB seguindo os passos do tem “, a propriedade


TableName terá a tabela de nome Produtos.db.

• Insira um DBGrid no formulário, defina a propriedade DataSource para Itens_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.

Após ter feito


associação do campo.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 260


ŒŒ Clique duplo em Itens_TB, clique no botão direito, clique em New Field, preencha a tela como exemplo
abaixo. Estamos criando o campo temporário Descr_Prod_Temp ( descrição de produtos ).

Œ• 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:

Cadastrando dois registros ....

Clique no canto direito do


campo, será mostrado um
dropdown para escolher
um produto.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 261


ŒŽ Digite o código abaixo nos respectivos eventos.

Œ• Crie o campo temporário para o Código do Produto:

Œ• Crie um campo temporário para o Preço Unitário:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 262


Œ‘ Crie mais duas divisões no DBGrid e associe os campos temporários:

Após selecionado o código será


mostrado o registro complete.

Œ’ Crie o campo calculado para armazenar o total ( qtde x preço = total ).

Œ“ Digite o código fonte abaixo no evento OnCalcFields:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 263


Œ” Clique no componente Itens_TB e digite o código no evento AfterPost:

•‹ Clique no componente Pedidos_DS, digite o código abaixo no evento OnDataChange:

Quando remover um pedido


também removerá todos
itens do pedoido.

Resultado: Falta alterar os títulos das


colunas, o Delphi como padrão
define os nomes dos campos.
Clique duplo sobre DBGrid,
clique na propriedade +Title e
altere o Caption de cada coluna.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 264


Após alterado os títulos do DBGrid:

•Œ 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.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 265


•• No Cadastro de Pedidios adicione um Edit para selecionar um número de pedido e um botão para
imprimir.

•Ž Digite as linha indicadas abaixo:

Digite linha da Procedure.

Digite Procedure Atualiza.

Esta rotina carregará a


lista de Números de
Pedidos no ComboBox.

Digite a linha Atualiza.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 266


No evento OnShow
digite Atualiza;

Filtrará o registro pelo


Número do Pedido.

•Ž 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.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 267


Você poderá testar o resultado do relatório clicando no Raio

•• Vamos criar o formulário do relatório. File New Other Report Ok

Banda Page Header:


Insira um QRLabel para digitar o título, clique na propriedade Caption e digite Relatório de Pedidos.

Banda Column Header:


Insira cinco componentes QRLabel e altere seus Captions de acordo com a tela gráfica acima.

Banda Group Header:


Insira um banda QRgroup, insira um componente QRExpr, clique na propriedade nos três pontinhos ( ... ) da
propriedade Expression, será aberta uma tela, clique no botão Database Field, clique em Query1, clique no lado
direito no campo Clie_Nome, clique Ok e Ok. Insira dois componentes QRDBText, clique em QRDBText,
clique no Quickreport ( tela branca onde serão definidos os campos ) na propriedade DataSet e defina Query,
clique em DataField e defina Ped_Nr_Pedido. Clique em no segundo QRDBText e defina o campo
Ped_Nr_Pedido.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 268


Banda Detail:
Insira cinco componentes QRDBText, clique em QRDBText, clique na propriedade DataSet e defina Query,
clique em DataField e defina Prod_Descricao

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)

Segundo QRExpr, neste multiplicaremos a Quantidade x o Preço Unitário e Somaremos.


Sum(Query1.Item_Qtde * Query1.Prod_Preco_Unit)

•• Digite os códigos abaixo nos respectivos eventos:

Resultado do relatório pronto:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 269


R Criando um Recibo simples
Criaremos recibos e imprimindo-os, este formulário não possuirá tabela para armazenar os dados do Recibo.

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.

A propriedade Name deste


formulário é Recibo_Form

A unidade abaixo foi salva com o nome de Recibo_Frm.pas

Imprime_Recibo_Txt é o
formulário onde o recibo será
impresso, este está na página
seguinte.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 270


Vamos criar uma nova unidade. Clique em File – New – Other e clique em Report. A unidade abaixo foi salva
com o nome de Imprime_Recibo_Texto_Frm.pas.

Posicione o mouse onde o balão


está indicando, dê um clique duplo
e ative os quadrinhos abaixo
informados.

Observe a nomeação dos


componentes QRLabels

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 271


:
Continua código referente página anterior...
:

Adiante veremos o código da


unidade que escreve o valor por
extenso.

Nome do formulário onde são


digitados os dados.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 272


Nome do arquivo que escreverá o extenso é Extenso_Unit.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 273


Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 274
Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 275
Resultado do programa Recibos

Após clicar no botão Imprime mostrará tela abaixo:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 276


R Protegendo seu programa / sistema
Este exemplo pegará o número serial do HD e criptografará ( codificará ) e armazenará no registro do Windows.
O programa PROTEGE deve ser executado por primeiro, após rode o sistema / programa, se este sistema for
copiado para outra máquina mostrará um mensagem dizendo que é um program ilegal, visto que cada HD possui
um código serial diferente.

Œ Crie a unidade ( File New Unit ) que conterá as rotinas de proteção do sistema, arquivo Rotinas.pas

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 277


• Crie um projeto novo e salve este com o nome PROTEGE e a unidade de nome Unit_Protege.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 278


Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 279
Execute o programa PROTEGE. Será regatado o serial do HD e criptografado no registro do windows.

Ž 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:

Digite esta linhas

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 280


• Agora vamos abrir o registro do Windows para ver como está. Clique em Iniciar, Executar e digite Regedit,
pressione enter, clique em Editar, clique Localizar e digite o texto Código_Serial_Secreto

Vamos procurar o texto


Codigo_Serial_Secreto

Veja abaixo o que foi localizado no registro do Windows

Veja o serial esta


codificado.

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:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 281


R Criando procedure
Você pode criar suas próprias Procedures e Functions para organizar o código da aplicação de forma a facilitar
sua leitura e manutenção, ou mesmo para reaproveitar procedures ou functions em outros programas.

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.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 282


Procedures - Somar e Subtrair

Digite as
procedures
Soma e Subtrai

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 283


R Criando função ( Funtion )

Boolean pode ser True


ou False
( Verdadeiro ou Falso )

Outro exemplo de função ( Function )

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 284


R Criando DLL no Delphi 6.0
Este tipo de arquivo contém funções e dados que outros executáveis podem utilizar quando estiverem rodando.
São úteis quando contém funções que serão chamadas repetidas vezes por vários executáveis. Ao invés de repetir
estas funções em cada um dos executáveis, estes utilizam uma fonte comum: as DLLs. O acrônimo DLL origina-
se de Dinamic Link Library - Biblioteca de Vínculo Dinâmico.

Œ 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

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 285


Ž Executando o arquivo DLL criado. Criaremos uma nova aplicação.

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.

Nome do arquivo dll que


fizemos anteriormente

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 286


R Gráfico - Banner
Insira um componente Image ( aba Additional )

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 287


R Gráfico - Retângulo

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 288


R Gráfico - Lua

R Gráfico - Url
Escreve a URL definida no programa na área de trabalho do Windows.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 289


R Gráfico – Texto randômico

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 290


R Gráfico – Texto sombreado

R Gráfico – Pirâmide 1

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 291


R Gráfico – Pirâmide 2

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 292


R Gráfico – Linha

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 293


R Gráfico – Elipses randômicas

R Gráfico – Retângulos
Anima fundo do form fazendo retângulos, constantemente gera retângulos no formulário.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 294


R Gráfico – Retângulo

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 295


R Arredondando valores

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 296


R Carregando uma cópia do programa na memória Ram.
Neste exemplo mostra como carregar apenas uma cópia do seu projeto para memória. Imagine, se for clicado 3
vezes no ícone que abre seu sistema e se este for carregado 3 vezes consumirá memória ram desnecessária, isto
poderá ser evitado com o código abaixo. Neste projeto foram incluídos 3 formulários.

R Arredondando valores ( outro exemplo )


Neste exemplo usaremos um Bitbtn, um Edit e um Label

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 297


R Ajustando largura em um DBGrid
Veja no exemplo abaixo a coluna Clie_Nome possui largura maior que a coluna Data Nascimento que não está
totalmente visível ou se ficar algum espaço em branco no lado direito do grid, para visualizar os campos de forma
que fiquem todos visíveis no DBGrid utilize o código abaixo:

Digite a Procedure
Reajusta_Larg_Coluna

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 298


R Ordenando registros em um DBGrid

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

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 299


Digite o código abaixo no evento OnTitleClick:

R Criando componente
File – New – Other – Component - Ok

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 300


Após instalado o
componente este estará
disponível na aba Samples

Vamos criar um componente “botão”, este será armazenado na aba Samples.

Defina a pasta onde deseja


armazenar o componente.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 301


Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 302
Na definição de tipo, o evento Click é declarado como um procedimento protegido. Os eventos são
procedimentos específicos para determinadas ações. Na implementação deste evento, devemos primeiro herdar -
inherited - as características do evento Click do componente herdado, e depois realizamos as mudanças
desejadas. No nosso caso, exibir um quadro de diálogo.

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.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 303


Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 304
Vamos aplicar o componente que criamos:

File New Application, na aba Samples selecione o botão e arraste-o para o formulário.

Execute o programa ( F9 ) e clique no botão, será mostrado uma caixa de diálogo.

R ActiveControl
Controlando eventos com o controle ativo.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 305


R Validando data de avaliação do sistema
Este exemplo mostra como validar a data de validação do sistema. Defina a data desejada.

Se a data for 16-06-2004, esta será


aceita, se for anterior não.

R Definindo cor de fundo para o formulário

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 306


R Barra vertical no formulário

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 307


R Mostrando Data e Hora do sistema
Insira um Label e um botão do tipo Bitbtn no form.

R Arredondando valores

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 308


R Filtrando registros com “Filter”
No exemplo abaixo insira dois componentes MaskEdit ( aba Additional ), um DbGrid ( Data Controls ), um
componente Table ( defina as propriedades do Table, como, databasename – alias, tablename ), insira um
DataSource e defina a propriedade Dataset = table1, um componente DBNavigator e defina a propriedade
DataSource para DataSource1

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 309


R Aplicação para Ms-Dos
File New Other Console application, sera aberta uma tela…

Será aberta a tela abaixo ( no Delphi 6.0 )

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 310


Segundo exemplo:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 311


Terceiro exemplo:

Quarto exemplo:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 312


R Gravando registro fisicamente
Um dos problemas dos programadores Delphi é salvar as informações fisicamente no disco rígido. Quando
estamos trabalhando com o programa as informações ficam retidas no buffer, o que, em caso de queda de energia
ou até mesmo se o usuário fechar o Windows com a aplicação aberta resulta na perda dos dados, que foram
processados na execução atual do sistema.

Para resolver o problema, basta acrescentar no evento AfterPost de cada componente Table as linhas de código
que estão abaixo.

Na lista de Uses acrescente a unit DBIProcs.

Dessa forma, você não precisa temer perder os seus dados por uma falha elétrica ou pela quebra do sistema.

:
:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 313


R Compactando arquivos com Winzip
Compactando e descompatando arquivos Delphi e Winzip

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

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 314


Unidade Principal

:
:

Digite as funções

:
:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 315


Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 316
Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 317
Defina as propriedades do componente SaveDialog

Em Options defina as
opções:

ofHideReadOnly = True
ofEnableSizing = True

No componente OpenDialg defina na propriedade Options as seguintes opções para True:

ofHideReadOnly = True
ofAllowMultiSelect = True
ofEnableSizing = True

No componente OpenDialgZip defina na propriedade Options as seguintes opções para True:

ofHideReadOnly = True
ofEnableSizing = True

Vamos criar outra unidade UExtrair para descompactar os arquivos compactados

Name: Abre_Arq_Zipado

Name: Pasta_Destino_Bit

Insira dois componentes


OpenDialogs ( aba Dialogs )

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 318


:
:

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 319


Compactando

Descompactando

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 320


R Validando Cartão de Crédito

Digite estas duas


variáveis

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 321


R Caixa de diálogo do Windows – Sair do Windows

R Rolando formulário com PageUp e PageUp


Selecione o formulário, ative a propriedade KeyPreview para True. Ao pressionar as teclas PageUp e
PageDown rolará o formulário para cima ou para baixo.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 322


R Navegando nos registros com botões
Podemos simular um clique em um botão específico do DBNavigator, para isto usamos o procedimento
BtnClick(Index: TNavigateBtn) disponibilizado pela classe TDBNavigator. O botão a ser clicado deve ser
passado como parâmetro.

Declare na cláusula uses a unit dbctrls. (se ainda não estiver declarado)

Botoes do navegador de dados

nbFirst .....Registro anterior


nbPrior ..........Registro anterior
nbNext ...........Próximo registro
nbLast ............Último registro
nbInsert .........Inserir registro
nbDelete ........Apaga registro
nbEdit ...........Altera registro
nbPost ...........Grava registro
nbCancel ......Cancela registro
nbRefresh.......Atualiza registro

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.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 323


R Inserindo imagem do tipo .Jpeg na tabela

Dê um clique duplo no
componente Table1,
selecione os dois campos
e arraste-os para dentro
do formulário.

Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 324

Você também pode gostar