3 delphi 7 237 371 - .. debian + delphi + excel...

135
Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 237 Delphi 7.0 Module 3

Upload: phungnguyet

Post on 26-Nov-2018

399 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 237

Delphi 7.0

Module 3

Page 2: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 238

���� Fecha formulário com animação

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

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

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.

Page 3: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 239

Page 4: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 240

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

Page 5: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 241

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

� Formulário de Login:

Índices secundários

para pesquisa.

Page 6: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 242

� Formulário do menu.

Dê um clique duplo no componente MainMenu para definir as opções

na tela abaixo:

Page 7: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 243

Clique duplo no componente ImageList, será aberta uma tela onde será possível adicionar ícones.

Page 8: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 244

Page 9: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 245

� Formulário de Clientes

Page 10: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 246

Ícones usados:

Page 11: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 247

Clique em ComboBox1, na propriedade Items digite um abaixo do

outro: Nome

Sobrenome Cep

Page 12: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 248

Page 13: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 249

Resultado:

Ao clicar no botão x vermelho, pede se realmente quer remover todos os registros.

Clicar no X no canto do formulário para fecha-lo, será pedido confirmação.

Page 14: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 250

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:

Page 15: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 251

���� Relatório ���� 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.

� File ���� New ���� Other ���� Report ���� OK Será aberto um formulário em branco abaixo ...

Insira um botão para o relatório.

Page 16: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 252

� 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 duplo no formulário QuickReport, será aberta a tela abaixo:

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

Page 17: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 253

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

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

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

Clique em QRSysData, mude a propriedade Data que esta

mostrando como default ( padrão ) qrsTime, mude para qrsPageNumber

Page 18: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 254

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. � Cada componente QRDBText deve ser associado com o Dataset e ao campo a ser impresso.

�� Abra o formulário onde se encontra o botão Relatório.

�� File – Use Unit, clique no formulário do relatório Grid_Rel_Frm.

�� Clique duplo ( evento OnClick ), no botão Relatório digite o código fonte abaixo: QReport_Todos_Clientes.Preview;

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

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, Column Header ou Detail ),

clique em Height e defina um valor para altura da

banda – mais alta / baixa.

Page 19: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 255

Resultado:

Considere o seguinte exemplo, ao invés de ser Cadastro de Clientes, ser apenas um Cadastro de Funcionários com alguns detalhes a mais.

� Todos os componentes que

estão na banda Title e Column Header são do 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 ).

�Insira um componente Table, clique na propriedade Name e digite Funcionários_TB_Rel, na propriedade

DatabaseName defina um Alias, na propriedade TableName defina o nome da tabela Funcionários.db, clique na

propriedade Active e defina o valor para True, clique duplo sobre Funcionários_TB_Rel, clique no botão direito, clique

em Add fields e Ok para confirmar.

� Clique na parte branca do formulário do relatório, clique na propriedade DataSet

e defina Funcionarios_TB_R

el

�Contando a quantidade de registros

que há na tabela. Insira um componente QRSysData1, clique na propriedade Data e

escolha a opção qrsDetailCount.

�Somando os salários que serão listados. Insira um componente QRExpr1, clique na propriedade

Expression e digite SUM(Funcionarios_TB_Rel.Func_Sa

lario)

Page 20: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 256

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

Resultado:

Page 21: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 257

���� Relatório ���� 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:

Após clicado em OK teremos a tela abaixo:

Clique / marque os seguintes quadrinhos:

• Title • Column header • Detail band • Summary

Clique OK

Page 22: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 258

� 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. � Selecione os campos a serem impressos:

� Defina detalhes do formulário abaixo:

� Como já vimos no relatório anterior os componentes

QRLabel servem para imprimir os Cabeçalhos ( textos ).

� Os componentes QRDBText imprimirão os

dados.

� Para totalizar os Salários insira um

componente QRExpr.

� Para imprimir a quantidade de registros da tabela insira um componente

QRSysData1, altere a propriedade Data para qrsDetailCount.

� Clique onde o bolão esta apontando, clique em

DataSet e defina Query1.

� Defina DatabaseName = Alias

Page 23: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 259

� 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 componente QRLabel e no

Caption digite Relatório de Funcionários.

Altere a propriedade

Caption de cada QRLabel

nomeando de acordo com o exemplo.

Propriedade Active = True

Page 24: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 260

���� Relatório ���� 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 )

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

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

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.

Page 25: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 261

� 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 QRSysData e altere a propriedade Data para

qrsDateTime e a segunda propriedade Data para qrsPageNumber.

� Insira um componente

QRSysdata ( aba Report ), altere a propriedade Data

para qrsReportTitle.

Insira componente QRLabel ( aba Report ) para definir os

cabeçalhos dos campos, altere a propriedade Caption de cada objeto, de acordo como os nomes definidos abaixo.

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.

Page 26: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 262

�� 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, digite o código abaixo.

Para visualizar e imprimir: QReport_Clientes_Todos.Preview;

Imprimirá o título do relatório onde mostra a palavra ( Report title )

