Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Delphi Aplicado Módulo 2A, Notas de estudo de Tecnologia Industrial

Apostila de delphi, curso completo

Tipologia: Notas de estudo

2010

Compartilhado em 21/02/2010

hacker-zombie-5
hacker-zombie-5 🇧🇷

4.9

(16)

13 documentos

Pré-visualização parcial do texto

Baixe Delphi Aplicado Módulo 2A e outras Notas de estudo em PDF para Tecnologia Industrial, somente na Docsity! R Fecha formulário com animação Ao clicar no “x” fechará o formulário de forma animada. ie o DR TT BE Nome, [Data Nasc. [Salário [Eidade [a [P[Jurandir 100/20 | R$500,00 Timbé Ao clicar no X para fechar | [tiko dulan 22M OMS Ff SOLOO Blumenau J O formulário, este começará | Eric Tomas 10072012 R$2.000,00 Curitbe ficar com os cantos [Rubia 01/04/1952 | R$1.000,00 Floripa arredondados, diminuindo e Time aumentando seu tamanho... - em ciclo, até que for confirmado Sim ou Não. private ( Private declerations | public ( Public declarations | V end] O e Nome DataMaso, [Salário |Eidade a var PIJurardi 10/10/2001 Ai$ 500,00 Timbé Forme Trormzf [tico Alan 22H 01993 R$ 500,00 Blumenau [Eric Tomas 10/2012 | R$200,00 Curitiba d ; Dlruia Di/04/1962 | R$1.000,00 Floripa tutupll Boclea: 1 Integer Eareeneeeeereraao PN reerermmeeseeeei [eo Tu Sair do programa? Digite as variáveis no início do programa. procedure TFormffTimeriTimerfjsender] TobjectHE var regif reozã hronf begin àf tutup À True then begin i à E o] regl CreareRoundrecrRonfo E io E 4 viden Doo neione Eco] zo secUindowRenltandle] regifl Truel en if à DB vidrh then begin tutup False] a end] Delphi Aplicado v liby English Way BI 26/03/2008 -1 36 - Jurandir / Timbó / SC 209 i£ tutup À False then begin i E E | regl CreaverecerondoR of fuicen air 2 30 neionciã regã CreateRectRgnllmidrn div 2 Bob uiccn] Heioncf compineRanfces:]l ces: ces2] zon or! secWindoureninancie] rei] True ir à DB uicch div 2 then begin tutup True] E en enal endã procedure TForm2lfFormcrestefisender] Tonject begin tucup Truel timerifEnsbled PB Falsel end procedure TFormiflFormCloseQueryilSender] TObject] var CanClose] Boolsani var rei bror begin i 1] timerifEncbled True] If Applicar ionmessagenox E HE ICONQUESTIONÊ NE YESNOfBidyes then CanClose [E True else begin Canclose False timeriffEnabled False regt CreateRoundRect Rgnlof 0] uiacn] Heisnt] o] ci seciindowRgnflHandlef regifl True] end] 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. procedure TFormzfBit Anima TelaClickfisenderf TObject] procedure Atrasolhmsec] Longinciã var star scopà Longintã begin start [E cerTickcountã repeat stop EB cetTickcountã Applicat ionfProcessHessages| until fistor E E coca em var maciel] may Integer] Delphi Aplicado v liby English Way BB 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 210 Formulário do menu. * clientes X sair Dê um clique duplo no componente MainMenu para definir as opções na tela abaixo: ImagesList. Para abrir o Cadastro de Clientes tecle ou FS Dbjeck Inspector Cadastro? ERRA ET re Clientes Sair Properties | Events | AutoHotkeys | maParent AutoLineRedue maParent Bimap (Nonel Dec ce Caption Cadastro [E ou F5) Checked Defauk False Enabled True Grouplndes HelpContext (O Hint Imagelndex O Name Cadastral Clique duplo no componente ImageList, será aberta uma tela onde será possível adicionar ícones. Menu) rm. Images Main Menu ImageList [ Selected Selected Image Transparent Colar Options DK, Colo clNone Erop a Ei Eolor € suetch || fone fone x] | Center Apply ng, Rei Add Delete Clear Export Delphi Aplicado v liby English Way E 26/03/2008 - 14 6 - Jurandir / Timbó / SC 213 procedure THenu FrmCadastroiClickjsender] Tobjecr ff Cria formulário dinamicamente hegin 4/1 With TClientes Frnfcreatel|se1t] Do Begin Try shoviodalf Finally Freef end] 44 try end] eng] 7 1 procedure THenu FrwfFormkeyPress[isenderf Tobject] var Kevi Char begin I£ rEY À then // E MATÚSCILO Cadastroifciick] IE KEY À Je! Then // c minúsculo Begin Applicationjiessagesox "ATENÇÃO! ] ME Ok |] HE IconInformatio: Cadastroifciicid End] endã procedure THenu FrufForukeyDounflSenderf TObject] var Kevf Vorad shit Tshitestare begin IF Key É VE FS then Cadastrolfciick] 7 executa o clique do botão i£ Key | VE ESCAPE then al endã procedure THenu FrnffSairiClickfsenderf TObject begin close] endã procedure THenu Fruf]PorwClosellsender] Tobjscef] var Action] Tclosshctionfl] begin if Applicarionfiessagenox E Mo YesMo À Mo Iconquestionh À wrio then Abort else ApplicacionfTerminacef // termina aplicação Delphi Aplicado v liby English Way BB 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 214 Formulário de Clientes [Met Mp Xá Código Nome Sobrenome [Elie Codi [Elie Mome Ed [Elie Sobrenome Ed Aniversário Cidade Cep NE da casa [Ele Data Nasc [Ce Cidade Ed [Elie Cep Ed [Elie Molas Endereço Telefone [Ele Endereco Ed [Cie Telefone: Ed Pesquisa rápida por =| O Pesquisar Clentes Tb Digite 0 que deseja procurar [a] Tt | Timer Clentes De public t public declarations | end] var Clientes Frm | TClientes Fr] Confirma Apagar | Boolean ;/ variável para apagar registro implementation tSR *.DFM) procedure TClientes FrmfPormCreatellsender] TObject var Emp Navegador |] TBitmarà begin Confirma Apagar E tr] Clientes Toforen // abre a tabela ciie Codigo Edljninr E Bmp Navegador EE Toicmanforearel Dat EdExit| sender TObject procedure TClientes Frmcli begin If clie Dara Nasc Edijtexc E 4 7 Then Begin Applicationfjmessagepox! ME Iconlarning Clie Data Masc Edjserrocus| en end Delphi Aplicado v liby English Way ES 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 215 procedure TClientes FrufjEdit ProcuraChangelSender] TObject] begin Do I£ Edit Procurafitext Then SpeedBucton Pesquisafciickà // executa clique no botão pesquisa ent procedure TClientes FrujformCloselisenderà TObject var Action Tcioseactionhã begin // 1 i£ Applicationfiessagesox E I Mo Iconquestion É Mo YesNof É mrNo then Ahort else begin // 2 If Clientes Thllstate In fasgait| I£ Applicationfmessagesox MB Iconquestion À mrNo Then Aborr else Begin // 3 Clientes ThlCancel Clientes Th Croce end] 2/3 end] ;/ 2 end] 71 procedure TClientes FrufClientes ThBegoreDelecel]Dataset] TDatasec| begin if not Confirma Apagar then Exicl I£ Applicarionlessagepox E ME YesNo À Ho IconQuestio HrNo Then Begin aborcã End] end] procedure TClientes FrulCliente: begin i£ diText E or [clic Nocasa Eotext E Dor Clie Endereco EdÃText Then begin ApplicationfHessagesox ThEeforePostffbataset]] Thataset Mb Iconlarning Raise Eihortlcreatel E endã endã procedure Telientes FrnfjTinerTimer]lsencerã TObject begin if Clientes TB]jRecordCount [BB O then Speed Apaga Todos Registrosfênabled BB raise else Speed Apaga Todos Registrosfênabied BB Truefl end] Delphi Aplicado v liby English Way BB 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 218 procedure TClientes Frullspesa Apaga Todos RegistrosClickisencer] To»iece[ begin Do NT confirma Apagar [E ralsef mb YesNo À Mo Icontarning E mrres then i£ Applicarionfiessagesox begin i£ not Clientes TEEo£ then Clientes TEDFirat| Clientes TEgDeletel while not Clientes TEJEO£ do begin crenceo aperod Clientes TEfDeletell end] endã // while Confirma apagar BB Truef endig Resultado: [bean AS » ip + = , x Código Mome Sobrenome J 1 [duran A [Palin Aniversário, Cidade Cep NE da casa [151967 [Timbó [agi20-000 | 10 Endereço Telefone [Rua Estados Unidos, 300 [1n47/382-3332 Pesquisa rápida por =| (O, Pesquisar Digite o que deseja procurar Clicar no X no canto do formulário para fecha-lo, será Ao clicar no botão x vermelho, pede se realmente quer remover todos os registros. pedido confirmação. (obra à Apagar TODOS registros da tabela??? 2) Fechar o Formulário? 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: Cadastro de Clientes. 4d x 36 - Jurandir / Timbó / SC 219 (66: [1uE M Oni Delphi Aplicado v liby English Way BI 26/03/2008 -1 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. —— [oii E Field roster Field Name Type) Size Koy 1/Cli Cod I t 2 Cli Nome a 20 3 Cl Cidade A 15 4 Cli Data Masc b 5 Cli ldade 2 dijo CiCod [li Mome Ci Data Nase]OI | & [>| 1 Mike dilan Palin 01/02/2002 SERA E e [| 2 Esic Tomas Pelin 1071172002 ê Clientes TE |] 3 Maicon êndrei Boges 22/11/2002 ERER ERES = [|] 4! Felps Nasato zero Tl Th] Pitt Dlentes DS: 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 ... [dores en fep a] Delphi Aplicado v liby English Way BB 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 220 O ED DES DE So SRD RREO SRS E Ea E EEE DE E Se Cada componente QRDBText deve ser associado com o Dataset e ao campo a ser impresso. Object Inspector QRDBTextl F e Clique em Clientes TB Relatório, clique na propriedade Active e defina o valor True. Clique no botão direito, Add Fields e OK Properties | Events | áligoment [taLettJustity a AlignToBand False AutoSize (Tue AutoStretch |False EiDiMode |baLeftT oRight Color Dlcivéhito: + 3 i Cod ERDETextÊ Cursor csletault Ea G a, DataField E poe namooao ataSet Alterando as propriedades dos objetos QRLabel e QRDBLabel. Propriedade Top: Posiciona QRDBLabel na parte CiCod [li Mome Ci Data Nase]OI | & superior da banda corrente. k 1 Mike Allan Pelin 01/02/2002 noi E . . [| 2 Eric Tomas Pelin 10/11/2002 É Clientes TB Alignment: Alinha o [| 3 Maicon Andrei Goges 22/11/2002 mai ORDBLabel no lado 4 Felipe Nassto 2222002 Tim Ta abe — Me). rentes DS: esquerdo, direito ou centro | 5 da banda. u Ebrisetório |: File — Use Unit, clique no coli do relatório Grid Rel Frm 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. Clique duplo ( evento OnClick ), no botão Relatório digite o código fonte abaixo: QReport Todos Clientes.Preview; < | Resultado: old EB NH BE DE me | | Falarório de Cliertes TADBRDDE 1753:Pág.:! | Código Nome Cidade Cata Nasc. 1 filee lar Pein Blumenau Din20s 2 Erio Tomas Pelin Curitohiba 104 142002 3 Maicon Endrei Gomes Fio do Hedo z2M 142002 4 Falipa Masato Timbé mora 5 larcos Kisner Fodêo Doing? Delphi Aplicado v liby English Way BB 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 223 O ED DS DE So SRD O RREO SRS E Ea EEE DE E Se 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 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. Todos os componentes que estão na banda Title e Column Header são do tipo QRIabel, basta alterar a propriedade Caption de cada um digitando o texto desejado. dos a o 1 2 3 LIGA ITU AA 1 i A TB Rel r a li LI Relatório de Funcio a r Z Todos os componentes E Nome Data admissão, Balário inicial que estão na banda Detail 47] ne fem even neretree mobo brometo a em ce são do tipo QRDBText, : Func Nome Func Data Admissas Func, Salarig, para cada um destes deverá ser definido as propriedades DataSet e DataField ( para associar o nome do campo ). NS Contando a quantidade de registros que há na tabela. Insira Clique na parte branca do formulário do relatório, clique na propriedade DataSet e defina Funcionarios TB Rel Somando os salários que serão listados. Insira um componente QRExprl, clique na propriedade Expression e digite SUM(Funcionarios TB Rel.Func Salario) um componente QRSysDatal, clique na propriedade Data e escolha a opção qrsDetailCount. Clique na banda Summary, clique no evento Before Print ( ante de imprimir ) e digite o código abaixo: procedure TOReport Clientes Re Sender] TORCu=tonDani begin orExprifluask [DB currencystrino À uu,amo.00'] en Relatório de Funcionários Nome Data admizs ão Salário inicial Jonas Mimas R$ 1.000,00 Felipe 2004000 R$2.000,00 Junior Sia — QM22002 R$2.000,00 Total de reg: 3 R$ 5.000,00 Delphi Aplicado v liby English Way BB 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. ore ted] 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: Report Settings Paper size Jesziosasmm e] width [2100 Length [2970 [Pora = Margins Too fino Let fingo Colum space 0,00 Bottom [1000 Biht [1000 Nonberafcamas [4] “Other Font [Arial else [O =| Unic [um E Clique / marque os seguintes Page frame uadrinhos: D Top Met Cobr [E Chance] Fmenih r& q T Botom Right Summary * Title Bands Length esa e Column header [” Page header [7 Fagetooter e Detail band 7 Tite 7 Eummad . 7 Column header Detail band Pê Print last page looter AbodBuickfepot | Preview | amb |[ DK Cancel Após clicado em OK teremos a tela abaixo: Pê Print fist page header Clique OK dj port Funcionarios SQL Rel 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 liby English Way BB 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 225 O O E DS DE So SRD O SEE SRS E Ea E EEE DE SS 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 Insira componente QRLabel (aba componente ORSD nar tere a Report ) para definir os cabeçalhos QRSysdata ( aba qrsDateTime ea Segunda dos campos, altere a propriedade Report ), altere a propriedade Data para Caption de cada objeto, de acordo propriedade Data para grsPageNumber. como os nomes definidos abaixo. arsReportTitle. [o aa e À ome, istmo Renda E jus, bRORTER aj 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. E lol] IReport title) iDate/Time], [Pageti, Selecione individualmente cada componente e defina suas propriedades: DataSet será Clientes Frm.Clientes TB e a propriedade DataField para definir os campos desejados. QRDBTextl TORDET ext Properties | Events | &lignment taLeftJustity AlignToBand | False Autodzo (TIS futoStretch False Cursor aibefauk Detarield [ole Nome isSet | Elen Delphi Aplicado v liby English Way E 26/03/2008 - 14 6 - 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. DS RSgUEEs: E ColumnHeaderBandi TORBsnd Fropeities | Events | Sar Enabled fome ForceNewlolu False Elfreme [TAHFrame] Cola E clack DrawBottom | True DrapLett Fase | DrawRight | False a] DrauTop False Style Aficith 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 E E ES Peltórob ( Report title ) procedure TClientes Frm.Bit Relatorio RelClick (Sender: TObject): Var Resp : Integer; begin OReport Clientes Todos.ReportTitle = if Clientes TB.RecordCount > ê then // se tiver rega na tabela Begin Resp := Application. MessageBox | VPrevisualizar!, Mo YesNo+Mh IconQuestion); if Resp - idyes then QReport Clientes Todos.Preview; if Resp = idNo then QReport Clgentes Todos.Print; end Previsualizar Delphi Aplicado v by English Way EE 26/03/2008 -1 36 - Jurandir / Timbó / SC 229 Ao confirmar previsualizar, será mostrado o relatório antes de imprimir na tela. Cadastro de Clientes naBiv.,rniga ge Elose Cadastro de Clientes OUDSIZOOZ 14:13:47 Nome Cidade E manos ., Mara Santos Rodeio orosriars Marcelo Andrade curitiba minoria Maitines Pereira Curitiba o4fogra002 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 [ES inglês, como traduzi-las ? jBEle|jmc<+m &ls E Printer setup No Delphi 6.0 abra a pasta: CMArquivos de programaslBorlandDelphióLib e edite o arquivo qrprev.dfm, e altere as linhas Hint ( somente !) de: Hint = 'Print' Para: Hint = Imprime” [RR BmelBjmcorm No Delphi 5.0, abra o seguinte caminho: CAArquivos de programaslBorlandWDelphiSVib e altere os Hints que estão no arquivo qrprev.pas Configura impressora Ahh, salve o arquivo J grprev.pas Delphi Aplicado v lIby English Way BE 26/03/2008 - 14 6 - Jurandir / Timbó / SC 230 R Fazendo cálculos no DBGrid com “OnCalcFields” ? Calcula e atualiza valores na grade de dados. Crie a tabela de Produtos. Restructure Paradox ? Table; produtos. db Field roster Field Name Type, Size |Key 1 Prod Cod - 2| Prod Descricao 50 3 Prod Quantidade 4iProd Preco a — + 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 Tablel, 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 DataSourcel. gere rt Tablet DataSource Fegs: Labelã Totais: Label? Labelf. Gajas D-TColumm 1-TColumn 2 -TColumn E] a) Teremos a tela abaixo: o Regs Label5 . 110. ea GR coli Totais! . Label? Label4 Delphi Aplicado v Iby English Way Bl! 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 233 DO a DEBE R DE E REED E 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 Tablel. Leo Arte Elsie Código [Descrição [Preço EEE Agora crie um campo “calculado” ( campo virtual ou um campo de uso temporário ). Clique no componente Tablel, 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 ... ). ConsultaProdutos. Frm.Produtos TB [E] Prod Cod Prod Descricao Prod Quantidade add Fields... Ctrl, k E [aaa] fada all Fields Chrl+F Cut Ctrl Copy Eric New Field Field properties Mame: [Temp Total =| Size Type: 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. Component: [Produtos TBTemp. Tot Field type C Data (º Caloulated [Lookup definition Lookup Veja abaixo o campo Calculado que foi criado. Temp Total [oca Ela js EE Prod Cod Prod Descricao Prod Quantidade Prod ler 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 liby English Way EÉ 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 234 O O ED DES DE So SRD O RREO SRS ES Ea E EEE DE eg Veja como esta a tela até o momento. e Tn Código [Descrição Preço [ide Total | * + 4 Produtos TB Produtos DS Pegs: Labels, Totais) 7 Label? Label4 [E (Rara No início do programa digite a linha da procedure abaixo: private procedure Atualiza Totelf // «— digite esta linha f Private declarations | public f Public declarations | endã Digite a procedure abaixo: Procedure TconsultaProdutos Frwflitualiza Totalf Var BookMark TEcokIarKd Total Realà Total Qtde É Integer! Cont Reg Integer] begin EookHark Produtos TEfIGetBookmarkã Produtos TEADisableControlsf Total 08 // zera variáveis Total Qtde o Cont Reg o Try Produtos TBfFirstà // primeiro registro While not Produtos TBfEoE£ do Begin Total Total Produtos TBTemp Totalflvaluel Total Qrde BE Total Orde oca TBpcar gonna ue Cont Reg Kcone res DRE 44 conta registros Produtos TERNextà end Finally // try Produtos TEflGotoBooinmarkiBookMar Produtos TEfFreeBooikmarkiBookHar Produtos TBfEnableConcrolsf endà // termina try Labelsilcaption IntTosteflcont Pe LabelzlCaption IntTostrÃTotal ordel Label4lCaption Format] Brocas! en Delphi Aplicado v liby English Way ES 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 235 R Como criar um gráfico “básico” ? Crie tabela de Produtos. Restructure Paradox 7 Table; Produtos, dh Field roster Field Name Type| Size Key] 1 Prod Codigo ” 2 Prod Descricao 20 “ E P+ Criar Alias para esta tabela, defina o nome Gráfico sm = Object Dictionary Edit View Options Help e x dg All Database Aliases Definition of Graficos Databases | Dictionary | Definition = Banco dedadosde a | | Type STANDARD = 38 DEDEMOS DEFAULT DRIVER — PARADOX 838 DetaulDD ENABLE BCD FALSE é 38 Framex PATH Es+Grafico Book4Dados é F GlobalCar e Crie a pasta Dados e grave a tabela nesta para não misturar com os outros arquivos. eço [EB Cuegrafico BockDados ê Produtos.DB Arquivo de banco de dados 68 (E +Asp basics 4KB E (3 +Grafico Jook Crie um projeto novo, File — New Application, clique na opção Project, clique em Remove from poject, selecione Unit, clique OK e clique Yes Search View Crcie tun Component Database Tools Shift+EJd fional] a Clique em Database ( que está na barra de títulos ), Form Wizard, 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: te Formi PE: a á Tã Tablel DataSourcel Prod, Codigo Prod Desciicao Prod, Qtde EdiProd [EdiProd Desoricao — [EdiProd Qt Delphi Aplicado v lIby English Way BE 26/03/2008 - 14 6 - Jurandir / Timbó / SC 238 Insira um componente DBChart ( aba Data Controls ): E] ais en E Ra . Table] DataSoureel Frod Codigo Prod Desciicas Frod Qtde: EdiProd [EdiProd Descricao — [EdiProd Qt ” = TDEChat Dê um clique duplo, veja abaixo será aberta outra tela.... [aa fpeM ci Ti] GE Seres | General| sis | Ties | Legend | Panel | Pagina | Wals | 30 | Series | Após clicar no botão Add será aberta a tela abaixo, clique no gráfico Pie (torta ) e clique OK. [1 | Series Tite da As ip Standard | Functions | Lina Horiz. Bar Fast Line Shape E ta Delphi Aplicado v Iby English Way Bl! 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 239 Ds a DEBE R DE E RE SE o Clique na aba Series, será aberta a tela abaixo: [aa fpeM ci Ti] Chat (Geres) OM Pis Seres! Coma) Gengial | Marks | Data Source | [ IGreedpR: Explode biggest [0 =] [7 Pattemo jo a Dimensions Ban: [5 RF Dak3D E Drder: [Detault r Pie Border.. Growpslices Custom Pie Badu | Style: [None - ERaus| ido | | ya YRadus/0 duo | | Lapas [Dho ep. Clique na aba Data Source, no menu dropdown selecione Dataset, clique no Dataset e defina Tablel, Labels: Prod Desricao ( que é a descrição do produto ), Pie, defina o campo Prod. Qtde, clique no botão Close. [aa fpeM ci Ti] Chart (Seres) =] OM Pe seisss Fomat | General | Marks Cata Source) (Datas) Datasel - Diataset: [Table] = Labels: [Prod Descricao = =| 1 DateTime Delphi Aplicado v liby English Way E 26/03/2008 - 14 6 - Jurandir / Timbó / SC 240 R Como criar um gráfico com SQL ? Crie a tabela de Funcionários. Restructure Paradox 7 Table Funcionarios. db: Field roster. Field Name Type| Size |Key| 1 Func Codigo * I 2| Func Nome A, so 3/ Func Cargo A 25 4 Func Data Admissão D &| Func Salario s [EH Crie um formulário para entrada de dados. AS Etr) Código Nome Funcionarios. TE EdiFunc [EdiFunc Nome Cargo Data Admissão Salário, EdiFunc Cargo EdiFunc D EdiFuno 5 ny Funcionarios. DS HO Gráfico Insira um novo formulário para fazer o gráfico. TDEChart io Ea: L A Query! [1 DataSourcel Insira dois componentes H DateTimePicker1 ( aba Win32 ) Insira um componente DBChart (aba Data Controls ) Data Incial - :: Data Final. aaa t702002 =] [1770572002 =] ME Gerar Brático | E Imprimir Delphi Aplicado v liby English Way EÉ 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 243 O O ED DES DE So SRD O RREO SRS E Ea EEE DE a Clique duplo no componente DBChart. [cinto ria] EEB À Seios | Seres | General) fis | Ties | Legend | Panel | Pagina| wals | 30 |] Eige Clique no botão Add para selecionar (adicionar ) um tipo de gráfico. Series Tile Clique no botão Add da tela acima, clique no tipo de gráfico Bar e Ok. Edno Ee) Standard | Fumetions | Line Bar Horiz, Bar Area Point Pie Fast Line Shape drvo Bubble e tel: OK Cancel Pao 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 [aiii jd Chart | Series | Seres | General| fis | Tíles | Legend | Panel | Paging | wals | 3b Series Title digite o nome Funcionários Delete Tite. Change Series Title Elore New Series Tile: Funcionários Change. | Close Delphi Aplicado v liby English Way ES 26/03/2008 - 14 Clique no botão Title, será aberta uma tela, Cancel 6 - Jurandir / Timbó / SC 244 api o Eta . . Clique na aba Series para definir valores para o DataSet. Series | | lug, 7 Geneial| pis | Titles | | Series Tie | [oito Ele Eta] Clique em Series, defina Funcinários, DataSet, Dataset: Query, Labels: Func Nome X: Func Salario Bar: Func Salario E clique em Close para finalizar. [Mefrife] TDEChart ; [o Que í + f y ! DataScucel of | ooo aissaaaaooossocanassasoooasacossooasoaosnooos o Data Incial: Data Final: 17/09/2002 +] [17/09/2002 | ME Gerar Gráfico Imprimir Delphi Aplicado v liby English Way ES 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 245 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 Panel, 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. AVE ira! Foram inseridos dois painéis ( Panel) um na esquerda e outro na direita. File — New — Frame, insira um componente Tablel, clique em Tablel, clique na propriedade DatabaseName e defina o alias, clique na propriedade TableName e defina a tabela Clientes.db, clique no Tablel, 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 DataSourcel clique na propriedade DataSet e defina Clientes TB, clique no componente DataSource e na propriedade Name defina o nome Clientes DS. Insira un 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. dra TS Código 1 Clentes TB Cientes DS Todos os passos acima deverão ser repetidos para os formulários: EMA MES] * Funcionários e Produtos Fone 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 liby English Way EÉ 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 248 dr pl Tr Formulários do projeto de Frames Cadastro de Clientes FE Código Nome Pedro Clientes TB Endereço DK. Fiame. lentes E R Frame Clientes Rel Ec 1 Frame. Filhal Clientes DS Frame Func Help Frame Produtos Propriedade Name: Frame, Clientes Fone Fax a nsira outro frame para os Po Funcionários. Clique na propriedade Name e Po defina o nome deste formulário frame de E | [=| | [oo Frame Func 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. dido ga Cadastro de Funcionários Cádigo Nome ig Mr (Deer foeediz CEE “mete |] Cadastro de Produtos DRE el Data admissão EE DEE dia Fussoa Salário DRE dita Propriedade Name: Frame, Func Clique no Menu Frm ( primeiro frame que criamos ). Código Descrição DBEdil |DBEditz Produtos TE + Qide Preço [ DBEdi DBEdiá a Piodutos DS E: Frame Pai Insira um componente TreeView e um ImageList] que estão na aba Win32 Clique no TreeView, clique em Images e defina ImageListl | ImageListl . Propriedade Name: Menu Frm Delphi Aplicado v liby English Way EÉ 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. o do Rr REA RA RES Selected Image Options DK Pe Cancel e e Images a & Para adicionar imagens clique no botão Add, para apagar imagens clique Clear. Delete Clear Export. Insira outro formulário frame para crirarmos o relatório ( ou formulário de pesquisa ), na propriedade Name digite Frame Clientes Rel fe: Frame Clientes Rel Relatório de Clientes Código [Nome [Cidade |DataNae. | 4 o E [| 1 Mike Allan Pelin Timbó Dm 197 [| 2 ErcTomasPelin Rodeo m/03n878 Ee [| 3MarcosKimer Curitiba 01/1071908 [| aFelpeMassto Curitiba 04/03/2002 Frame Vazia [| GuandiAPelin Timbó UrM2nsss o + [| 10Nos Indaial 13/m1 1508 EE [| 12MaceoFerami Ascura 22/05/1968 Eis baraal [| 13 Jonas Persuhn 22m sr? sa Datalhicial Data Final Po po Abra o formulário “menu” ( Name: Menu Frm ) e digite o código abaixo: private ft Private declarations | Freme Anterior À Trreme] 4// digite esta linha public t Public declarations | end var Menu Fr] THenu Frrdd implementation uses FrameZ Clientes] Frames Func] Fremea Produtos Framei Filhoif) Rel Frame Clientes Delphi Aplicado v lIby English Way BE 26/03/2008 - 14 6 - Jurandir / Timbó / SC 250 Tela vazia ( Frame Vazia ) Menu Principal =I-fa Cadastros 3 Clentes = Funcionários Ed tam Hiro) = Relatórios : £3 Rel Recibos Frame Vazia Rel Contas 3 Diversos Relatório de “Clientes” ( com DBGrid ). rara! BEI | Cs Cane Relatório de Clientes = Funcionários Plelatários Código [Nome [Cidade [DataNaso | 4 [| 1 MikedllanPelin Timbó IMASA Pel Contas Z Eric Tomas Pelin Rodeo m/03n1978 Dibtertos [| 3 Marcos Kisner Curitiba (01/10/1988 4 Felipe Nasato Curitiba (04/03/2002 [| 6 durandirAPelin Timbó rmnass [| tono Indaial 13/01/1288 12 Marcelo Ferrami Ascuna 22/05/1908 [| 43 donas Persum MAS? »” Data Inicial Data Final Pesquisa periodo Do po procedure TFrame Clientes RelfBit PesquisaClick]senderf TObject var Resp Integer “f variável inteira Datal] Dataz À Taste] // variável do tipo data begin // linha abaixo verifica se foi digitado alguma data If rasmeaicifrext E 4 40 or Emaskeaicofrexc E Pre then Begin Applicationfessagenox “atenção! Mo Ok À Mo IeonError MaskEditijsecrocusf em Datal SterToDatefMaskEditapText “º converte texto p/ data DataZ SerToDatefMaskEditafText TableidOpenh // abre tabela Table li IndexName “º indice secundário Tablel)setRangalidacalfDDacaz fé pesquisa pelo periodo endiã Delphi Aplicado v liby English Way BI 26/03/2008 -1 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 ? [DE cr MS Sup] : Valor * "To Pecentual%: Total * oo: Valor Pecerlual % Total Problema: procedure TExemplosz FruBit OKClickgsender] TObject] Var vi vafvs E resif begin 1£ Edirilltexe B '! then Begin aplicar tonfMessageno+UInfsnie im valor rencrada iavárica! E om ox] Editillsetrocusf end Else begin vi StrToF loat) pal Text] va atrToFloat pal Text 1008 vz E vil Edic3flTexr FormatFloac|' ger, espgo.DO! | vafliooiE endÊ end Debugger Exception Notification “100,20 is not à valid floating point value”, Process stopped. Lise Step or Run to Q Project Clientes. EWB.exe raised exception class EConvertError with message continue, Help TO visa (CPU Window Q 100.20" is not a valid floating point value. Delphi Aplicado v liby English Way BI 26/03/2008 -1 36 - Jurandir / Timbó / SC 254 lução do problem: procedure TExemplos2 FrwBit OKClickisender]] TObject var 0 vi velv E real Function RetiraPontosfs À string] E strinsf var if us begin Do while i fo 1] der nº = Pos ng Result EE sE endÊ begin I£ Editiftext E !! then Begin appiscac ionfhnescadenovfUTRroRe um vao, entrada imáiica: E mo or Editifisecrocusf end Else begin vi StrToFloatfReciraPontosfEditisText vaz StrToFloatfiReciraPontosfEdit2pText 1008 va E vi Egiraftexe EE rormacrioardiess, essgo.00! ] vaicol end end R Como fechar formulário ao pressionar ESC ? procedure TExemplos2 Fenfrorwsnowfsenderf TObject begin EeyPreview [E Truc // Ativa tecla Vk Escape endã procedure TExemplosz FrmfrormkeyDownfsenderf Tobjectf] var Feyl Vora] shift] Tshiftstate begin 1£ Key À Vk Escape then CLosel] // Ao pressionar a tecla ESC fecha programa end R Como usar eventos de sons do Windows ? Som procedure TFuncionarios FrmBit SomClickiisender] Topiectiã begin MessageBeepfolà [ vento Som Padrão ) f 16 = Evento Parada Crítica | 1 32 = Evento Pergunta ) t 45 = Evento Exclamação | 1 64 = Evento Asterisco | end Delphi Aplicado v liby English Way ES 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 255 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: Field roster Field Name Type Restructure Paradox 5.0 for Windows le: Itens.DB | Restructure Paradox 5.0 for Windows Tablz; Pedidos.DB > Field roster: Field Name Type] Size |Key] T + ta 3 Ped Cli Cod Relaciona Restructure Paradox Field roster Field Name Type) Size |Key 1 + E 2 Clieg Nome A so 3 Clie Cidade A 20 Field roster. Field Name Type, Size |Key 1 + 2/Prod Descricao A 50 3) Prod Qtde I 4/Prod Data D &|Prod Preco Unit 5 ltem Produto UA E teta SERA RU Tie ee EL LER ATT AE) ltem Cod Prod Relaciona ES SE ltem Qtde Crie o Alias para apontar para pasta onde se encontram as tabelas. ——|+ — Índices, veja há dois campos, o primeiro campo índice Integer e o segundo campo AutoIncrement. 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” s. Use o FormWizard e crie o formulário de Clientes. Defina as propriedades do Form, Table, Alias etc. e TS Cora Clientes TB Código Nome do olinte Ediliie E [Edilhe Nome E Ta Clientes. DS Delphi Aplicado v liby English Way ES 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. [TST Aptos = . Produtos TB Código Descrição do produto — EdiProd [EdiProd Descricao 1a Qtde Data Valor Frodutos DS EditProd JEditProd D JEditProd Va 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 fé: Cadastro de Pedidos , Pedidos TB Ni Pedido Data EdiPed [EdiPed Da so Pedidos DS Próximo passo é fazermos o relacionamento entre as tabelas Pedidos e Clientes. Insira um componente Tablel, altere a propriedade Name de Tablel 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 DBLookupComboBoxl, 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. E RES AE Ni. Pedido Data Pedidos TB Cientes TB EdiPed [EdiPed Da = E Cliente ta + DBLookupComboBos1 Pedidos DS mentes DS 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 ). Ler ap of] 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 E E E E Nr Pedido Data Pedidos TE Clientes TB Itens TE Produtos TB EdiPed | [EdiPed Da Ea RM] Tê é Cliente Pedidos DS Clentes DS Itens DS Produtos DS DBLookuplComboB ox! r Delphi Aplicado v Iby English Way Bl! 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 t Propriedade do formulário Name = Pedidos. Frm, clique no componente Tablel, 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 DataSourcel, 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. DT Ste Ao “cefeol=lide ml E E E Pedidos TB Clientes TB Itens TE Produtos TE Nr. Pedido Data E + + + Fu pa a qu Ciente Pedidos DS Clientes DS Itens DS Produtos DS Itens do Pedido Produto Temp 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. [a Alia E Field Link Designer, gabi Indemos [Primary = Asgaable lndemes — |Primay - Detail Fields Master Fields Detail Fislds Master Fields Item My Pedido Relac; Item Produto Ped Data ho Pedido 1 Item Produto LI Ped Ch Cod Relacion, Ped Ci Cod Relacion, fsdd Joined Fields doined Fields ; ltem Ni Pedido Rielaciona > Ped Mi Pedido jele! Clear Cancel Help Cancel Help IndesMame MasterFields Após ter feito associação do campo. Masterqurce | Pedidos DS Mame lters TE Objecitview Folss Delphi Aplicado v Iby English Way Bl! 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 260 Crie mais duas divisões no DBGrid e associe os campos temporários: Cadastro de Pedidos A o a e Nr. Pedido Data 13 [2240/2002 Cliente Jonas Pershun Itens do Pedido Cod Prod Temp [Desc Prod Temp Preco Unit Temp | [| 3 Prego 15415 R$22,00 [| 4 Lima A$450 1 2 . . a 4 3 Após selecionado o código será 4 mostrado o registro complete. Crie o campo calculado para armazenar o total ( qtde x preço = total ). EAR Field properties Mame: [Total Temp Component: [Itens TBTotal Temp Type: Currency =| |size: 0 Field type O Data € Lookup Lookup detiritiom Cancel Help Digite o código fonte abaixo no evento OnCalcFields: procedure TPedidos FrmfItens TECaleFields[Dataset) Thatasetil begin Tr Itens TBTotal Templlvalve [E Itens TIcem Ordeflvalue É Itens TePreco Unit Tewplivalue] en E [erp eos rd dm a e Nr Pedido Data 12. [22h022002 ltewe do Pedido. Cod Prod Temp [Desc Prod Temp [tem tdo [Preco Uni Temp [Total Temo | & »| 4 Lima 10 R$450 R$45,00 [| 5 Nivelador 3 R$20,00 R$6000 [1 3 Prego 15415 3 R$22,00 R$726,00 — 263 Delphi Aplicado v liby English Way ES 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC O O ED DS DE So SRD RREO SRS EEE EEE DE E o Clique no componente Itens TB e digite o código no evento AfterPost: procedure TPedidos FrmfItens TBAfterPostifbatasetà Thavasecf “! Soma Total do DBGrid var Marcador |] TBookmarkã Total I Real begin Harcador Itens TEfGetBookmark] Itens TefbisableControl=à Total E Try Ega E ru Itens Tefrirse] while not Itens TEEOF do begin Total 1 E Itens TEToral Templlvalue] Itens Tefnexcà end Finally Itens TollGotoBockmark [lHarcador! Itens TpfFresBockmark [Marcador] Itens TEfEnshleControls) end Labelsfcaption BB Formaccurr]l'g, 840.00] Totalã enaf Clique no componente Pedidos DS, digite o código abaixo no evento OnDataChange: procedure TFedidos FrmPedidos DSDataChangel sender Tobjectf Field] Triel begin 44 Atualiza "Total" Itens TBAfterPostfiitens TER] end procedure TFedidos FruflPedidos TppeforeDeletefbataset]] Trataset|l */ Apaga Itens relacionados begin - while Itens TeRecordCount À 0 do Quando remover um pedido Itens TBfbeletell também remo verá todos endã 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, [erp PO» a a Nr. Pedido Data clique na propriedade +Title e + 8[10/10/2002 altere o Caption de cada coluna. Cliente Enc Tomas Pelin lteri do Pedido Cod Prod Temp [Desc Prod Temp. [item tee [Preco Unit Temp [Total Temp | 4 3 Plego 1615 10 R$2200 R$220,00 [| 4 Lima 2 R$450 R$99,00 Pl 3 Prego 16415 n R$2200 R$242,00 Delphi Aplicado v liby English Way BB 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 264 Após alterado os títulos do DBGrid: [is [ts ar O [e Pt ia e Mi Pedido Data [om fionor002 Cliente Eric Tomas Pelin ltens do Pedido [| Cód Produto Produto Qtde [ Preço Unit | Total 3 Prego 15x15 10 R$22,00) R$220,00 4 Lima 22 A$450) R$99,00 3 Prego 15415 n R$22.00) R$242,00 E 561,00 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. Clientes Produtos Pedidos |. procedure THenu FrmBit ClientesClicksender] Tobjecc begin TD Clientes Frmshowiods If end procedure THenu FrmfBit ProdutosClick]sender] TobjectB begin TD Produtos Frmshowiods If em procedure THenu FrmBit PedidosClickfsenderf Torsectl begin TD Pedidos FrudlShowHoda if endll Delphi Aplicado v lIby English Way BE 26/03/2008 - 14 6 - Jurandir / Timbó / SC 265 Você poderá testar o resultado do relatório clicando no Raio F DIA Lolrf=] | ltem Nr Pedido Relaciona)Prod Codigo|Prad Descricao Fed Data [Che Codigo [Cle Nome Ped Ni Pedido[lter 3 Prego 15415 10/10/2002 2 Eric Tomas Pellin N 4 Lima 10/10/2002 2 Eric Tomas Pellin 4 3 Prego 15415 10/10/2002 2 Eric Tomas Pelin n 3 Prego 15415 22/10/2002 2 Eric Tomas Pellin 12 a) 5 Nivelador 220/2002 2 Eric Tomas Pelin 12 4 Lima 22/10/2002 2 Eric Tomas Pellin 12 4 Lima 220/2002 1 Mike Allan Pelin 15 2 Alicate 22/10/2002 1 Mike Allan Pellin 15 a ED) Bl Vamos criar o formulário do relatório. File - New — Other — Report — Ok Is uia SáL SE ne Relatório de Pedidos PO Descrição do Produto, Eód, Produto, Bru; Preço Unit) Total: . Eamtdo : | Chiente, Descrição do Produto, [Cód Produto Bride, Preço Unit) Total: E Eta ados Í : Queryi.Clie Nome, Nr. Pedido; Ped Nr Pedido, Pata Pedido; Ped Data, iron Header feed Eu isummary Banda Page Header: Insira um QRLabel para digitar o título, clique na propriedade Caption e digite Relatório de Pedidos. Ban lumn H r: 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 lIby English Way BE 26/03/2008 - 14 6 - Jurandir / Timbó / SC 268 Banda Detail: Insira cinco componentes QRDBText, clique en 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 Queryl, clique no lado direito sobre o campo Item Qtde, clique OK, OK, OK, OK. SUM(Queryl.Item Qtde) Enabled True Expression SUM(Query. tem, [ltde] 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: procedure TQReport PedidosiffbetailBandiBeforePrintflsenderfl TORCUstomband var PrintBand] Boolea begin oRExprafinask [BB currencystrino À "fg, fgio.00'] m e procedure TQReport PedidosisumaryBandiBeforePrintffsenderf TORCUstomBandd var PrintBand] Boolea begin orExprafinas= EB currencystrino À "fg, gio.00'] m e Resultado do relatório pronto: id BEB Mor H GB DE De Relatório de Pedidos Cliente Deserigão do Produto Cód, Produto Gtde Prego Unit. Total Bio Tomas Pellin Nr. Pedido: 18 Data Pedido: 4001/2002 Alicate E 0 R$1500 R$150.00 Prego 15:15 3 10 R$z200 R$220,00 Lima 4 m R$450 R$90,00 Mivelador 5 no R$2000 E$2.200,00 180 F5 268000 Delphi Aplicado v ldby English Way BH 26/03/2008 -1 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 Memol ( para o histórico ), um MaskEdit ( aba Additional), um SpinEdit ( aba Samples ), insira dois botões, uma para Imprimir e outro para Sair. A o fr ES Home Histórico JS A propriedade Name deste formulário é Recibo Form Valor Quantas cópias ? oi = E Imprime | MX sair A unidade abaixo foi salva com o nome de Recibo Frm.pas public t Public declerations | end] var Recibo Form TRecibo For Imprime Recibo Txt é o formulário onde o recibo será impresso, este está na página seguinte. implementation uses Imprime Recibo Texto Frm 15R *. DEM) procedure TReciho FornfBit Imprimeciickfsender] Tonjecr]ã begin Imprime Recibo Txr Frwfprintersectingsfcopies [E spingair orde copiasfvaluef] Imprime Recibo Txt FrugPreview en procedure TRecibo FornBir sairciickfsenderf Toniecr begin Do close endiã Delphi Aplicado v liby English Way BI 26/03/2008 -1 36 - Jurandir / Timbó / SC 270 Nome do arquivo que escreverá o extenso é Extenso Unit. unit Extenso Unit interface Function Extensolfvalor] dousieBBstring] implementation uses sysUcilsf ff====————— const Centenas] array Unidades array! o£ strinsflic] | HoedaSingular NoedaPlural Centsingular CentPlural Zero Function Ext3flPartefstrinoJEstrino] var Base Strin Digito | id begin Base digito E 1 srpereed = ࣠Digito ] O then Base nu else Pase [E centenasfDigito) à pisico E af ana pm 1100] then Fase Digito BJ strToIntfPartel if bigito É 1 then begin Digito serToIntilparcefsi if Base !! then Base Base Fase Base I end else Delphi Aplicado v liby English Way BB 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 273 begin if [Base UE ama Ps E E then Base Fase É i£ Digito ] 1 then Base Base | Dezenasfaicito]ã Digito er Ro i£ Digito À O then begin if Base 1! then Base Base ço Base E Base |] Unidadesfbigito! end] end] Result EE Fascf Function Extensof var ComoTexto À strim Parte Strim begin Result a ComoTexto E FloatTostrFiabslfvalorBcrrixedgi=]z[E ff Acrescenta zeros a esquerda ate 12 digitos while LengthiiComoTextofl É 15 do ne ooo O am /f Retira caracteres a esquerda para o máximo de iZ digitos while LengthlComoTexto 15 do pera la “4 Calcula os bilhões Parte BB ExcoficopyfcomotextoBidls 1 then if Pa a 153 Parte Parte else if Farte then Parte Pr ccd Result Pr ccd ff Calcula os nilhões Parte BB ExtsflcopyficomoTexco]af: E if Parte BB ' then begin if Result BB |! then Result BD Result À if strToIntÃCopyllcomoTextopa]s E 1 then Parte Parte | else Parte Parte Result Result Farte en Delphi Aplicado v liby English Way ES 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 274 ff Calcula os nilhares Parte [E ExcollcopyficomoTe=co]7B:E if Parte E] '' then begin if Result EB '' then Result BE Result Parte Parte Result BE Result | Parte] em /f Calcula as uniciades Parte BB ExtsfcopyficomoTextofio i£ Parte E '' then begin i£ Result E Pa i£ Fracfivalor] É O then Result EE Resut | E! else Result Result Result Result À Parte! *f Acrescenta o texto da moeda if Inthfvalor| 1 then Parte EE E nosdasinguiar else Parte a O Loo i£ rio FEcl then Parte a Result BE Result | Parte 4! Sê o valor for zero, limpa o resultado i£ intlfvalor]] É 0 then result EE VE **Calcula os centaros Parte [E Ext3 E copylicomotexto]:4]z DE i£ Parte E '' then hegin i£ Result EB '' then Result BE Result if Parte À Unidades[ifl then Parte Parte CentSingular else Parte Parte CentPluralà Result Result mi “4 Se o valor for zero, assume a constante ZERO i£ Valor É 0 then Result zeroà en end] Delphi Aplicado v liby English Way BB 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 275 Function SerialNaoOkliNomesistema |] string] À Boolean] var serialc] SerialREG | String] Reg TRegistryd begin SerialNacok False Serial serialh Reg TRegistrygCreatel] Try RegRootKey [E HKEY CURRENT USER] if RegOpente Homegistemall Falsel] then SerialRES else begin serialNaook [E True] Exit endã SerialREg CriprogrartaliserialREçÃã if serComplpcharfserialefpcharseriaireofi EB 0 then begin serialNaook [E cruel Exit end Finally o Reogrreef end end endi] Crie um projeto novo e salve este com o nome PROTEGE e a unidade de nome Unit Protege. Mu nongae unit Unit Protege interface uses Windows] Hessages] sysUtils| classes] Graphics]] controls] Forms Dialogs]] StaCtrls[l Buttons) registry) ExtCtrls! type Trorml I o Edicih TEgit Delphi Aplicado v liby English Way BB 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 278 O ED DES DE SO SRD RREO SE SRS E Ea EEE DE SS q Function SerialNuniFDrivefstring] strins] Var serial DUor: DirLenh Flags É Duor DLabel ArrayfoBB] of char] begin Try Gecvo lume Informar ionffpCharflrDrive aLabel] 12] Bseriaif DirLenh riags] niif oi Result [E Inctonexfseriaif o Except resuir HE VE endã endf Function Criprogratall srr À string] À stringã Var Len] i E tora] Const begin Len BE lenochf scr[ for à BB 1 to len do cstrfi cp BD xor oralichave Lonsa]i: DA Result str end procedure TForni]; peedButton Protegeclickfsenderf TObject var serial | string] Reg TRegistryd begin Serial serial Serial Criprogratafiser iai Reg TRegistryfcreate Try RegffRoorkey [à HKET CURRENT USE then serial i£ Reglopente Regulritestr in Finally pefricg od RegiFreefl enai Applicat ionfnessagesox]] Proteção ativada... | saTIvADO! | mo ox]] end Delphi Aplicado v liby English Way BB 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. PROTEGE ATIVADO! 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: iz [Er D E ont Did eee a out 6 :: <<< Protegido contra cópias ilegais >>> Se esta tela for aberta quer dizer que CÓPIA é LEGAL ! 1 | Executar o program PROTEGE na máquina onde será instalado o sistema ! 210 programa PROTEGE pega o NR SER&IL DO HD e criptografa; - - este serial ficará amazenado no REGISTRO do Windows ( Regedi ) program Sistema Protegido uses Forms Tindoval Rotinasf // <——— abre o arquivo que contem as rotinas e proteção Unit Protegida àn MitlProvegida pas! (roms) (SR *.res) begin ApplicationfInitialize ApplicationgCreateFormjTrormi Formiã Digite esta linhas Applicarionrm] em Delphi Aplicado v liby English Way BI 26/03/2008 -1 36 - Jurandir / Timbó / SC 280 Procedures - Somar e Subtrair Edil Edit : [700,77 200.99 [700,77 [200.99 Subtrai | Soma | Soma | Subtiai | É O 0176 45978 procedure Subtrai BicClickfSenderf Tobjecc private 4 Private declarations | procedure Somaflx YE strinsiã function Subtraillz] 7] stringà string] public 4 Public declarations + endf Digite as procedures Soma e Snhtrai var Formal Trormafl MK procedure TForrmafScragiz] E String begin Labeliflcaption BB FloatTostrfistrToFloaca] E sectorioa:[] E en procedure TFormdsona Func BitClickfsender]] TObject begin somafleaititext] eoicafite=E x en function TFornaf; begin Result BE FloacTostrflscrTorloacal E sertoricac[irE mu ubtrai, Strin Strin e procedure TFormilsubtrai BitClickisenderà TopjectHã begin Labeliflcaption BB subtraifleaicifite=t] eaicalite=DE en Delphi Aplicado v liby English Way ES 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 283 R Criando função ( Funtion ) [ou Projectf IE Project Ediki Text contém letras MAIÚSCULAS, Edit. Text contém letras minusculas, procedure TFormiflBit OxclickfSenderf Tonject function Letras Maiusc Minusf] const Texto | string E soolean] begin Result [E |Lovercasel]Textofl E Texto] en Boolean pode ser True begin ou False if Letras Maiusc Hinus]f£dicitext]] then ( Verdadeiro ou Falso ) else endi] Outro exemplo de função ( Function ) E Idade E private Y Private declerations | procedure IdadeX Eidade E incecer E 44 <- ssite public f Public declarations | endiã Projecti E) você tem 31 de idade! Result [BB àno À àno Nasc end] procedure TFormifBit IdadeClickfsendnrà Tobject begin Dm shouHessageliivocê tem | À IntTostrfiasa-fhovs À 0 ae sasas E end Dk Delphi Aplicado v liby English Way ES 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 DlliwWizad e OK, será aberta a tela abaixo library Projectafl t Important note about DLL memory management: ShareMem must pe the first unit in your librezy's USES clause AND your project's (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL--even those that are nested in records and classes. ShareMem is the interface mnit to the BORLNDHM. DLL shared memory manager, which must be deployed along with your DLL. To avoid using BORLNDMM. DLL, pass string information usipg PChar or ShortString parameters. | uses sysUrils| Classes (SR *.res) begin end] 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 library exemplo all] uses syeUrils] Classes] Dialogsf procedure D11 Hensagen] esport] hegin endã exports D11 Hensagen] endi] Delphi Aplicado v Iby English Way Bl! 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 285 Os ES 2 EEE SE RED REED DE TBrush.Style TErush See also Example Specifies the pattem for the brush. type ThrushStyle = (bsSolid, bsClear, bsHorizontal, hsVertical, bsFDiagonal, bsBDiagonal, pecross, bsbiageross): property Style: TBrushôtyle: Description The Style property determines the pattem painted by the brush, unless a value is assigned to Bitmap. The possible values of Style are Value Pattern Value Pattern bsSolid bsCross bsClear bsDiageross Tip: Setthe Style property to bsClear to eliminate flicker when the object repainte. R Gráfico - Retângulo Quadro Saber, Conhecer procedure var h Petang Brush Fen RetanguloClickisenderf TObject] begin h getdcfhandi ef RetangitopLettx o Retangd TopLefthy 50) Retang) BottorRightlx BA 150) RetanogBortorRighrhy BA 150 Erush CreatesolidErusnincafzss]zssDass) Pen CreatePenfPs soLID] sl rspfogoão) “! & = largura borda caixa selectopjectfnà Erus: selectObjectnh pe Rectangle [In] o] sop 150] 1soã df 15 = caracteres texto drautext|n] penar] 15] Retand] DT CENTER DT VCENTER DT SINGLELINEÃE | Delphi Aplicado v Iby English Way Bl! 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 288 R Gráfico - Lua Lua Lua procedure TrormiBBit LuaClickiSenderg Tobjecc| var pomif ron2 E uecif i Integer] begin EGNI CreateEllipticRogndiloDiODisonico EGNZ CreateElliptickg) 1200130) ofiset RgnHRGNZ CombineRg E DIFE with Canvas do begin selectClipRgnfHandlefroni [E e cp cired] i Repeat HoveTofiflioBB Linetoflifiico HoveTof10BiA Linetofiiso]i Incfi until selectClipRanllHanaLefo) BrushfColor BB ciglue FremeRonfiBandiefineniBerushfHendi e quo E cisenracef endj DeleteObjectlrGN1l peace ent R Gráfico - Url Escreve a URL definida no programa na área de trabalho do Windows. f [TE Delphi Aplicado v Iby English Way Bl! 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 289 DO a DEBE R DE E REED o procedure Escreve UrifTransTextã string var HyHand HMND) HyDE HDC| HyCanvas | Tcanvasfl begin HyHand GerDesktopllindow] HyDe GertindowDcfinyHanciã HyCanvas Tcanvasficrear=fl HyCanvasflHandle HyDC BeginParhinyCanvasfiandie clRe: HycanvashFonthstyle HyCanvasfFontfsize setBkHodeflnyCanvas|lHandlej TRANSP ARENTÃE EndPathfuyCanvas]ltend! el HyCanvasfiTextoutfioof 100] Transtext endiã fsTtaliciã Z8| HyCanvasflFontflcolor HyCanvashFonthName procedure TFormiflBit UrlClickllsender] TObject begin 0 eai R Gráfico — Texto randômico Conhecimento conhecimento Conherimento Delphi Conhecimento Conhecimento = Bim Delphipephi Malahi Pralakhi procedure TrormifBicBuniClick]sender] Tonjecrã Begin Randomi ze Canvaslrontflieight 208 CanvasbFontiColor clRre: Canvasi Text Our]fRandomds 00B]Randormdz so) Deiphi' E CanvasgFontflcolor clElue] canvasfTextOut]lrandoms 00B]ranaoniz so)! conhecimento ' E end Delphi Aplicado v liby English Way ES 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 290 begin y Erro E cê x f M: fEeeteçes clrellowf canvasgPolygonfilPoincix re xEnãa vz 0:E-Evi Pointlx Canvas E For i BH n Downto 1 do E xx EE x For 3 1 to i do Begin cp de Pointfbeda div 2070/00 poincio05]/00 clBlue E! a div 2] em endÊ R Gráfico — Linha Eitbinã procedure TFormlBitBtn5Clickijsender] TobjectHã Var Hood E incese:] begin * E soci v RB asc E canvasimoveto x E r E vã for à BB 1 to 360 do canvasflLineToflx E round] « E cos à Epi E ico v É Roundl vc E sin] i Dbi dic endE Delphi Aplicado v liby English Way ES 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 293 R Gráfico — Elipses randômicas Iii Ê EitBtnk º procedure TrormifpicBencclick]sendez] Tobj-c+H] Var od E nes begin For i [1 to 100 do begin co creo dE ee Randomifz sc CanvasgBrushfcolor BB Canvasllpenfco or] x Random Image 1widt y Random Image 1)Height r RandormfiDofa 1) cenvasfzilirse] zxE-r[EvE-E-E-EvE-E end end] R Gráfico — Retângulos Anima fundo do form fazendo retângulos, constantemente gera retângulos no formulário. ul Timerl = Delphi Aplicado v liby English Way EÉ 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 294 private f Pripate declarations | public f Public declarations | end] var Formifl Trormià HE dà Inteoerà 4 digite esta linha procedure Trormilrormict ivatelisender] TObject begin Windowstare wsMeximized] Timerifinterval E | Randomiz cl end procedure TFormifrormAct ivatellsender] TObject] begin Vindoustate usHax ini zedd TimerifInterval E E | Randomizefl enal procedure TrormiffTimer1Timer|lsender TObject begin z screenfuidth r screengHeicht À 10) Canvasfre Random[65535 o Escoi- psSoli 1 style psDas ê aryle pslot) 3 style psDashDotà 4 style psDashDot Dot en canvasfrectanolelz] v] = E andomfaooB] + E ransorfsco em R Gráfico — Retângulo mt | Emi Delphi Aplicado v Iby English Way Bl! 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 295 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: Ei) Cie Nome Ji d pé Th]: DataSoureel! |: Queigd) Ei) Clie Mome Cle Data Masc) & 10/10/2001 Mike Allan 220/1993 7 Eric Tomas DADO Rubia 01/04/1992 Jonas 01/01/2001 ES procedure Reajusta Larg Colunaliconst DEGridã TDBGridiã var Tor i integer Largura Top integer Digite a Procedure Largura integer Reajusta Larg Coluna Reajusta Coluna integer colunax TCO Lui begin Largura Top o Largura o Reajusta Coluna [E 0) for à Boto Bi À pecriaficoiumnsfcounr do begin Largura Top BB Largura Top À DEGridfico ums] if DBGriafCo mana] BilBrieialitas E 0 then IncffReajusta Coluni vice] en 36 - Jurandir / Timbó / SC 298 Delphi Aplicado v liby English Way BI 26/03/2008 -1 if dgColLines in DBGrid]options then Largura Top [E Largura Top À DEGriaicoiumensfcountã if dgIndicator in DBGrid]oprions then Largura Top [E Largura Top À Indicatoridchà Largura DB peGriefciiencuiden E Largura Topà if Reajusta Coluna À] O then Largura BE Largura div Reajusta Coluna] for i Boto Bi E pesrialcorumnsfcoun ao begin colunaz BB pegridicoLumnsflifã i£ ColunazfriciaÃtas EB o then begin colunaxfuidth BB colunaxfviaca E Larcguraf if ColunakbWidth a FieldiTag then co unauiar k de FieldBTaçã nal end procedure TFormiflFormResizelsender |] Tobjecti begin reajusta Larg ColunaljppGriai E end] procedure Trormifirormcreate]]sender] TObject begin Queryillr ie ldByName! Tag E ao) QuerylhFielaByName Tac 1 E CanvasfTexcuiarhà QuerylhFielaByName Displayiamef end R Ordenando registros em um DBGrid [epi] Cle Data Nasc 4 102102200 Mike állan 220/1993 Eric Tomas Ao clicar na barra de 10/0/2012 Fabia título do Grid ordena Mi dog dia donas 01401,2001 nomes por Nome. Ed) Cliquei na barra de títulos na Dle Nome >lle. Data Nasc] 4 PE coluna Data oia04/1582 Mike állan Nascimento 220/1993 E ordenou por data mae urardir 10/10/2001 Eric Tomas Wanna » Delphi Aplicado v liby English Way BI 26/03/2008 -1 36 - Jurandir / Timbó / SC 299 public f Public declarations | end] var Formi E Trormi] QuerysOL À stringà // digite esta linha implementation procedure TFormi ormshoullsender] TObject begin Quer ySQL QueryillsoL a eo en Digite o código abaixo no evento OnTitleClick: procedure TForwlfbeGridiTitleclickfico lu Tour begin // 1 with Queryi do // do hegin // 2 DisableControlsf ciosef soLficicarf soLbadalQuer y3oL| SOLgAd: E coluenfrie leram ope “é! DBGridt, Columns. RestoreDefaults; colummfritlefiFontfcoior BB cisiucf EnableControlsã end] 41 end] 77 2 R Criando componente File — New — Other — Component - Ok DataModules | Business | WebSnap | WebSenvices | Coba | New | activex | Mulities | Proectê | Foms | Dialogs | Proeots | & Application BatchFie ClXApplcation — Nismponenit Console Control Panel Control Panel Data Module «Application Application. Module voa ag DLL twizard Form Frame Package Dor ] cm Hep Delphi Aplicado v liby English Way ES 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 300 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: crDefault crHourGlass 8 crNone crDrag IB) le o crÃrrow crNoDrop elo crCross crHSplit 1 E criBeam crvSplit crSize db crMultiDrag 5 7 ã crSizeNEsWm crSQLwWait saL iz S crSizens crNo 5 a crSizeNWYSE crâppStart o R? crSizewe crHelp 7 t crUpArmow crHandPoint 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) - delusr30.dpk. Component Database Tools Window Help + [88] Nem Component tem | (ag Import Active Control... B Install Packages... Configure Palette,.. 36 - Jurandir / Timbó / SC 303 Delphi Aplicado v by English Way EE 26/03/2008 -1 [pese UR Into existing package | Into new package Lit file name: Erowes Search path [EIDELPHIALO DELPHI Bin SIDELPAI Imports: HDELPAIR ProjectstB plo Eackagetile name: [eAarquivos de programasAbordandidelphisiLibidelusrd =| Brmwse Package description; fEoitand User Componente [€3) Cancel | Hep e» Package delusr.bpl will be rebuit. Continue? Mo Help oiii 2 The component palette has been updated as a resul of rebuiding installed package c:larquivos de programasiporandidelphieiProjectsiBpldclusr60. bp. The Following new companentts) have been registered: SobreBtn. Tuttond. The Following componentis) are no longer registered: KeySnap. TkeySnap. EE E TER QN E ss Compile ádd Remove | Inssl Oplions Files | Pah E Contains E agentôbjecis TLE.der c'tarquivos de programasAborandidelphisilmports E] Agentlbiecis TLB.pas cterquivos de programastbordandidelphisimports g 2:%+ Componente Requies E] designide.dep a tldep veldep Delphi Aplicado v liby English Way BI 26/03/2008 -1 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. [min 31 Samples | Active | COM | InterBase dy E- EE Sem AE cin a Elênchors [EkLeit,akTop] BiDiMode boLeiiToRight Cancel Caption Cursor E Defail E insere Emis [7 Form foro jo) Programa criado por R ActiveControl Controlando eventos com o controle ativo. Project? E AetiveControl - Botão 3 Botao 1 Botão2 | [Sabedoria Editl possui um conteúdo procedure TFormis it Botao1Cl ickijsenderã Tohjectl begin if Acrivecontrol Bir Bocaol then ShorMessagel end Botac2Clickisender] Tonjecr procedure TFormi) aa E then begin I àf À decivecontrol Shoulessagel Bit, Botaoz enal Delphi Aplicado v liby English Way ES 26/03/2008 -1 36 - Jurandir / Timbó / SC 305
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved