Biblia Delphi 7 PtBr

Embed Size (px)

Citation preview

  • 5/26/2018 Biblia Delphi 7 PtBr

    1/182

    Borland

    Desvendando o Caminho das Pedras

    Fernando Anselmo

  • 5/26/2018 Biblia Delphi 7 PtBr

    2/182

    Borland Delphi e Delphi Client/ServerDesvendando o Caminho das Pedras

    ii

    Dez 1995 - Mai 1997

    Desvendando o Caminho das Pedras

    Copyright

    1995-97 Fernando Antonio F. Anselmo.

    Todos os nomes dos produtos citados so marcas registradas da Borland International, Inc.Outros produtos citados so marcas registradas no respectivo cabealho

    As vrias Marcas Registradasque aparecem no decorrer deste livro. Mais do que simplesmente listar esses nomes e informar quem possui seus direitos deexplorao, ou ainda imprimir o logotipo das mesmas, o autor declara estar utilizando tais nomes apenas para fins editoriais, em benefcio exclusivo do dono damarca registrada, sem inteno de infringir as regras de sua utilizao.

  • 5/26/2018 Biblia Delphi 7 PtBr

    3/182

    iii

    SUMRIODesvendando o Caminho das Pedras i

    INTRODUO 7Delphi, como Soluo para Desenvolvedores 7

    CAPTULO I 9

    Conceito de Programao Orientada a Objeto 9Orientao a Objeto 9

    Object Pascal 10Smbolos Especiais 10Palavras Reservadas 11Nmeros 12Constantes 12Expresses 12Identificadores 13Declaraes 14Blocos de Procedimentos ou Funes 16

    Caractersticas de Objetos 17Programando com objetosDelphi 18Renomeando os objetos e os componentes 20

    CAPTULO II 21Conhecendo o Delphi 21

    Elementos Visveis 21Form 22Code Editor 23Component Palette 23Object Inspector 24SpeedBar 24

    Elementos no Visveis 24Project Manager 25Menu Designer 25Fields Editor 26Repositrio de Objetos 27

    Estrutura de Aplicaes com oDelphi 2.0 28

    Implementao efetiva 29Objetos Data Module 29Dicionrio de Dados Escalvel 30Herdando os Formulrios 31

    Ferramentas Auxiliares de SQL 32Monitor SQL 32SQL Explorer 33InterBase NT - Banco de Dados Relacional 34

    CAPTULO III 35

    Projeto Piloto 35

  • 5/26/2018 Biblia Delphi 7 PtBr

    4/182

    Borland Delphi e Delphi Client/ServerDesvendando o Caminho das Pedras

    iv

    Criando o Modelo Relacional 36Trabalhando com DataBase Engine Configuration 37

    Criando o Alias 37Trabalhando com DataBase DeskTop 38

    Criando o Banco de Dados via Estrutura 38Criando os Relacionamentos via Estrutura 40Criando o Banco de Dados via SQL 40Observaes da utilizao do SQL com o dBase 41

    CAPTULO IV 43

    Trabalhando com o Menu 43Metendo a Mo na Massa 43

    Criando a janela do menu 43

    Inserindo os Cdigos Iniciais 46Iniciando os comandos do Menu 47Colocando os comandos para o Auxlio 48

    Criando a janela Sobre o Sistema 50Criando e alterando os objetos 50Associando o form Sobre o Sistema ao menu 51

    Criando a janela Splash 52Criando o acesso a Base de Dados 54

    CAPTULO V 57

    Janela para as Tabelas 57Reabrindo o seu Projeto 57Alterando as Janelas Criadas 58DataModules ? 58

    Modificando as Tabelas e as Ligaes 58Alterando os campos da tabela 59

    Codificando o DataModule 60Controlando a duplicao dos Campos-Chave 61Finalizando o DataModule 62

    Alterando o Formulrio 63Modificando os Labels e Campos 64Objeto DBNavigator 65Modificando os Paineis 65Modificando a Janela 66Criando o terceiro Painel 66

    Programando no formulrio 68Preservando as reas de Memria 68Criando Funes Globais 71Alterando o Menu para receber o formulrio 74

    CAPTULO VI 77

    Trabalhando com janela Pai X Filha 77Criando a janela automaticamente 77Sobre os DataModules 79

    Trabalhando com as Tabelas 79Trabalhando com os Campos 81Controlando o DataModule 82Contadores 83Validando os Campos 84

    Alterando a Janela Criada 87

  • 5/26/2018 Biblia Delphi 7 PtBr

    5/182

    Borland Delphi e Delphi Client/ServerDesvendando o Caminho das Pedras

    v

    Organizando os Panels 87Modificando os campos e Labels 88Organizando os Panels 88Modificando a Janela 89Trabalhando com Grids 91Finalmente, a programao 93Consulta 94Trabalhando com a rea de Transferncia 96Utilizando o objeto OpenDialog 96Criando o formulrio para o cadastro das msicas 97Criando novos Procedimentos Globais 100

    Alterando o Menu para receber o formulrio 102

    CAPTULO VII 106

    Trabalhando com consultas 106Criando consultas para tabelas 106

    Trabalhando com Grids 106Programando no formulrio 109Enviando e recebendo variveis 110Alterando o formulrio fCateg 110Alterando o formulrio fBasico 111

    Criando consultas para o cadastro 114Consultas SQL 114Realizando Consultas com Filtros 114Programando o formulrio 118Criando o formulrio Gerente do Filtro 125Programando o formulrio 128Editando os registros 129

    CAPTULO VIII 132

    Relatrios 132Trabalhando com o ReportSmith 132

    Criando relatrio com o ReportSmith 133Organizando os campos do relatrio 135Associando o relatrio ao aplicativo 135Programando o formulrio 137Imprimindo atravs do Formulrio 138Criando o Cdigo 140

    Trabalhando com o QuickReport 141

    CAPTULO IX 146

    Multimdia 146O que multimdia ? 146

    Delphi and Multimedia 147Objeto TMediaPlayer 147Colocando as propriedade em modo Runtime 148Pesquisando variveis em modo RunTime 149

    Inserindo o multimdia para o Sistema 152Desenvolvimento do CD Player 152

    CAPTULO X 158

  • 5/26/2018 Biblia Delphi 7 PtBr

    6/182

    Borland Delphi e Delphi Client/ServerDesvendando o Caminho das Pedras

    vi

    Novos Componentes 158Criando Componentes 158

    A Classe TComponent 159Um Componente Simples 159Adicionando o Componente a Palheta 160Criando Propriedades 161Mtodos de Acesso 161Criando novos tipos 162

    Pensando em Objetos 163Construindo um Objeto 163Finalmente 167

    APNDICE A 168Documentao 168

    Hardware/Software requeridos 168

    APNDICE B 169Converso de Campos 169

    Tipos de Dados para o InterBase 170

    APNDICE C 171Aplicao rpida com o Objeto Query 171

    APNDICE D 173Imprimindo um Formulrio 173

    APNDICE E 175Trabalhando com Mscaras 175

    APNDICE F 177Trabalhando com Importao e Exportao 177

    APNDICE G 180Doze melhores dicas para o Delphi 180

  • 5/26/2018 Biblia Delphi 7 PtBr

    7/182

    7

    IntroduoBem-vindo aoDelphi, o mais novo produto de alta performance daBorland.Delphi um

    produto nico em sua categoria combinando cdigos totalmente compilveis, ferramentas visuaise tecnologia para a composio de bases de dados escalveis, possui facilidades para um rpidodesenvolvimento em plataforma Windows

    e aplicaes Client/Server.

    Este trabalho ser seu guia para uma rpida aprendizagem no desenvolvimento desistemas que gerencie bancos de dados. ODelphi encontrado em dois produtos:

    Delphi Client/Server, de alta performance e facilidade para o desenvolvimento deaplicaes e suporte a bancos de dados do tipo Cliente/Servidor.

    Delphi Desktop, de alta performance e facilidade para o desenvolvimento de aplicaes esuporte a bancos de dados locais, permitindo total portabilidade verso Client/Server.

    Apresento-lhes a seguir algumas informaes detalhadas para um perfeitodesenvolvimento visual, sendo que ao final de cada captulo prtico exibido o cdigo fontecompleto seguido de um resumo dos principais comandos mostrados. Ao final deste estudo vocencontrar apndices que lhe ajudaro a resolver pequenos problemas do dia-a-dia.

    Delphi, como Soluo para DesenvolvedoresMuitas vezes nos perguntamos, e somos questionados, no porque de adotar o Delphi

    como a linguagem para o desenvolvimento de sistemas ? Inicialmente, necessrio conhecer queoDelphioferece um rpido caminho para o desenvolvimento de aplicaes nos ambientes:

    Windows

    , Windows 95

    e Windows NT

    ;

    Bancos de dados do tipo Cliente/Servidor: Oracle

    , Informix

    , InterBase, SyBase

    e

    Microsoft SQL Server

    ;

    Alta performance, em sistemas crticos;

    Base de Dados locais e aplicaes do tipo network;

    Ambiente grfico, visual e multimdia.

    Mas o que possvel fazer com ele ? possvel criar, dentre outros, os seguintes tipos deaplicaes emDelphi:

    Us-lo como a linguagem de desenvolvimento para bancos do tipo Cliente/Servidor;

    Ambiente heterogneo para captura e envio de informaes em diversos tipos de arquivosde dados;

  • 5/26/2018 Biblia Delphi 7 PtBr

    8/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    8

    Um pacote corporativo de aplicaes inteligentes e interpretadores de dados.Incorporando DLLs e EXEs externos;

    Pacotes multimdia com desenho e animao;

    Genricos utilitrios do Windows

    ;

    Criao de bibliotecas (DLL) para leitura por outras aplicaes.

    Mas porque arriscar em um ambiente novo quando existe no mercado linguagens maisdifundidas ? No mundo inteiroDelphifoi testado, e em 15 meses de vida produziu os seguintesresultados:

    Delphiest sendo utilizado no momento por mais de 1.500 lugares incluindo as maiorescorporaes, consultores e organizaes de treinamento;

    Eleito pela Byte Magazines como Best of Comdex Award;

    Vrios livros escritos;

    Grupos de discusso e peridicos com dicas de desenvolvimento na WorldWibe(Consulte s listas da InterNet atravs da palavraDELPHI);

    Dezenas de bibliotecas e ferramentas para o suporte emDelphi;

    Dezenas de artigos em publicaes do mundo inteiro, tais como PC Week, InfoWorld,Computer Reseller News, PC Magazine, Windows Sourcese muitas outras.

    Por tudo aqui exposto fica claro que este no produto demonstra uma inovao para umacriao em alta performance de aplicaes. Todos os recursos que voc precisar para o

    desenvolvimento de seus produtos esto agora disponveis.

    Feliz desenvolvimento.

    Fernando Antonio F. Anselmo

    +Sempre que voc localizar este smbolo significa que existe uma nota que lhe ajudarem caso de dvida.

  • 5/26/2018 Biblia Delphi 7 PtBr

    9/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    9

    Captulo I

    Conceito de Programao Orientada a Objeto

    Para compreendermos melhor a novo ambiente de desenvolvimento da Borlando Delphi necessrio que voc, aprenda e, tenha em mente os conceitos de POO (Programao Orientada aObjetos), no confunda os conceitos com POE (Programao Orientada a Eventos) muitodifundido com o Access 2.0

    (um ambiente baseado em Objetos), mas ao longo deste captulo

    voc vai notar as sensveis diferenas que existem entre esses dois conceitos.

    A POO e a POE so facilmente confundidas, mas lembre-se a POO contm a POE mas aPOE no contm a POO, um objeto pode existir mesmo que no exista nenhum evento associadoa ele, mas um evento no pode existir se no houver um objeto a ele associado. Outracaracterstica que pode causar confuso so ambientes Orientados a Objetos e ambientesBaseados em Objetos. Em ambiente Orientado a Objetos consegue-se criar e manipular objetosenquanto que o Baseado em Objetos no possivel a criao de objetos apenas a suamanipulao.

    A POO um conceito desenvolvido para facilitar o uso de cdigos de desenvolvimentoem interfaces grficas. Sendo a Borland, uma das primeiras a entrar neste novo conceito, possuisuas principais linguagens de programao (tais como ObjectPascal e C++), totalmente voltadaspara este tipo de programao. A POO atraiu muitos adeptos principalmente pelo pouco uso decdigo que o projeto (diferente de sistema) carrega no programa fonte, ao contrrio daslinguagens mais antigas como o Clipper87 muito utilizado no final da dcada de 90 e incio dadcada de 90. O resultado desta limpeza no cdigo resulta que a manuteno do projeto torna-se muito mais simples.

    Orientao a Objeto

    Antes de comearmos a falar realmente de linguagem orientada a objetos e necessrioque voc possua os conceitos bsicos da orientao a objetos, so eles:

    Objeto - qualquer estrutura modular que faz parte de um produto.

    Uma janela por exemplo, um objeto de uma casa, de um carro ou deum software com interface grfica para o usurio.

    Atributos - So as caractersticas do objeto, como cor e tamanho, ajanela, por exemplo, tem atributos como o modelo, tamanho, aberturasimples ou dupla, entre outros.

    Encapsulao - um mecanismo interno do objeto escondido dousurio. Uma pessoa pode abrir uma janela girando a tranca sem precisar saber o que hdentro dela.

  • 5/26/2018 Biblia Delphi 7 PtBr

    10/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    10

    Ao - a operao efetuada pelo objeto. Todas as janelas, por exemplo, controlam ailuminao e temperatura ambiente, dependendo do seu design.

    Herana- um objeto novo nem sempre criado do zero. Ele pode herdar atributos e aesde outros j existentes. Um basculante herda atributos das janelas e das persianas.

    Polimorfismo - a capacidade de objetos diferentes reagirem segundo a sua funo a umaordem padro. O comando abre, por exemplo, faz um objeto entrar em ao, seja eleuma janela, uma porta ou uma tampa de garrafa.

    Ligao - quando um objeto conecta a sua ao a outro. Um sensor de claridade, porexemplo, ativa o acendimento automtico da iluminao de rua.

    Embutimento - Permite a um objeto incorporar funes de outros, como um liqidificadorque mi carne com a mudana do tipo da lmina.

    Object Pascal

    Object Pascal uma linguagem Orientada a Objetos no pura mas hbrida por possuircaractersticas de programao no s visual mas tambm escrita, para os programadores que jconhecem tcnicas de estruturas de programao, com o C,Basic, Pascalou xBASE entre outraslinguagens a Object Pascalprovidncia uma migrao de forma natural oferecendo um produtode maior complexibilidade. Object Pascal fora a voc executar passos lgicos isto torna maisfcil o desenvolvimento no ambiente Windows

    de aplicaes livres ou que utilizam banco de

    dados do tipo Cliente/Servidor, trabalha com o uso de ponteiros para a alocao de memria etodo o poder de um cdigo totalmente compilvel. Alm disso possibilita a criao e reutilizao

    (vantagem de re-uso to sonhado com a Orientao a Objetos) de objetos e bibliotecasdinmicas (Dynamic Link Libraries- DLL).

    Object Pascalcontm todo o conceito da orientao a objetos incluindo encapsulamento,herana e polimorfismo. Algumas extenses foram includas para facilitar o uso tais comoconceitos de propriedades, particulares e pblicas, e tipos de informaes em modo run-time,manuseamento de excees, e referncias de classes. O resultado de toda esta juno faz com queObject Pascalconsiga suportar as facilidades de um baixo nvel de programao, tais como:

    Controle e acesso das subclasses do Windows

    (API);

    Passar por cima das mensagens de loop do Windows

    ;

    Mensagens semelhantes as do Windows

    ;

    Cdigo puro da linguagemAssembler.

    Como deu para perceber a base de toda a programao Delphi a linguagem ObjectPascal, ento neste captulo trataremos exclusivamente deste tipo de programao.

    Smbolos Especiais

    A Object Pascalaceita os seguintes caracteres ASCII:

    [AL1] Comentrio:

  • 5/26/2018 Biblia Delphi 7 PtBr

    11/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    11

    Letras - do Alfabeto Ingls: Aat Ze aat z.Dgitos - Decimal: 0at 9e HexaDecimal: 0at 9e Aat F(ou aat f)

    Brancos - Espao (ASCII 32) e todos os caracteres de controle ASCII (ASCII 0 atASCII 31), incluindo final de linha e Enter (ASCII 13).

    Especiais - Caracteres: + - * / = < > [ ] . , ( ) : ; ^ @ { } $ #

    Smbolos - Caracteres: = := .. (* *) (. .)//

    +O colchetes esquerdo ( [) e equivalente ao (.e o colchetes direito ( ]) e equivalente a.). A chave esquerda ( {) e equivalente ao (*e a chave direita ( }) e equivalente a *).

    Palavras Reservadas

    A Object Pascal se utiliza das seguintes palavras reservadas, no podendo as mesmasserem utilizadas ou redefinidas:

    And Exports Library Set

    Array File Mod Shl

    As Finnaly Nil Shr

    Asm For Not String

    Begin Function Object Then

    Case Goto Of To

    Class If On Try

    Const Implementation Or Type

    Constructor In Packed Unit

    Destructor Inherited Procedure UntilDiv Initialization Program Uses

    Do Inline Property Var

    Downto Interface Raise While

    Else Is Record With

    End Label Repeat Xor

    Except

    Uma outra lista a seguir, apresenta as diretivas que so utilizadas em contextos deidentificao de objetos:

    Absolute Export Name Published

    Abstract External Near Read

    Assembler Far Nodefault Resident

    At Forward Override Stored

    Cdecl Index Private Virtual

    Default Interrupt Protected Write

    Dynamic Message Public

  • 5/26/2018 Biblia Delphi 7 PtBr

    12/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    12

    Nmeros

    possvel definir variveis e constantes de tipos de InteiroouRealatravs de qualquerdecimal ordinrio ( 0a 9 ), mas a Object Pascaltambm aceita a notao Hexadecimal utilizadoscom o prefixo dollar ( $) ou a notao cientfica ( E).

    Constantes

    Uma constante um identificador com valor(es) fixo(s). Um bloco de declaraesconstante possui a seguinte expresso:

    [Declarao Constante] [Identificador] (=) [constante] (;)

    A lista abaixo apresenta um conjunto de funes que podem ser utilizadas para adeclarao das constantes:

    Ab Length Ord SizeOf

    Chr Lo Pred Succ

    Hi Low Ptr Swap

    High Odd Round Trunc

    Alguns exemplos para a definio de Constantes:const Min = 0;Max = 100;Centro = (Max - Min) div 2;Beta = Chr(225);

    NumLetras = Ord('Z') - Ord('A') + 1;MensOla = 'Instruo invlida';MensErro = ' Erro: ' + MensOla + '. ';PosErr = 80 - Length(MensErro) div 2;Ln10 = 2.302585092994045684;Ln10R = 1 / Ln10;DigNumericos = ['0'..'9'];LetrasAlpha = ['A'..'Z', 'a'..'z'];AlphaNum = LetrasAlpha + DigNumericos;

    Expresses

    As expresses em Object Pascal (como em qualquer linguagem) formada por

    operadores e operandos; os operadores so divididos em quatro categorias bsicas:nicos @, NotMultiplicativos >, /, div, mod, and, shl, shr, as

    Adicionais +, -, or, xor

    Relacionais =, < >, , < =, > =, in, is

    As expresses obdecem as regras bsicas de lgica para a precedncia da execuo dasoperaes.

  • 5/26/2018 Biblia Delphi 7 PtBr

    13/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    13

    Identificadores

    Identificadores podem ser constantes, tipos, variveis, procedures, funes, unidades,programas e campos de registros.

    No existe limite de caracteres para o nome de um identificador mas apenas os 63primeiros caracteres so significantes (no podendo ser idntico ao nome das palavrasreservadas). O nome de um identificador deve ser iniciado por Letras ou o carcter underscore ( _). O resto formado por Letras, Dgitos, carcter underscore (ASCII $5F). No permitido autilizao de espaos para a formao do nome.

    +Exemplo de identificadores vlidos: Form1, SysUtils.StrLen, Label1.Caption

    with... do...;Delimita um determinado bloco de declaraes para um identificador especfico evitando a declarao deste

    identificador. A sintaxe do comando : WITH {nome do identificador} DO {comandos};. Ex:

    begin{ ... comandos iniciais ... }with form1 dobegin

    Caption := Teste; Equivalente a Form1.CaptionBorderStyle := bsSizable; Equivalente a Form1.BorderStyle

    end;end;

    array [ ... ] of ...;

    Define um conjunto de variveis ou constantes de um mesmo tipo. A sintaxe do comando : array[{quantidade de ocorrencias}] of {Tipo};. Os arrays so controlados por trs funes:

    Funo Valor de Retorno

    Low Primeiro elemento

    High Aponta para o ltimo elemento

    SizeOf Tamanho do array

    Ex:

    constt: array [1..50] of Char { Declara 50 elementos para o tipo Char }

    vars : array[1..100] of Real { Declara 100 elementos para o tipo real }

    ind: Integer;begin

    for Ind := Low(s) to High(s) do s[Ind] := 0; { Zera os elementos do array S }if SizeOf(t) = C then exit; { Se o ltimo elemento do array T for C sai do bloco }{ ... outros comandos... }

    end;

  • 5/26/2018 Biblia Delphi 7 PtBr

    14/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    14

    Declaraes

    Declaraes descrevem aes de um algortmo a serem executadas.

    begin... end;

    Prende um conjunto de declaraes em um bloco de comandos determinado. A sintaxe do comando :BEGIN {comandos} END;. Ex:

    begin{ ... comandos iniciais ... }begin

    { ... bloco 1 ... }end;

    begin{ ... bloco 2 ... }end;{ ... comandos finais ... }

    end;

    if ... then... else...;

    Esta expresso escolhe entre o resultado de uma condio booleana o caminho verdadeiro (then) ou falso(else). A sintaxe do comando : IF {condio} THEN {bloco de comandos} ELSE {bloco decomandos};. Ex:

    begin{ ... comandos iniciais ... }if x > 2 then

    { ... Bloco verdadeiro ... }else

    { ... Bloco falso ... };end;

    goto... ;

    Transfere a execuo de um programa para o ponto determinado pelo Label. A sintaxe do comando :GOTO {Label};. Ex:

    labelprimeiro;

    begin{ ... comandos iniciais ... }

    if x = 2 thengoto primeiro;

    { ... outros comandos ... }Primeiro:

    { ... comandos do Primeiro ... }end;

  • 5/26/2018 Biblia Delphi 7 PtBr

    15/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    15

    case... of... else... end;Consiste de uma lista de declaraes que satizfaz a condio de um seletor de expresses, se nenhuma parte

    da lista satisfizer ao seletor executa os comandos do sub-comando else. Para o seletor sero vlidos ostipos definidos, tipo Inteiros ou LongInt. A sintaxe do comando : CASE {seletor} OF {Expresso 1}:{comando da expresso 1}; {Expresso 2}: {comando da expresso 2}; {Expresso n}: {comandoda expresso n} ELSE {comando}; end;. Ex:

    begin{ ... comandos iniciais ... }case x of

    1: { ... Bloco para x = 1 ... }2, 3: { ... Bloco para x = 2 ou X = 3... }4..6: { ... Bloco para 4

  • 5/26/2018 Biblia Delphi 7 PtBr

    16/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    16

    { ... Bloco de comandos ... }end;

    break; ou continue...;

    O comando breakinterrompe um bloco de repetio for, whileou repeatsaindo do bloco. A sintaxe docomando : BREAK;enquanto que o comando continueretorna a primeira instruo do bloco derepetio for, whileou repeat. A sintaxe do comando : CONTINUE;. Ex:

    begin{ ... comandos iniciais ... }for i := 1 to 10 do

    beginif i = 8 then

    break; Salta para os [comandos C]{... comandos A...}if i = 5 then

    continue; Retorna para o comando forpulando os [comandos B]{... comandos B ...}

    end;{... comandos C ...}

    end;

    Blocos de Procedimentos ou Funes

    As procedures ou funes so declaradas na seo de tipos de declaraes (abaixo docomando type) pertencendo ao objeto ou serem do tipo public(pblicas - executadas por outrasunidades) ou private(particulares - restritas a unidade local).

    Procedure

    procedure {cabealho}; var {declarao das variveis}; {bloco de comandos};

    O cabealho da procedure composto pelo nome do procedimento e variveis que serorecebidas (ou modificadas atravs da declarao var,ex: procedure teste(varx:string);).

    procedure soma(a,b: integer); Incio enviando as variveis A e B do tipo inteiro.var Declarao de variveis locais.

    c: integer;begin Corpo do procedimento.

    c := a + b;end;

    Function

    function {cabealho} : {resultado}; var {declarao das variveis}; {bloco de comandos};

    As funes se diferem dos procedimentos pela obrigatoriedade do retorno de umresultado, podendo este resultado ser retornado pela declao: {nome da funo} := valor ouresult := valor.

    function soma(a,b: integer) : integer; Incio enviando as variveis A e B do tipo inteiro.

  • 5/26/2018 Biblia Delphi 7 PtBr

    17/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    17

    begin Corpo do procedimento.soma := a + b; ou result := a + b;end;

    +Junto com o Delphi 2.0vem o manual de Object Pascal em formato .HLP, caso alinguagem seja novidade para voc aconselho que voc d uma boa olhada (o Delphi 1.0 traz omesmo manual, mas em formato .PDF), mas no se preocupe com o que foi explicado acima jest mais do que suficiente para uma boa inicializao com oDelphi.

    Tudo o que vimos a cima o que normalmente temos em outras linguagens comuns, maso caracteriza realmente a linguagem Orientada em Objetos o trabalho e a manipulao com osmesmos.

    Caractersticas de Objetos

    Mas afinal de contas, o que um objeto ? Como foi dito anteriormente, um objeto qualquer tipo de elemento, ou componente, que envolva dados e cdigo dentro de um nicopacote.

    Uma vantagem de programar na POO e quanto a Heranados objetos, este mtodo fazcom que seja possvel um objeto Filho poder herdar todas as caractersticas e contedos de umobjeto Pai. Tirando um pouco do Pascal da geladeira (a partir do Pascalverso 7.0 aBorlandtornou possvel a utilizao simplificada de todo o conceito de POO) aqui vai um cdigocompleto de declarao de dois objetos, o primeiro chamado de TPai e o segundo de Tfilho:

    TPai = objectNome: PChar;constructorInit (P: PChar);destructor Done;procedure MudaNome(P: PChar);procedure ShowName;

    end;

    TFilho = object(TPai)procedure MudaNome(P: PChar);

    end;

    O segundo objeto TFilho herda do objeto TPai o ponteiro varivel Nome, a constructorInit, o destructor Done e a procedure ShowName, apenas a procedure MudaNome ter o

    funcionamento como uma caracterstica nica para cada objeto. ODelphipossui inmeros pais(classes de objetos) prontos para serem usados por voc, tais como:

    TForm: Centro das aplicaesDelphi, utilizados na criao de janelas, caixas de dilogo entre outros.

    TMenu: Responsvel pela concepo de menus e menu popup.

    TButtonControl: Simplifica o refinamento do controle da janela serve de base para os componentes como: Botes,Check Box e Radio Box.

  • 5/26/2018 Biblia Delphi 7 PtBr

    18/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    18

    Programando com objetos DelphiQuando iniciado o Delphi, criado automaticamente um novo projeto e um objeto

    formulrio (derivado da classe TForm) para o suporte dos demais objetos. Explorando o Editorde Cdigos (Code Editor) voc poder observar a declarao do novo objeto da classe TFormquefoi produzido automaticamente com a criao do novo formulrio. Examinando o contedo destecdigo criado para o objeto, teremos:

    unitUnit1; Abertura de uma nova unidade

    interface Parmetros do obejetos

    uses

    SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Uso de outras unidadesForms, Dialogs;

    typeTForm1 = class(TForm) A declarao do objeto inicia aquiprivate{ Private declarations }

    public{ Public declarations }

    end; Aqui o final da declarao

    varForm1: TForm1; Atribui a varivel Form1 as caractersticas do objeto TForm1

    implementation Incio da parte a ser implementada

    {$R *.DFM} Diretiva de compilao que agrega o desenho da tela (em.DFM) com o mesmo nome da unidade

    end. Final da parte implementada

    Um novo tipo de objeto TForm1, declarado derivado da classe TForm,que tambm um outro objeto. Relembre um objeto um tipo de elemento capaz de guardar dados e cdigodentro de um nico pacote. At agora, o tipo TForm1 no contm campos ou mtodos, issoacontecer com a adio de alguns componentes neste objeto.

    Observando o cdigo, notamos que existe uma varivel declarada com o nome Form1para o novo tipo de objeto TForm1:

    var

    Form1: TForm1;

    Form1 a chamada de instncia ao tipo TForm1. Esta varivel refere-se ao formulrioem si, aonde ser adicionado componentes e desenhado a interface entre o computador e ousurio que for operar o sistema. sempre notado declaraes de uma ou mais instnciasreferidas ao tipo de objeto. Futuramente ser mostrado o poder deste tipo de declaraes quandofalarmos sobre janela MDI (Multiple Document Interface - Interface de documento mltiplos)gerenciando vrias janelas filhas, no permitindo que estas janelas filhas saiam do espaocriado pela janela pai.

  • 5/26/2018 Biblia Delphi 7 PtBr

    19/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    19

    Adicionando alguns componentes ao formulrio, veremos como o Delphi completar aaplicao escrevendo automaticamente o cdigo, e permitindo que ao final tornar-se- possvel acompilao (lembra-se do Clipper

    , com .EXE), execuo e distribuio da aplicao.

    Em nosso formulrio, colocaremos um boto que, em tempo de execuo, ao ser dado umclique com o mouse sobre este objeto, o formulrio mude sua cor. Aperte a tecla F12 pararetornar a viso do formulrio e na palheta de objetos (Componnent Pallete) clique no objeto

    (button localizado na pgina Standard) e clique no formulrio. Na janela da ObjectInspectorclique na pgina Eventse clique duas vezes sobre a ao OnClicke insira o seguintecdigo:

    procedureTForm1.Button1Click(Sender: TObject);begin

    Form1.Color := clGreen;end;

    Reparando no cdigo completo da aplicao, veremos:

    unitUnit1;

    interface

    usesSysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,Forms, Dialogs;

    type

    TForm1 = class(TForm)Button1: TButton; Um novo dado foi aqui inseridoprocedureButton1Click(Sender: TObject); Declarado um novo mtodo

    private{ Private declarations }

    public{ Public declarations }

    end;

    varForm1: TForm1;

    implementation

    {$R *.DFM}

    procedureTForm1.Button1Click(Sender: TObject); O cdigo do novo mtodobegin

    Form1.Color := clGreen;end;

    end.

    O novo objeto TForm1agora apresenta um campo Button1- o boto que voc adicionouao formulrio. TButtone o tipo do objeto, e Button1 o objeto boto propriamente dito. Com otempo voc colocar novos componentes ao formulrio.

  • 5/26/2018 Biblia Delphi 7 PtBr

    20/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    20

    Rode o projeto, clicando no boto (Run), d um clique no boto e veja o queacontece. Pare a aplicao fechando a janela com Alt+F4.

    +S por curiosidade, salve este arquivo, feche-o e abra o arquivo UNIT1.DFM(com aopo File | Open File...) notaremos que o Delphicriou um arquivo com todas as propriedadesdos objetos criados e que a declarao do objeto Form1 engloba todos os outros, noes deEncapsulamento.

    Renomeando os objetos e os componentes

    Voc sempre deve utilizar a janela do Object Inspectorpara renomear os objetos criados.Por exemplo, o nome padro do formulrio e Form1mude a propriedade Namepara fCores. ODelphi se encarregar de mudar qualquer referncia que existia ao Form1. Ento o cdigoapresentar a seguinte modificaes:

    unitUnit1;

    interface

    usesSysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,Forms, Dialogs;

    typeTfCores = class(TForm) Aqui foi modificado

    Button1: TButton;procedureButton1Click(Sender: TObject);

    private{ Private declarations }

    public{ Public declarations }

    end;

    varfCores: TfCores; Aqui foi modificado

    implementation

    {$R *.DFM}

    procedureTfCores.Button1Click(Sender: TObject); Aqui foi modificadobegin

    Form1.Color := clGreen; Aqui no !!!end;

    end.

    +ODelphimodificar apenas os cdigos gerados automaticamente pr ele. Os cdigospara a ao OnClick foram gerados por voc e o Delphi no os modificar. Cabe a voc amanuteno neste caso. Isto foi idealizado para preservar o contedo original do seu cdigo.

  • 5/26/2018 Biblia Delphi 7 PtBr

    21/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    21

    procedureTfCores.Button1Click(Sender: TObject);beginfCores.Color := clGreen;

    end;

    Captulo II

    Conhecendo o Delphi

    Se voc teve algumas dvidas no captulo anterior sobre a rea de trabalho do Delphinose preocupe, neste captulo voc poder san-las completamente, tambm ser mostrado o mtodode estrutura de aplicaes Client/Server.

    +Caso voc seja usurio do Delphi 1.0 na barra de menu selecione a opo Help eInteractive Tutors, voc receber uma aula On-Linesobre a nova rea de trabalho.

    Os elementos da interfaceDelphiforam divididos do seguinte modo:

    Elementos Visveis

    O ambiente de trabalho doDelphi formado por objetos que esto visveis to logo que oaplicativo seja iniciado formando a rea de trabalho.

  • 5/26/2018 Biblia Delphi 7 PtBr

    22/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    22

    Viso Geral dos objetos visveis do Ambiente Delphi

    Form

    Os formulrios (objeto Form) so os pontos centrais para o desenvolvimento Delphi.Voc se utilizar deles para desenhar sua comunicao com o usurio, colocando e organizandooutros objetos. Estes objetos so arrastados da Component Palette, mostrada na janela localizadaacima.

    Voc pode imaginar que o formulrio um objeto que contm outros objetos. Suaaplicao ficar localizada em um formulrio principal e este interagir com outros formulrioscriados. possvel aumentar, mover ou ocupar completamente a tela do monitor, ou at mesmoultrapass-la. Um formulrio bsico inclui os seguintes componentes:

    Controles de menu;

    Botes de maximizao e minimizao;

    Barra de ttulo; e

    Bordas redimensionveis.

    O cdigo gerado, na rea conhecida comoCode Editor, fica exatamente atrs do objetoformulrio, clique na barra de notas, em Unit1, se alguma coisa for desconhecida para voc, leiamaiores explicaes no Captulo I.

    + possvel enviar um formulrio para a impressora, para isto existem duas maneiras:1. Tipo um PrintScreen de Tela, coloque o seguinte comando [Nome do

    formulrio].Print; no evento onShowdo formulrio; ou

  • 5/26/2018 Biblia Delphi 7 PtBr

    23/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    23

    2. Para imprimir um formulrio no tamanho de um papel A4, atravs do uso decomandos da biblioteca Printer, veja o Apndice Dpara maiores detalhes.

    Code Editor

    O editor de cdigos providncia total acesso ao cdigo gerado pelo projeto, incluindoalguns dos mais poderosos recursos para a edio. Pode ser selecionado tipos de cores para oselementos do programa (como por exemplo comentrios, palavras reservadas, cdigos assembler,...) para tanto a partir do menu principal entre em Tools| Options..., localize a pgina Colors.

    + Para outras informaes adicionais sobre o modo de usar este editor, procurereferncias noHelp OnLineno tpico Code Editor.

    Ao ser aberto um novo projeto, oDelphi gera automaticamente na pgina do Code Editoruma Unit com o arquivo cdigo (.PAS). Para ver o cdigo de uma Unit em particular,simplesmente Clickna tabulao de pgina. O Code Editormostrar sempre o nome do arquivocorrente ativo na tabulao de pgina.

    + possvel alternar entre o objeto Forme a Code Editoratravs do pressionamentoda tecla F12, do boto boto (Toggle Form/Unit) da SpeedBar, ou ainda atravs das opesdo menu View | Toggle Form/Unit. (curiosidade: o acesso rpido atravs da tecla Alt + Letrasublinhada para esta opo est marcado sobre a letra G)

    Component Palette

    Componentes (ou objetos) so os elementos que voc usar para trabalhar com aaplicao. Foram includos objetos em vrias pginas, tais como caixas de dilogos e botes, apalheta inclui tambm alguns espaos em branco para ser permitida a adio de novos objetos.Alguns objetos no sero visveis enquanto a aplicao estiver executando, eles fazem parte doservio da DDE (Dynamic Data Exchange).

    Os objetos da palheta foram divididos em grupos de funcionalidade em diferentespginas. Por exemplo, os objetos que representam as janelas tradicionais do Windows

    (tais como

    fontes, palheta de cores, ...) foram colocados na pginaDialogs da palheta.

    Voc poder criar seus prprios objetos como tambm instalar outros j prontos, para issofoi colocado os espaos vazios. Por exemplo poder ser instalado novos controles e objetos do

    Visual Basic4.0(Objetos OCX - ou para os portadores do Delphi 1.0 o do Visual Basic3.0os objetos VBX). Uma das principais vantagens da POO que muito em breve dever sercolocado no mercado pacotes de objetos prontos para serem integrados aos sistemas o quefacilitar ainda mais o desenvolvimento e a manuteno dos mesmos.

  • 5/26/2018 Biblia Delphi 7 PtBr

    24/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    24

    Object Inspector

    Providncia a conexo entre a interface visual e o cdigo. Composto por duas pginasProperties (propriedades) e Events (Eventos) que mostrar as propriedades e eventos do objetoselecionado.

    Disponibiliza um fcil caminho para a personalizao dos objetos. Voc usar a pginade Propriedades para personalizar os objetos colocados no formulrio (inclusive o prprioformulrio), e a pgina de Eventospara gerenciar a navegao entre certas partes do cdigo doprograma.

    O seletor de objetos (Object Selector - localizado em um objeto do tipo ComboBox notopo do Object Inspector) mostra o nome e o tipo de todos os componentes do formulrio

    corrente (inclusive o prprio). Voc pode usar o seletor de objetos para localizar facilmentequalquer objeto no formulrio.

    SpeedBar

    Contm os botes mais freqentemente utilizados. Fornecendo deste modo um atalho denavegao ao menu principal doDelphi.

    possvel a personalizao da SpeedBarcolocando nela os caminhos do menu principalque voc mais utiliza, bastando para isso:

    1. Redimensione a SpeedBar. Para tanto posicione o cursor do mouse sobre o ponto deencontro da SpeedBar com a Component Palette conforme o desenho abaixo:

    2. Quando o cursor do mouse mudar de formato, clique o boto esquerdo do mouse e arrasteabrindo a rea da SpeedBar.

    3. Clique com o boto direito do mouse na rea aberta, aparea um menu PullDowncontendo entre outras opes a opo Properties, selecione-a.

    4.

    As categorias e os comando so divididos de acordo com o menu, clique em cima doscomandos disponveis e arraste-os para a rea aberta de acordo com a sua necessidade,para retirar os botes da SpeedBarfaa o processo inverso.

    Elementos no Visveis

    Alguns elementos no esto prontamente visveis quando o Delphi iniciado mas vocpoder ter acesso a eles bastando para isso selecionar a opo na barra de menu.

  • 5/26/2018 Biblia Delphi 7 PtBr

    25/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    25

    Project Manager

    O Gerenciador de Projetoscontm uma lista de formulrios ou unidades utilizados pelaaplicao, e serve para controlar estes formulrios ou unidades, adicionando-os ou removendo-osdo projeto, organizando as opes do projeto, entre outros.

    +Voc tambm poder colocar um boto para iniciar o Gerenciador de Projetos atravs

    da SpeedBar ,

    Menu Designer

    OMenu Designerpermite a criao de menus para os seus formulrios. Voc pode criarmenus ou menus do tipo pulldown atravs dos objetos MainMenuou PopupMenu(localizado napgina Standardna Component palette). A criao completa de Menusser colocada de formamais abrangente no Captulo IV.

  • 5/26/2018 Biblia Delphi 7 PtBr

    26/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    26

    Fields Editor

    Para o Delphi possvel editar e modificar as propriedades de quaisquer campos dosobjetos de tabelas associadas ao banco de dados, a Fields Editor em conjunto com a ObjectInspector controlam o modo de mostrar determinados campos de arquivos, importante lembrarque esta modificao no afetar os campos da tabela, apenas para o formulrio ativo em questo.Sua utilizao efetiva ser mostrada a partir do Captulo V.

    Add fields... responsvel pela adio dedefinies de campos da tabela, possvel inserirum ou mais campos, dependendo de sua

    utilizao para o formulrio.New field...permite a criao de um novocampo, este pode ser a derivao de um ou maiscampos da tabela.Cutenvia para rea de transferncia e eliminatodas as definies do campo selecionado.Copycopia para a rea de transferncia todas asdefinies do campo selecionado.Pasterecebe da rea de transferncia todas asdefinies do campo selecionado criando-o.Deleteexclui quaisquer definio para oscampos.Select allseleciona todas as definies doscampos.Retrieve Attributesatualiza os atributos do

    campo selecionado com os campos do dicionriode dados.Save attributessalva os atributos do camposelecionado para o dicionrio de dados.

    Save attributes as...salva os atributos do campo selecionado para o dicionrio de dados permitindo arenomeao do campo.Associate attributes...faz a associao dos atributos do campo selecionado com determinado campo dodicionrio de dados.Unassociate attributesremove a associao dos atributos do campo selecionado com determinado campodo dicionrio de dados.

  • 5/26/2018 Biblia Delphi 7 PtBr

    27/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    27

    Repositrio de Objetos

    O Repositrio de Objetosdo Delphi 2.0armazena e gerencia os objetos da aplicao:Formulrios,Data Modules, geradores experts, e DLL (Dinamic Linked Library - Bibliotecas deacesso dinmico). Na essncia, ele centraliza as localizaes dos objetos envolvidos agrupado-os.A proliferao dos objetos no repositrio incrementa as seguintes vantagens:

    Suporte a equipe de desenvolvimento para referncia aos objetos da rede.

    Uma customizao de todo o desenvolvimento em grupos lgicos de objetos, facilitandoo re-uso dos mesmos.

    ODelphipossui diversas caractersticas quanto a sua utilizao. Tem os TutorseExpertsque so as ferramentas responsveis para guiar-nos atravs de tcnicas, tais como, manipulao

    de componentes e criao de simples aplicaes. Alm disso o Delphioferece uma coleo demodelos para formulrios, janelas de dilogo e at mesmo aplicaes completas na ferramentaNew Items. A janela do New Items sempre chamada automaticamente quando a opo File |New...do menu principal executada.

    + possvel para voc criar novas janelas, ou projetos, automticos no Delphi. Para anossa sorte a Borland no esconde o jogo e mostra como se cria uma templatevisite o diretrio\BORLAND\DELPHI 2.0\OBJREPOS,o equivalente no Delphi 1.0 encontrado no diretrio\DELPHI\GALLERY, todos os exemplos so auto-explicativos.

    + Para definir o projeto padro que o New Items executar no incio de cada projeto,clique com o boto direito acima da janela e escolha a opo Properties aparecer as listas Pagese Objects, defina quaisquer dos objetos comoNew Form ouMain Form.

    +Observe que a segunda folha da janela New Items(ter o nome do seu arquivo com aextenso .DPR) o seu projeto corrente, ou seja, uma nova janela poder ser derivada, porcaracterstica de herana, de uma outra janela j existente.

  • 5/26/2018 Biblia Delphi 7 PtBr

    28/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    28

    Estrutura de Aplicaes com o Delphi 2.0Um dos objetivos de desenhar aplicaes do tipo Client / Serverpara o desenvolvimento

    a reutilizao dos objetos, das regras de negcio e das telas do projeto. O Delphi Client / ServerSuite 2.0 o nico que implementa uma arquitetura incorporando a tecnologia RAD (RapidApplication Development - Desenvolvimento Rpido de Aplicaes) com o desenvolvimentototalmente OO (Object Orientation - Orientado a Objetos) para a reduo do tempo dedesenvolvimento e manutenes improvveis. Adicionando, uma arquitetura aonde possvel aseparao da GUI (Grafic Unit Interface - Unidade de Interface Grfica), das regras de negciolgicas e do desenho do banco de dados de acordo com o modelo representado abaixo:

    Benefcios:

    1. A separao do desenho da GUI (atravs dos objetos Forms) com a rea de ligao

    lgica de dados (atravs dos objetos Data Modules) permite que se cause um menorimpacto sobre ambas as reas. As mudanas podem ser executadas nas telas de entrada ounas ligaes, independentemente, de acordo com os requerimentos do usurio.

    2. A separao do desenho da GUI com a rea de ligao lgica de dados realizada comuma certa habilidade aos eventos envolvidos, poder no necessariamente dever sercontrolada por um habilidoso DBA (Database Administrator - Administrador de Bancode Dados), com suas fantsticas regras de negcio, podendo inclusive ser mantida por umanalista de informaes.

  • 5/26/2018 Biblia Delphi 7 PtBr

    29/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    29

    3. O desenho do banco de dados, a construo das metodologias de negcio e o desenho e acriao das janelas de entrada so efetivados dentro da aplicao. O desenvolvimento,ento paralelamente, resultar em uma maior rapidez.

    4. Herdando as janelas de entrada, em nveis de utilizao, reduz-se drasticamente oprocesso de codificao, e em conseqncia, o processo futuro de manuteno. Asmudanas lgicas das regras de negcio ou a incorporao de novos padres, so feitasautomaticamente para todos os objetos herdados.

    5. O repositrio de objetos, os formulrios reusveis e a utilizao dos objetos DataModules, envolve em eliminao da duplicao de cdigos e de trabalhos com desenhosde janelas, e em conseqncia na reduo da equipe de desenvolvimento.

    Implementao efetiva

    Objetos Data Module

    A partir do Delphi 2.0 foi incorporado o uso de objetos conhecidos por Data Module,que servem para que suas aplicaes providenciem um desenho centralizado da definio deacesso aos dados e das regras de negcio. Os objetos Data Modules, tambm podem serseparados por negcios lgicos (como exemplo por reas: compras, vendas, estoque, etc.)formando caminhos de conexes simples.

    Os objetos Data Modules podem ser aplicados a objetos tais como Tables, StoredProcedures, ou Queries permitindo a centralizao dos eventos envolvidos em antes e

  • 5/26/2018 Biblia Delphi 7 PtBr

    30/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    30

    depois da gravao, excluso, insero ou edio dos dados. E at mesmo na colocaode novos objetos de controle para maior facilidade.

    As relaes de dados Master / Detail so definidas em menor quantidade. Possibilitaento ao desenvolvedor criar aplicaes do tipo Client / Server de forma mais fcil,rpida, e segura se utilizando das propriedades dos objetos Datasourcesou utilizando oDatabase Form Expert.

    Os formulrios das aplicaes, podem ser ligados diretamente a um ou mais objetos DataModulepara a propagao das regras de negcio sem a necessidade de execuo de umcdigo extra.

    Os objetos Data Modulesso classes de objetos que pertencem a interao dos dados dodatabase server. Isolando totalmente o acesso ao banco de dados com a aplicao Client,simplificando deste modo toda a manuteno realizada.

    O Acesso aoDelphiaos bancos de dados se processa da seguinte maneira:

    Distribuio Lgica da Aplicao:

    Os objetos Data Module foram desenvolvidos para criar uma centralizao lgica detodas as regras de negcio, separando a rea de viso do usurio com a rea do desenho do Bancode Dados. Este slido fundamento de suporte so distribudos em um n-nmero de aplicaes earquiteturas servidoras disponveis, tais como CICS da IBM, TopEnd da ATT, Tuxedo daNovell, Object Broker da Digital, IONAda Orbix e muitas outras.

    Dicionrio de Dados Escalvel

    O dicionrio de dados utilizado para armazenar informaes sobre o uso dos dadoscontidos nas suas tabelas. O dicionrio deve ser como uma rvore genealgica trabalhando comoum inspetor de modificaes que permitem um armazenamento facilitado. O dicionrio deveconter informaes dos atributos dos campos tais como: valores mnimo, mximo e comuns(valores default), mscaras utilizadas, etc. A utilizao do dicionrio de dados traz as seguintesvantagens:

  • 5/26/2018 Biblia Delphi 7 PtBr

    31/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    31

    1. Consistncia: Campos idnticos so armazenados centralmente no dicionrio isto reduzo tempo de definio das duplicidades. Um desenvolvedor poder criar os camposcomplementares com domnios e aplicaes apropriadas.

    2. Reduo do Trfico da Rede: ODelphipermite que a validao dos dados seja feita nasmquinas client ou no servidor. O Dicionrio de dados permite que a manuteno dosatributos dos campos do lado client seja validado de forma eficiente reduzindo anecessidade do trfego da rede.

    Herdando os Formulrios

    O desenvolvimento de aplicaes corporativas de uma forma padronizada um fato desuma importncia para as empresas envolvidas. Mas conseguir e manter este padro uma tarefaconsiderada praticamente impossvel, j que as aplicaes devem se modernizar na velocidadeque o mercado de informtica exige. Os formulrios herdados doDelphiso simples extenses daprogramao orientada a objetos, conseguindo manter, de forma automtica, os padres e asmodificaes realizadas nos projetos. E em conjunto com o Repositrio de Objetos, padroniza,

    organiza e centraliza os formulrios resultando em modificaes de curtssimo tempo.

  • 5/26/2018 Biblia Delphi 7 PtBr

    32/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    32

    Ferramentas Auxil iares de SQL

    Para o trabalho com bases de dados padro SQL (Structure Query Language -

    Linguagem estruturada de Consultas), o Delphi conta com as seguintes ferramentas RAD queauxiliam ao desenvolvimento.

    Monitor SQL

    Um monitor SQL um ferramenta para testes, depurao e execuo de consultas SQLem aplicaes Client / Server. Isto resulta em um aumento da produtividade de desenvolvimento emelhor performance da aplicao.

    O monitor SQL, intercepta as chamadas entre as mquinas client e o servidor. Estainformao auxilia ao desenvolvedor em problemas relacionados as declaraes SQLe otimizaeste tipo de transao. Uma srie de caminhos de interceptaes podem ser traados, dependendo

    da necessidade do desenvolvedor, para que as informaes a serem colocadas em um relatrio on-linesejam as mais imprescindveis o possvel. possvel inclusive salvar e imprimir o relatriogerado para consultas ou testes posteriores.

  • 5/26/2018 Biblia Delphi 7 PtBr

    33/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    33

    SQL Explorer

    A ferramenta SQL Explorerprovidencia uma informao centralizada do gerenciamentodas demandas da base de dados; tais como, suporte a modificao e criao de tabelas, sinnimos,procedimentos de gravao, triggers (gatilhos disparados pelo banco) e execuo das regras denegcio interativas do SQL. Uma ferramenta grfica que proporciona um esquema de integridadeda base da dados e contm as ferramentas essenciais para os administradores de bancos de dados.

    O SQL Explorer, unicamente para o Delphi, administra de forma intuitiva e fcil obanco de dados. A simplicidade de uso da interface grfica um perfeito caminho pararepresentar o complexo relacionamento que existe no banco de dados do servidor. Apresenta umesquema para informaes em bancos como Oracle, Sybase, InterBase, Informix, DB2eoutros. O desenvolvedor poder trilhar campos, tabelas e procedimentos do banco dentro daconstruo da aplicaoDelphirapidamente, podendo ser direcionado para mltiplos servidores emltiplos bancos.

  • 5/26/2018 Biblia Delphi 7 PtBr

    34/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    34

    O SQL Explorer, tambm administra o Dicionrio de Dados. Sua interface de usosimplicado permite facilmente definir novos domnios para os atributos dos campos e associaoentre tabelas.

    InterBase NT - Banco de Dados RelacionalODelphi Client / Server Suite 2.0inclui uma licena para dois usurios do uso do banco

    de dados InterBase NT. Desenvolvedores podem criar em mquinas standalone aplicaesusando este poderoso banco de dados (concorrente de bancos como Oracle, Sybase,Informix, DB2e outros). Com o crescimento do volume de dados e do tamanho da aplicao,ambos, o InterBasee oDelphiconseguem interagir de forma harmoniosa.

    O InterBase um banco de dados de alta performance produzido pela Borland, comoplataforma para SQL Server. Est disponvel em mais de 15 sistemas operacionais incluindo:DOS e Windows 3.1, Windows 95, Windows NT, NetWare, SCO, Sun OS, SunSolaris, HP-UX, IBM AIX, SGI IRIX, etc.

    O InterBase um banco a nvel ANSI SQL 92, suportando eventos programados eexcees ocorridas no modelo por acesso de mltiplos usurios. Oferece chaves de controle anvel de registros para arquiteturas Multi-Gerenciais causando um performance muito superior auma leitura das operaes de banco, em contrrio das leituras de blocagem de operaes escritasrealizadas por outros bancos.

    A verso local do InterBase, disponvel apenas com a cpia Client / Server Suite 2.0,providencia aos desenvolvedores um caminho rpido para o desenvolvimento de prottipos e desistemas com um banco de padroANSI 92 SQL. Esta verso propicia as mesmas funcionalidadesda verso multi-usurio para NT e Unix, incluindo controles de transaes, procedimentos degravao (stored procedures), uso de triggers (gatilhos disparados do banco), ou eventos de

  • 5/26/2018 Biblia Delphi 7 PtBr

    35/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    35

    alerta. Imagine o desenvolvimento de um grande sistema sendo realizado em um Laptopdentrode um trem, avio ou at mesmo na frente do cliente, apenas o acesso ao banco de dados final que ser modificado.

    Utilizando o Delphi Client/Server Suite 2.0, desenvolvedores podero conceber edesenhar prottipos e testar a aplicao final em uma nica mquina. O InterBaseoferece umexcepcional acesso a interface grfica do Windows, incluindo a configurao das propriedades,um perfeito gerenciador de bancos nativo 32 bits, total interatividade com ferramentas SQL, euma completa documentao em formato deHelpdo Windows (arquivos .HLP).

    Captulo III

    Projeto Piloto

    bvio que fica mais simples o aprendizado de uma nova ferramenta quando se fazalgum tipo de aplicativo, principalmente um que seja til, ento ao longo deste estudo, iremosdesenvolver um aplicativo destinado ao Cadastro de Compact Disc (CDs). Todas as pessoas hojeem dia tem montes de CDs, virou uma espcie de febre, ento, porque no fazer um sistema paracadastr-los e control-los, quanto tempo voc j perdeu pensando em qual deles est aquelamsica que voc quer ouvir? Ou uma capa que seu filho rasgou, que tal imprimi-la novamente? Eno captulo multimdia aprenderemos um mtodo para tocar o CD.

    Para darmos partida ao nosso primeiro aplicativo (Projeto Piloto), definiremos

    inicialmente as nossas necessidades:1. Permitir o cadastro completo e a consulta aos CDs;

    2. Ser possvel separar os CDs em categorias, facilitando deste modo a busca e oarmazenamento;

    3. Quanto as msicas deve ser permitido o cadastro do autor e o tempo de durao;

    4. Permitir a incluso da foto da capa do CD; e

    5. Comportar relatrios de conferncia e reimpresso da capa.

    O acesso Delphi a arquivos pode ser feito atravs de duas maneiras local ou remoto,sendo a segunda apenas possvel pela cpia CLIENT-SERVER voltadas a bases de dados maiscomplexas como ORACLE

    ou SYBASE

    , inicialmente, restringiremos o nosso estudo a base de

    dados locais conseguida atravs da verso Desktop. Lembre-se que verso Desktop contmacesso a criao e a definio de bases dBasee Paradox, alm de outras conseguidas atravs deODBC.

    Com base no que foi sugerido acima, vamos definir as tabelas:

    CATEGORIAObjetivo: Dados das categorias do CD.Campos: SIGLA DA CATEGORIA - Abreviao da descrio da categoria.

    DESCRIO DA CATEGORIA - Descrio da Categoria.

  • 5/26/2018 Biblia Delphi 7 PtBr

    36/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    36

    BSICOObjetivo: Dados iniciais do CD.Campos: CDIGO DO DISCO - Cdigo do CD, encontrado na prpia capa.

    NOME DO DISCO - Nome do CD.TIPO DO DISCO - Tipo de Gravao do CD: AAA, AAD, ADD ou DDD.FOTO DA CAPA - Armazenar a foto da capa do CD.SIGLA DA CATEGORIA - Ligao para o cdigo da Categoria.

    MSICASObjetivo: Dados das msicas do CD.Campos:

    CDIGO DO DISCO - Ligao com o CD.NUMERO DA FAIXA - Nmero da faixa.NOME DA MSICA - Ttulo da msica.

    NOME DO AUTOR - Nome do autor da msica.TEMPO DA MSICA - Tempo de durao da msica MMSS.

    Criando o Modelo Relacional

    Para criar um modelo relacional simples e trabalhar com bases locais voc pode optar pordois modos do tipo dBaseou Paradox, particularmente eu prefiro trabalhar com Paradox, masvoc rapidamente notar que tanto faz, trabalhe com aquela que voc se sinta mais a vontade.

    +Escolha a base de acordo com o porte do sistema: Para sistemas pequenos e simples ecom poucos dados use o dBase, para sistemas mdio, multi-usurio, com uma boa quantidade de

    dados escolha a base Paradoxe para sistemas complexos em vrias plataformas e acessos multi-usurio opte porInterBase.

    Vamos agora visualizar um modelo que demonstrar como as tabelas devero serelacionar no sistema, este modelo tambm facilitar as relaes e a integrao dos formulrios dosistema quando construiremos nossas consultas e relatrios.

    No modelo de entidade e relacionamento acima l-se:

  • 5/26/2018 Biblia Delphi 7 PtBr

    37/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    37

    1 registro da entidade Bsicose relaciona com 1 registro da entidade Categoriaenquantoque 1 registro da entidade Categoriase relaciona com n registros da entidade Bsico,

    1 registro da entidade Msicasse relaciona com 1 registro da entidade Bsicoenquantoque 1 registro da entidade Bsicose relaciona com n registros da entidade Msica.

    Com o MER nas mos j se tem a idia de como deve ficar as estruturas das tabelas,ento, vamos queimar um pouco de neurnios.

    Trabalhando com DataBase Engine Configuration

    Criando o Alias

    O ALIAS simplesmente um apelido (sinnimo) a ser dado para o banco de dados, esteapelido permitir que no lugar de falarmos para ao Delphi que a nossa base se encontra emC:\SISTEMA\... ou D:\DESENV\SISTEMA\..., simplesmente digamos se encontra em AliasX ouAliasY, isto facilitar o seu trabalho quando voc por exemplo quiser modificar o diretrio dosistema, basta mudar o endereo do ALIASe no sair modificando vrios formulrios.

    +Outra vantagem em se criar um Alias est na mudana da base, basta reapontarmos oAlias para outra base que o sistema automaticamente ver estas novas informaes. Lembre-seque para isto ser possvel necessrio que o nome das tabelas e dos campos sejamnecessariamente os mesmos, incluindo o tamanho e o tipo (no apndice B encontrado umatabela para a converso das diversas bases de dados).

    Para trabalhar com ALIAS o caminho mais interessante e com o Database Engine

    Configuration, no arquivo de programas doDelphid um duplo clique sobre o cone ,a configurao do banco de dados se divide em vrias pginas:

    Drivers - Controla os arquivos de acesso locais e ODBC dos bancos de dados utilizados;

    Aliases - Controle dos sinnimos dos sistemas;

    System - Define os recursos do Windowsque sero alocados pela aplicao;

    Date - Especifica os fo rmatos utilizados para campos tipo data;

    Time - Especifica os formatos utilizados para campos tipo hora; e

    Number - Especifica os formatos utilizados para campos tipo numrico.

    Se atualmente voc estiver utilizando a verso de desenvolvimento, os drivers queaparecero sero: dBase, InterBase e Paradox, na verso Client/Server alm desses serocolocados: Oracle, Informix, SyBase entre outros.

    Mude para a pginaAliasese click no boto New Alias, informe:New alias name:AliasDiscoAlias type:STANDARDBoto OK

  • 5/26/2018 Biblia Delphi 7 PtBr

    38/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    38

    Path:C:\SISTEMA\CADDISCODefault Driver:Paradox

    Neste momento o seu ALIASAliasDisco foi criado para a banco de dados Paradox, noformato Padro localizado no diretrio C:\SISTEMA\CADDISCO, no menu principal escolha aopo File e Save, oBDEsalvou o seu arquivo de configurao chamado IDAPI.CFG.

    + Crie com o Gerenciador de Arquivos o diretrio C:\SISTEMA\CADDISCO, aondeser localizado o sistema.

    +Para a base dBase a nica diferena seria o comando Default Driver: DBASE.

    Encerre oDatabase Engine Configuration.

    Trabalhando com DataBase DeskTop

    Criando o Banco de Dados via Estrutura

    Para criar suas tabelas, dispe-se de duas maneiras: o modo declaraes em SQLou pelajanela de estrutura, inicialmente, utilizaremos a janela de estrutura, pois alm de mais simples mais prtico, a menos que voc trabalhe com bases de acesso remoto, evite o modo declaraesem SQLpara manusear a estrutura de tabelas, principalmente tabelas simples como o caso doParadox ou o dBase, apesar que existem muitos fanticos por CREATE TABLE,ALTER TABLEeDROPs. Em seguida mostrarei como criar as mesmas tabelas utilizando o mtodo SQL.

    +Lembre-se de apagar as tabelas antes de cri-las novamente. Seno no ser possvelexecutar uma nica declarao SQL.

    Retorne ao Delphi, no menu principal escolha a opo TOOLS|DataBase DeskTop,maximize a tela para permitir uma melhor visualizao.

    Com o nosso sinnimo (ALIAS) criado iremos agora definir as nossas tabelas.Inicialmente vamos definir como nossa rea de trabalho: No menu principal, opo File|WorkingDirectory..., na opo Aliases: selecione AliasDisco, note que a opo Working Directoryserautomaticamente modificada para :AliasDisco:, finalmente confirme clicando no boto OK. Odiretrio apontado pelo Alias, agora ser o default, ou seja, tudo o que fizermos ser apontadopara o diretrio.

  • 5/26/2018 Biblia Delphi 7 PtBr

    39/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    39

    No menu principal, opo File, opo New, e opo Table..., ser mostrada uma janela

    com os tipos de possveis repositrios de tabelas no Table Typeescolha a opo Paradox 7 eclique no boto OK. Insira os seguintes campos:

    Field Name Type Size Key

    COD_DISCO N *

    NOM_DISCO A 60

    TIP_DISCO A 3

    FOT_CAPA B 3

    SIG_CATEG A 2

    + Dos campos, o nico que merece uma explicao e FOT_CAPA ele foi escolhidoneste formato (Binary) pois guardar uma imagem BitMap (extenso .BMP) da Capa do CD,todos os outros campos so caracteres alfanumricos, com a exceo do COD_DISCO que umcampo Numrico e chave.

    Para esta tabela precisamos ainda criar um ndice secundrio, para tanto na opo Tableproperties: chame a opo Secondary Indexes e clique no boto Define..., marque no campo

    Nom_Disco(na lista Fields) e clique no boto o campo passou para a listaIndexed Fields,clique no boto OKe digite SI_NomDisco para o nome do indice e clique no boto OK.

    Para salvar sua tabela clique no boto Save as... na opo Nome do Arquivo: insira onome da tabela - Basico.

    Crie agora as seguintes tabelas:

    1. Categor

    Field Name Type Size KeySIG_CATEG A 2 *

    DES_CATEG A 40

    2. Musica

    Field Name Type Size Key

    COD_DISCO N *

    NUM_FAIXA N *

    NOM_MUSICA A 60

  • 5/26/2018 Biblia Delphi 7 PtBr

    40/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    40

    NOM_AUTOR A 40TMP_MUSICA A 4

    Criando os Relacionamentos via Estrutura

    Os relacionamentos entre as tabelas poderia ter sido criado no momento da construodas mesmas, mas acredito que deste modo seja mais simples, a partir do menu principal, opoFile, opo Open, e opo Table..., ser aberto uma janela com todas as tabelas, clique na tabela

    BASICO e sua estrutura ser mostrada, clique no boto Restructure, ou a partir do menuprincipal, opo Table, opo Restructure..., na opo Table properties:alterne para a opoReferential Integritye clique no boto Define..., no lado esquerdo (Lista Fields) d um duploclique no campo SIG_CATEG e no lado direito (Lista Tables) d um duplo clique na tabela

    CATEGOR.DB, clique no boto de OK para confirmar e ser solicitado o nome para o ndice.

    Para o nome do ndice crie um padro de FK_ + {nome do campo} + {nome tabela pai},uma padronizao dos nomes dos ndices facilita a procura futuramente, ento para o nosso ndicecrie FK_SigCateg_Basico.

    Crie agora o outro relacionamento entre a tabela MUSICA e BASICO conforme a figuraabaixo:

    +Tambm possvel acessar oDatabase Desktopatravs do cone localizado nogrupo de trabalhoDELPHI.

    Encerre oDatabase Desktope retorne aoDelphi, ou apague as tabelas e...

    Criando o Banco de Dados via SQL

    Para os fanticos por declaraes SQL, vamos criar a mesma base de dados via SQL, sevoc ainda no o fez, observe no tpico anterior como colocar o ALIASna rea de trabalho. Istoser de muita utilidade quando formos salvar o nosso trabalho.

    No menu principal, opo File, opo New, e opo SQL File, ser mostrada uma janela

    para ser digitada a declarao SQL, observe na barra de comandos o boto Select Alias, ou apartir do menu principal opo SQL/Select Alias..., apenas observe que a rea de trabalho Workj est selecionada, clique em OK ou Cancel sem fazer nenhuma modificao, observe que ottulo da janela SQL Editor :WORK:.

  • 5/26/2018 Biblia Delphi 7 PtBr

    41/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    41

    Digite o seguinte na janela:Create Table Basico

    (COD_DISCO Numeric(4,0),

    NOM_DISCO VarChar(60),TIP_DISCO Char(3),FOT_CAPA Blob(3,2),SIG_CATEG Char(2),Primary Key(COD_DISCO));

    Clique no boto Run SQL, ou no menu SQL/Run SQL, ou ainda pressione F8,aps executado o comando a tabela ser criada. Salve o SQL com a opo File/Save (digiteBASICO .SQL)

    Abra novas janelas e crie o resto das tabelas:Create Index SI_NomDisco on Basico (NOM_DISCO); Criando o indice secundrio da BASICO

    Create Table CATEGOR Criando a Tabela CATEGOR(SIG_CATEG Char(2),DES_CATEG VarChar(40),Primary Key(SIG_CATEG));

    Create Table MUSICA Criando a tabela MUSICA(COD_DISCO Numeric(4,0),

    NUM_FAIXA Numeric(2,0),NOM_MUSICA VarChar(60),NOM_AUTOR VarChar(40),TMP_MUSICA Char(4),Primary Key(COD_DISCO, NUM_FAIXA));

    O SQL para o Paradox no consegue executar a criao de indices referenciais (ouConstraints) ento para criar este tipo de ndice crie-o atravs da janela de estrutura conformemostrado anteriormente.

    Observaes da utilizao do SQL com o dBase

    Infelizmente o dBase no suporta a clusula Primary Key que permite a criao dosndices muito menos a criao de chaves estrangeiras. Quanto as chaves estrangeiras no sepreocupe pois oDelphiconsegue manipular relacionamentos entre as tabelas mesmo que elas noestejem vinculadas.

    Caso voc esteja utilizando este tipo de base os passos para as criaes das tabelas so osmesmos mas corte as clusulas Primary Key necessrio criar os ndices separadamente. Abrauma nova declarao SQL, idntica a anterior, e digite o seguinte na janela:Create Index PK_Unica on Basico (COD_DISCO);

  • 5/26/2018 Biblia Delphi 7 PtBr

    42/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    42

    +O comando correto para este ndice deveria ser Create Unique Index PK_Unica onBasico (COD_DISCO); mas isto provoca um erro colocando que no possvel estadeclarao, ento coloque a clusula UNIQUEatravs da janela de estrutura.

    + Se voc esqueceu de ativar o Select Alias coloque Create Index Cod_Disco onBasico.dbf (COD_DISCO);

    As outras declaraes so:Create Index SI_NomDisco on Basico (NOM_DISCO); Criando o indice secundrioCreate Index FK_SigCateg_Basico on Basico (SIG_CATEG); Criando a chave estrangeiraCreate Index PK_Unica on Categor (SIG_CATEG); Criando a chave primriaCreate Index FK_CodDisco_Musica on Musica (COD_DISCO); Criando a chave estrangeira

    +O comando correto para a criao da chave dupla da tabela MUSICA seria CreateIndex Chv_Unica on Musica (COD_DISCO, NUM_FAIXA); mas novamente provocadoum erro mostrando a impossibilidade de execuo do comando, ento crie este ndice atravs dajanela de estrutura.

    + facilmente percebido que o DataBase DeskTopat que tenta colocar todas as basesde dados compatveis com a linguagem SQL, mas infelizmente ainda no foi nesta verso.

    +Para as tabelas do tipo ORACLE, INTERBASE, SYBASE e MS SQL Server a criaodas tabelas podem ser feitas tanto pelo modo de estrutura quanto pelas declaraes SQL maslembre-se que a alterao das mesmas s poder realizar-se atravs do modo de declaraes SQL.Aqui vo alguns exemplos destas declaraes:Create Table MUSICA Criando a tabela MUSICA

    (COD_DISCO Numeric(4,0),

    NUM_FAIXA Numeric(2,0),NOM_MUSICA VarChar(60),TMP_MUSICA Char(4),Constraint PK_Unica Primary Key(COD_DISCO, NUM_FAIXA),Constraint FK_CodDisco_Musica Foreign Key (Cod_Disco)

    References USUARIO_AGENDA (Cod_ Disco));

    ALTER TABLE MUSICA ADD NOM_AUTOR VarChar(40) Adiciona o campo Nom_Autor

    DROP TABLE MUSICA; Elimina a tabela MUSICA

    Encerre oDatabase Desktope retorne aoDelphi.

  • 5/26/2018 Biblia Delphi 7 PtBr

    43/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    43

    Captulo IV

    Trabalhando com o Menu

    Qualquer projeto precisa de um menu, fica mais prtico para o nosso usurio navegardentro de um projeto quando este limitado por um menu principal, iniciaremos o nosso projetonoDelphi com a criao do Menu Principal do Sistema.

    Metendo a Mo na Massa

    A partir deste ponto, nossa aula se transforma em receita de bolo, a nica coisa que vocprecisa fazer e seguir as orientaes passo a passo, no princpio pode parecer meio idiota, masafinal o computador uma mquina idiota. Bom, vamos ento metendo a mo na massa.

    Ao iniciar o Delphi, foi criado automaticamente um novo projeto, vamos descart-lo einiciar um novo. Para tanto:1. Lembre-se: no captulo anterior criamos o diretrio que abrigar o sistema a ser

    desenvolvido - C:\SISTEMA\CADDISCO - aprendemos o que o Alias eestruturamos as nossas tabelas, se algum destes conceitos ficaram dispersos eu lheaconselho que retorne ao captulo anterior

    2. Crie um novo projeto digitando File e New Application. (Responda negativamentequaisquer mensagem para gravar o projeto atual).

    Criando a janela do menu

    A janela do menu principal e bem simples, como voc j deve ter visto em vriosaplicativos o menu o objeto que fica servindo de pano de fundo para toda a aplicao, todo otrabalho e realizado com o auxlio de suas chamadas, em conjunto com o menu teremos trsformulrios gerenciadores que daremos o nome de:

    F_Menu - Menu principal propriamente dito;

    F_Sobre - A janela Sobre o sistema...; e

    F_Inicio - Janela Splashque iniciar o nosso aplicativo.

    Vamos criar inicialmente o nosso menu principal:

    1. Clique no boto (Main Menu), localizado na Component Palette na pginaStandard, e clique dentro do objeto Form1(no se preocupe com a posio, pois esteobjeto ficar invisvel quando o aplicativo for executado).

    Foi criado neste momento o objetoMainMenu1 derivado da classe de objeto TMainMenu,a partir deste objeto vamos criar nosso menu:

  • 5/26/2018 Biblia Delphi 7 PtBr

    44/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    44

    2. D um duplo clique em cima do objeto, ou clique na propriedade Items da ObjectInspectoraparecer o boto . Clique neste boto.

    Observe a tela de propriedades do Object Inspector, neste momento vou me conter emfalar das mais significativas, mas futuramente retomaremos o assunto:

    Caption - Define o nome do item de menu, quaisquer nomes so vlidos, incluindoacentos, o caractere especial & deve ser colocado uma nica vez, ele causa osublinhado da letra, tornando-a uma letra (em conjunto com a tecla Alt) de acesso aopo.

    Enabled- Define se o item est disponvel ou no para o usurio.

    Name- Nome interno do item (colocado automaticamente na escolha do Caption).

    ShortCut- Combinao de teclas, para um rpido acesso ao item (alm da letra escolhidacom &).

    Inserindo os itens iniciais:1. Digite &Arquivo na propriedade Caption, em seguida pressione a tecla Enter.

    2. Clique no novo espao aberto, criado lateralmente, e digite &Consulta napropriedade Caption, em seguida pressione a tecla Enter.

    3. Proceda da mesma forma criando as opes: &Relatrio e Au&xlio.

    4. Clique na opo Arquivo, aparecer um espao vazio abaixo, clique neste espao edigite &Tabela na propriedade Caption. Ao ser dado Entero Delphicriar maisum espao abaixo, digite &Cadastro na propriedade Caption.

    5. Abaixo do Cadastro, digite - (sinal de menos) na propriedade Caption(o Delphi

    criar uma barra de separao) e altere a propriedade Enabledpara False.6. No novo espao criado, aps a barra, digite &Sair na propriedade Captione altere

    a propriedade ShortCutpara Ctrl+X.

    7. Clique na opo Tabela, clique com o boto direito do mouse, aparecer um menupulldown, clique na opo Create Submenu.

    8. Digite &Categoria na propriedade Caption.

    Complete os prximos itens de modo que o menu fique:

    Arquivo Consulta Relatrio Auxlio

    Tabela Categoria CDs Geral Sobre o sistema

    Cadastro Msica por CDs Capa do CD Contedo

    Sair Ctrl+X Configura Impressora Tpicos de AjudaComo usar a Ajuda

    Saia da janelaMenu Designerdigitando Alt+F4, o menu j existe no objetoform1.

    Altere as seguinte propriedades para o objetoform1:

    Propriedade Valor Descrio

    BorderStyle Single Estilo da borda da janela; modo simples.

    Caption Compact Disc Digital Audio Label escrito na tarja superior da janela.

  • 5/26/2018 Biblia Delphi 7 PtBr

    45/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    45

    Color clMenu Cor da janela, clMenu uma constante que guarda a corpadro da janela definido pelo usurio no Windows.

    Name F_Menu Nome do objeto interno.

    WindowsState wsMaximized Modo de abertura da janela, modo Maximizado.

    Salvando o formulrio e o projeto:1. Salve o Formulrio nas opes de menu Filee Save(ou pressione Ctrl+S), oDelphi

    questionar o nome e o diretrio, o diretrio (conforme criado no captulo anterior) o C:\SISTEMA\CADDISCOe para o nome digite fMenu(note que o nome externoe o mesmo do nome interno diferenciado por _, isto facilitar a identificao doformulrio e da sua unidade).

    2. Salve o Projeto digitando File e Save Project, salve o projeto no diretrioC:\SISTEMA\CADDISCOcom o nome CDDA.

    Criando no menu uma linha de status:

    3. Clique no boto (StatusBar) na pgina Win95da Component Palletee cliqueem qualquer posio do objeto F_Menu.

    4. Clique no objeto criado StatusBar1 em seguida clique na propriedade Panels, paraalterar esta propriedade clique no boto , aparecer a janela da Status Bar PanelsEditor, clique sobre o boto Newe para a propriedade Textcoloque Bem vindo aosistema... e clique no boto OK.

    5. Altere tambm a propriedadeNamedo objeto para LinhaStatus

    +Caso voc esteje usando oDelphi 1.0crie a barra de status do seguinte modo:

    1. Clique no boto (Panel) na Component Palletena pgina Standarde clique emqualquer posio do objeto F_Menu.

    2. Clique no objeto criado StatusBar1e altere as seguintes propriedades:

    Propriedade Valor Descrio

    Align alBottom Alinhamento dentro doform, todo no rodap

    Alignment taLeftJustify Alinhamento da Caption, justificado esquerda

  • 5/26/2018 Biblia Delphi 7 PtBr

    46/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    46

    BevelInner bvLowered Borda 3D interna, tipo pressionadoBevelOuter bvLowered Borda 3D externa, tipo pressionado

    BorderWidth 1 Tamanho da borda

    Caption Bem vindo ao sistema... Label do objeto

    Name LinhaStatus Nome do objeto

    Font MS Sans Serif, Estilo dafonte: Normal, Tamanho: 8,Cor: Azul Marinho

    Tipo de letra a ser mostrada no objeto, para alterar esta

    propriedade clique no boto

    Height 22 Altura do objeto

    Inserindo os Cdigos Iniciais

    Vamos inserir o cdigo para o objeto LinhaStatus, este objeto receber os contedos dapropriedade hint dos diversos objetos, formando assim uma linha de ajuda on-line na parteinferior do menu.

    Clique no boto (Toggle Form/Unit) da SpeedBar, at voc alternar para o CodeEditor.

    Abaixo da declarao: Privateinsira os cdigos:private Procedures ou Funes Locais.

    { Private declarations }procedure ShowHint (Sender: TObject); Cabealho de uma procedure Local.

    public Procedures ou Funes Pblicas.{ Public declarations }

    end; Final da seo de declarao.

    Abaixo da diretiva de compilao: {$R *.DFM}{$R *.DFM} Diretiva de compilao associando o nome do

    recurso externo ao mesmo nome do objeto Form.procedure TF_Menu.ShowHint (Sender: TObject); Cabealho da Procedure associado ao nome dobegin objeto principal (TF_Menu).

    LinhaStatus.Panels.Items[0].Text := Application.hint; Atribui o valor do hint da aplicaco aoend; Item criadodo objeto LinhaStatus.

    Clique no boto (Toggle Form/Unit) da SpeedBar, at voc alternar para o Formclique no objeto F_Menue na pginaEventsda Object Inspector, d um duplo clique noevento OnCreate.

    1. ODelphicriou a procedure FormCreatea ser iniciada quando o objeto F_Menu forcriado.

    2. Digite o seguinte comando abaixo do comando begin:

    procedure TF_Menu.FormCreate (Sender: TObject);begin

    Application.OnHint := ShowHint; Atribui o valor da procedure ShowHint ao OnHintdaend; aplicao.

  • 5/26/2018 Biblia Delphi 7 PtBr

    47/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    47

    Clique no boto (Toggle Form/Unit) da SpeedBar, at voc alternar para o Formclique no objeto MainMenu1 e entre no Menu Designer, e para cada opo de Menualtere as propriedades hinte name do seguinte modo:

    Opo do Menu Hint NameArquivo Cadastro e sada do sistema. Arquivo1Tabela Informaes bsicas do sistema. Tabela1Categoria Tipos de categoria para os CDs. ItemTabela1Cadastro Incluso e manuteno dos CDs. Cadastro1Sair Sada do sistema e retorno ao Windows. Sair1Consulta Verificao e pesquisa dos CDs cadastrados. Consulta1CDs Localizao dos CDs atravs de um filtro estabelecido. ItemConsulta1CDs por msica Localiza o CD atravs de um ttulo de uma msica. ItemConsulta2Relatrio Emisses em papel dos CDs cadastrados. Relatorio1

    Geral Impresso dos CDs por um intervalo de cdigo. ItemRelatorio1Capa do CD Impresso de capas para os CDs. ItemRelatorio2Configura Impressora Verifica a impressora a qual ser destinado os relatrios. ConfImpressora1Auxlio Formas de ajuda direta ao sistema. Auxilio1Sobre o sistema Ajuda direta com o responsvel pelo desenvolvimento. ItemAuxilio1Contedo Manual On-Line direto. ItemAuxilio2Tpicos de Ajuda Exibe os tpicos de ajuda do Manual On-Line. ItemAuxilio3Como usar a Ajuda Mostra como utilizar o Auxlio On-Line. ItemAuxilio4

    Saia doMenu Designer, salve o formulrio e o projeto.

    Rode o projeto, clicando no boto da SpeedBar, ou no menu principal a opo RuneRun, ou ainda, digite F9.

    Teste as opes do menu, veja na linha de Status oshints

    informados, saia comAlt+F4

    .+Caso voc esteje usando oDelphi 1.0troque a procedure ShowHintpara:

    procedure TF_Menu.ShowHint (Sender: TObject);begin

    LinhaStatus.Caption := Application.hint; Atribui o valor do hint da aplicaco a Propriedadeend; Captiondo objeto LinhaStatus.

    Iniciando os comandos do Menu

    Com o menu pronto, comearemos a codificar os comandos que disponibilizamos aonosso usurio:

    Automatizando o Comando SAIR: No objeto F_Menu, clique na opo Arquivoe cliquena opo Sair. ODelphicriou o evento Click para o objeto Sair1.

    Digite o seguinte comando abaixo do begin:procedureTF_Menu.Sair1Click (Sender: TObject);begin

    Close; proporciona o fechamento do formulrio ativoend;

  • 5/26/2018 Biblia Delphi 7 PtBr

    48/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    48

    Colocando os comandos para o Auxlio

    ODelphiimplementa o auxlio on-line de maneira prtica e eficiente, no ensinarei aquicomo construir um arquivo .HLP, existem diversos aplicativos que j o fazem automaticamente efica a seu critrio o modo de cri-lo, apenas mostrarei como implement-lo em seu projeto.

    Clique na opo Project | Options...e na pginaApplicationlocalize o seu arquivo coma opo Help file, aproveite tambm para nomear o projeto, com a opo Titlee colocarum cone para o projeto, opo Icon(clique no boto Load Icon...) e ao trmino cliqueno boto OK.

    Automatizando o Comando CONTEDO: No objeto F_Menu, clique na opo Auxlioeclique na opo Contedo. Digite:

    procedureTF_Menu. ItemAuxilio2Click(Sender: TObject);begin

    Application.HelpCommand(HELP_CONTENTS, 0); Chama o arquivo de Ajuda

    end; Automatizando o Comando TPICOS DE AJUDA: No objeto F_Menu, clique na opo

    Auxlioe clique na opo Tpicos de Ajuda. Digite:

    procedureTF_Menu. ItemAuxilio3Click(Sender: TObject);const

    EmptyString: pChar = ''; Cria uma constantebegin

    Application.HelpCommand(HELP_PARTIALKEY, LongInt(EmptyString)); Tpicos do Ajudaend;

    Automatizando o Comando COMO USAR A AJUDA: No objeto F_Menu, clique naopo Auxlioe clique na opo Como usar a Ajuda. Digite:

    procedureTF_Menu. ItemAuxilio4Click(Sender: TObject);begin

    Application.HelpCommand(HELP_HELPONHELP, 0); Chama o auxlio do Windowsend;

    Quando fecharmos a nossa aplicao e necessrio que tambm desativemos o auxlio, noobjeto F_Menu, clique na pgina de Eventse clique no evento Destroy. Digite:

    procedureTF_Menu.FormDestroy(Sender: TObject);begin

    Application.HelpCommand(HELP_QUIT, 0); Desabilita o auxlio

  • 5/26/2018 Biblia Delphi 7 PtBr

    49/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    49

    end;

    Saia doMenu Designer, salve o formulrio e o projeto.

    Rode o projeto e teste as opes do menu, saia com Ctrl+Xou utilize o comando Sair.

    + Caso o F1 no ative o auxlio On-Line, provavelmente o seu menu est com apropriedade FormStyle em modo fsMDIForm, coloque-a no modo fsNormal. Se mesmo assimainda no funcionou, mude a propriedadeHelpContextdo formulrio para 1.

    +As palavras-chaves para o comando HelpCommand so:

    Comando Dados Ao

    HELP_CONTEXT Inteiro longo, contendo o nmerodo contexto. Mostra o auxlio a partir de tpico selecionadoidentificado a partir do nmero do contextodefinido pela seo [MAP] do arquivo .HPJ

    HELP_CONTENTS Ignorado. Normalmente passado 0. Mostra o contedo do primeiro tpico definidopela seo [MAP] do arquivo .HPJ

    HELP_SETCONTENTS Inteiro longo, contendo o nmerodo contexto que foi designado comotpico de contedo.

    Determina a chamada do tpico determinadoatravs do uso da tecla F1

    HELP_CONTEXTPOPUP Inteiro longo, contendo o nmerodo contexto.

    Mostra uma janela Pop-Up com um tpicoparticular indentificado pelo nmero do contextodefinido pela seo [MAP] do arquivo .HPJ

    HELP_KEY Ponteiro longo como uma stringcontendo o tpico designado.

    Mostra um tpico pesquisado em uma lista depalavras chaves. Esta palavra chave deve serexatamente o texto procurado.

    HELP_PARTIALKEY Ponteiro longo como uma string

    contendo o tpico designado.

    Mostra um determinado tpico atravs de uma

    lista de palavras chaves. Se a palavra chave nofor encontrada posiciona na palavra fonticamais perto.

    HELP_MULTIKEY Ponteiro longo para uma estruturade TMULTIKEYHELP. Estaestrutura especfica de caracteres e

    palavras chaves.

    Mostra o tpico indentificado pela palavra chaveou uma chave da tabela alternada.

    HELP_COMMAND Ponteiro longo, contendo a macropara a execuo

    Executa um macro help.

    HELP_SETWINPOS Ponteiro longo para uma estruturade TMULTIKEYHELP. Estaestrutura especfica contm otamanho e a posio da janela dohelp primrio ou a janela secundria

    para ser mostrado.

    Mostra um help do windows com um mnimo dememria, variando o tamanho e a posio deacordo com o dado passado.

    HELP_FORCEFILE Ignorado. Normalmente passado 0. Executa o WinHelp mostrando o arquivo deauxlio corrijido.

    HELP_HELPONHELP Ignorado. Normalmente passado 0. Mostra o auxlio de como usar o auxlio.

    HELP_QUIT Ignorado. Normalmente passado 0. Solicita o fechamento do auxlio ativo.

  • 5/26/2018 Biblia Delphi 7 PtBr

    50/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    50

    Criando a janela Sobre o SistemaEm todo o sistema criado para o Windows

    includo uma janela Sobre o Sistema, por

    uma boa razo! todos os outros sistemas para o Windows

    possuem uma, e quem vai quererquebrar esta maravilhosa tradio e criar um sistema sem uma janela destas ?

    Criar o primeiro formulrio com o Delphi no uma tarefa assim to difcil, mas paraperdemos o medo inicial vamos criar aAboutBox (ou CaixaSobre), observe:

    Criando e alterando os objetos

    Para criar o formulrio a partir do menu principal a opo File e New..., aparecer ajanela daNew Items(mais informaes retorne ao Captulo II) e clique na pgina Formse no objeto entituladoAbout box.

    Altere os seguintes objetos (localize-os atravs da Object Inspector):

    AboutBox (classe TAboutBox):Propriedade Valor Descrio

    Caption Sobre o sistema Label escrito na tarja superior da janela

    Name F_Sobre Nome interno do objeto

    ProgramIcon (classe TImage):Propriedade Valor Descrio

    Picture Escolha o BitMap de sua preferncia Objeto imagem

    ProductName (classe TLabel):Propriedade Valor Descrio

    Caption CDDA Label do objeto

    Font Ms Sans Serif, Negrito Itlico, 18,Castanho

    Tipo de letra a ser mostrada no objeto

    Version (classe TLabel):Propriedade Valor Descrio

    Caption Verso Beta Teste Label do objeto

    Font Ms Sans Serif, Itlico, 8, Azul Marinho Tipo de letra a ser mostrada no objeto

    Copyright (classe TLabel):

    Propriedade Valor DescrioCaption Copyright

    1995 - Nome da Empresa Label do objeto

    Font Ms Sans Serif, Normal, 8, Azul marinho Tipo de letra a ser mostrada no objeto

    +Para conseguir um pressione ALT+184 e um pressione ALT+169.

    Comments (classe TLabel):Propriedade Valor Descrio

    Caption Compact Disc Digital Audio - Cadastro de CDs Label do objeto

  • 5/26/2018 Biblia Delphi 7 PtBr

    51/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    51

    Font Ms Sans Serif, Normal, 8, Preto Tipo de letra a ser mostrada no objeto

    Elimine o objeto OKButton(boto de OK), clique sobre ele e pressione Delete, clique no

    objeto F_Sobre e click no objeto BitBtn , encontrado na Component Palette napginaAdditional, e click novamente no F_Sobre

    Altere as seguintes propriedades:Propriedade Valor Descrio

    Kind bkOK Determina a classe a ser utilizada pelo boto, automaticamenteser alterado as propriedades: Caption, Glyph e ModalResult

    Hint Retorna ao menu principal Ajuda on-line para o objeto especfico

    ShowHint True Mostrar o contedo da propriedade hintsob a forma de uma caixade ajuda on-line

    Name ButOK Nome do ObjetoWidth 92 Largura do objeto

    D uma organizada geral quanto a posio dos objetos para voc poder ter uma idiacompare o desenho do seu formulrio para ver se no ficou faltando nada:

    Salve o formulrio nas opes de menu File e Save (ou pressione Ctrl+S), o Delphiquestionar o nome e o diretrio, o diretrio o C:\SISTEMA\CADDISCO e para onome digite fSobre (note que novamente o nome externo e o mesmo do nome internodiferenciado por _).

    Associando o form Sobre o Sistema ao menu

    Vamos associar o form fSobrecom o fMenu:

    Automatizando o comando SOBRE O SISTEMA: No objeto F_Menu, clique na opoAuxlioe na opo Sobre o Sistema. O Delphicriou o evento Clickpara o objeto itemdo menu ItemAuxilio1.

    Digite o seguinte comando abaixo do begin:

  • 5/26/2018 Biblia Delphi 7 PtBr

    52/182

    Borland Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

    52

    procedure TF_Menu.ItemAuxilio1Click(Sender: TObject);beginF_Sobre.ShowModal; Abre o Objeto F_Sobre em modo Modal.

    end;

    Abaixo da diretiva de compilao: {$R *.DFM}

    {$R *.DFM}

    usesfSobre; Utiliza a Unidade fSobre e todos os objetos dependentes dela.

    procedure TF_Menu.ShowHint (Sender: TObject);

    Saia do Code Editore salve o formulrio e o projeto.

    Rode o projeto e teste o formulrio Sobre o Sistema, o modo Modalno permitir quevoc clique em nenhum outro lugar at a finalizao desta janela, volte para o menu como boto OK.

    +Note que no foi preciso colocar nenhum cdigo para que ao pressionar o boto OK oformulrio fosse fechado,