Page 27: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 263

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

idYes idNo

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

Page 28: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 264

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\Delphi

6\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

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.

Page 29: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 265

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

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

Page 30: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 266

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

���� 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);

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

Page 31: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 267

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

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

Page 32: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 268

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

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

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

Page 33: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 269

Veja como esta a tela até o momento.

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

�� Digite a procedure abaixo:

Page 34: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 270

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

Page 35: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 271

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.

���� Ordenando colunas de dados no DBGrid

Ao clicar em uma das colunas ordenará os Nomes em ordem ascendente.

Page 36: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 272

Coluna Nome desordenada Coluna Nome ordenada – nomes ascendentes

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

Page 37: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 273

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

� Insira um componente DBChart ( aba Data Controls ):

Dê um clique duplo, veja abaixo será

aberta outra tela....

Page 38: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 274

Após clicar no botão Add será aberta a tela abaixo, clique no gráfico Pie ( torta ) e clique OK.

Page 39: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 275

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.

Page 40: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 276

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.

Page 41: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 277

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.

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

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.

Page 42: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 278

���� 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 um componente DBChart

( aba Data Controls )

� Insira dois componentes DateTimePicker1 ( aba Win32 )

Page 43: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 279

� Clique duplo no componente DBChart.

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

Clique no botão Add para selecionar

( adicionar ) um tipo de gráfico.

Clique no botão Title, será aberta uma tela,

digite o nome Funcionários

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 ☺

Page 44: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 280

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.

Page 45: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 281

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.

Page 46: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 282

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

Page 47: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 283

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

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

Foram inseridos dois painéis ( Panel ) um na esquerda e outro

na direita.

Page 48: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 284

Clique duplo sobre o componente Clientes_TB, arraste os campos para o formulário, após organize os campos de acordo com

seu gosto.

Todos os passos acima deverão ser repetidos para os formulários:

• Funcionários • Produtos

Formulários do projeto de Frames

Propriedade Name: Frame_Clientes

Page 49: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 285

� Clique no Menu_Frm ( primeiro frame que criamos ).

Insira outro frame para os Produtos.

Para ver os registros e iniciar processo de cadastramento, alteração etc, clique no

componente Produtos_TB, clique na propriedade Active e

defina o valor para True.

Insira um componente TreeView e um

ImageList1 que estão na aba Win32

Clique no TreeView, clique em Images e defina

ImageList1

Insira outro frame para os Funcionários. Clique na propriedade Name e defina o nome deste formulário frame de

Frame_Func

Propriedade Name: Menu_Frm

Propriedade Name: Frame_Produtos

Propriedade Name: Frame_Func

Page 50: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 286

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

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

Para adicionar imagens clique no botão Add, para apagar imagens clique

Clear.

Page 51: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 287

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

Page 52: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 288

No evento do OnChange do TreeView digite o código abaixo:

Page 53: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 289

Tela de “Clientes”

Como ficou a tela de “Funcionários”

Page 54: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 290

Tela vazia ( Frame Vazia )

Relatório de “Clientes” ( com DBGrid ).

Page 55: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 291

���� 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... � Como posso contornar este problema ?

Problema:

Page 56: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 292

Solução do problema:

Page 57: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 293

���� Como fechar formulário ao pressionar ESC ?

���� Como usar eventos de sons do Windows ?

Page 58: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 294

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

Cadastro de Empresas

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

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.

Page 59: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 295

Resultado

Defina as propriedades abaixo do componente DBLookupComboBox1

Page 60: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 296

���� Cadastro de Pedidos com relacionamento ( de dados )

No exemplo a seguir farei um pequeno Sistema de Pedidos e mostrarei como fazer relacionamentos. � Crie as tabelas abaixo:

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

Índices, veja há dois campos, o primeiro campo índice Integer e o segundo campo AutoIncrement.

Page 61: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 297

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

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

DatabaseName: Pedidos3 ( meu alias ), Propriedade Name:

Pedidos_Frm, Propriedade TableName: Pedidos.db

Page 62: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 298

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.

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

Page 63: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 299

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

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

Após ter feito associação do

campo.

Page 64: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 300

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

�� Digite o código abaixo nos respectivos eventos.

Clique no canto direito do campo, será mostrado um dropdown para

escolher um produto.

Page 65: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 301

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

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

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

Após selecionado o código será mostrado o registro

complete.

Page 66: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 302

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

� Digite o código fonte abaixo no evento OnCalcFields:

Page 67: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 303

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

Page 68: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 304

Resultado:

Após alterado os títulos do DBGrid:

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.

Page 69: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 305

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

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

Page 70: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 306

�� Digite as linha indicadas abaixo:

Digite linha da Procedure.

Digite Procedure Atualiza.

Digite a linha Atualiza.

No evento OnShow digite Atualiza;

Filtrará o registro pelo Número do

Pedido.

Esta rotina carregará a lista de Números de Pedidos

no ComboBox.

Page 71: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 307

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

Page 72: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 308

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.

Page 73: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 309

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:

Page 74: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 310

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

A propriedade Name deste formulário é Recibo_Form

Page 75: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 311

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

Page 76: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 312

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.

Page 77: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 313

Nome do arquivo que escreverá o extenso é Extenso_Unit.

Page 78: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 314

Page 79: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 315

Page 80: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 316

Resultado do programa Recibos

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

Page 81: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 317

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

Page 82: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 318

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

Page 83: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 319

Page 84: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 320

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:

Page 85: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 321

� 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

Digite esta linhas

Vamos procurar o texto Codigo_Serial_Secreto

Page 86: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 322

Veja abaixo o que foi localizado no registro do Windows

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:

Veja o serial esta codificado.

Page 87: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 323

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

Page 88: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 324

Procedures - Somar e Subtrair

Digite as procedures

Soma e Subtrai

Page 89: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 325

���� Criando função ( Funtion )

Outro exemplo de função ( Function )

Boolean pode ser True ou False

( Verdadeiro ou Falso )

Page 90: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 326

���� Criando DLL 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

Page 91: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 327

� 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

Page 92: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 328

���� Gráfico - Banner

Insira um componente Image ( aba Additional )

Page 93: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 329

���� Gráfico - Retângulo

Page 94: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 330

���� Gráfico - Lua

���� Gráfico - Url

Escreve a URL definida no programa na área de trabalho do Windows.

Page 95: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 331

���� Gráfico – Texto randômico

Page 96: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 332

���� Gráfico – Texto sombreado

Page 97: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 333

���� Gráfico – Pirâmide 1

Page 98: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 334

���� Gráfico – Pirâmide 2

Page 99: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 335

���� Gráfico – Linha

Page 100: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 336

���� Gráfico – Elipses randômicas

Page 101: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 337

���� Gráfico – Retângulos

Anima fundo do form fazendo retângulos, constantemente gera retângulos no formulário.

Page 102: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 338

���� Gráfico – Retângulo

���� Arredondando valores

Page 103: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 339

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

Page 104: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 340

���� Arredondando valores ( outro exemplo )

Neste exemplo usaremos um Bitbtn, um Edit e um Label

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

Page 105: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 341

Digite a Procedure Reajusta_Larg_Coluna

Page 106: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 342

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

Page 107: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 343

Digite o código abaixo no evento OnTitleClick:

���� Criando componente

File – New – Other – Component – Ok

Page 108: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 344

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

Após instalado o componente este

estará disponível na aba Samples

Defina a pasta onde deseja armazenar o

componente.

Page 109: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 345

Page 110: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 346

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:

Page 111: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 347

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.

Page 112: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 348

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.

Page 113: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 349

���� ActiveControl

Controlando eventos com o controle ativo.

���� Validando data de avaliação do sistema

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

Page 114: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 350

���� Definindo cor de fundo para o formulário

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

for anterior não.

Page 115: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 351

���� Barra vertical no formulário

Page 116: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 352

���� Mostrando Data e Hora do sistema

Insira um Label e um botão do tipo Bitbtn no form.

���� Arredondando valores

Page 117: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 353

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

Page 118: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 354

���� Aplicação para Ms-Dos

File – New – Other – Console application, sera aberta uma tela…

Será aberta a tela abaixo ( no Delphi 6.0 )

Page 119: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 355

Segundo exemplo:

Page 120: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 356

Terceiro exemplo:

Quarto exemplo:

Page 121: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 357

Page 122: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 358

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

:

:

Page 123: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 359

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

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

Insira um ListBox ( aba Standard )

Defina o nome do formulário de

Name: FrmPrinc

Statusbar

Page 124: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 360

Unidade Principal

:

:

:

:

Digite as funções

Page 125: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 361

Page 126: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 362

Page 127: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 363

Defina as propriedades do componente SaveDialog

Page 128: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 364

No componente OpenDialg defina na propriedade Options as seguintes opções para True: ofHideReadOnly = True ofAllowMultiSelec = 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

Insira dois componentes OpenDialogs ( aba Dialogs )

Name: Abre_Arq_Zipado

Name: Pasta_Destino_Bit

Em Options defina as opções:

ofHideReadOnly = True ofEnableSizing = True

Page 129: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 365

:

:

Page 130: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 366

Compactando

Descompactando

Page 131: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 367

���� Validando Cartão de Crédito

Digite estas duas variáveis

Page 132: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 368

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

Page 133: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 369

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

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

Page 134: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 370

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.

Page 135: 3 delphi 7 237 371 - .. Debian + Delphi + Excel ...jurandir1967.co.uk/2_delphi/delphi_7_tutorials/__3_delphi_7_237... · Delphi 7 - by Jurandir – Timbó – SC - Brasil ... Insira

Delphi 7 - by Jurandir – Timbó – SC - Brasil - Sharing knowledge 371

���� Inserindo imagem do tipo .Jpeg na tabela

Be Always Thankful

Everything comes and goes

Dê um clique duplo no componente Table1, selecione os dois

campos e arraste-os para dentro do formulário.