Upload
allmetal
View
142
Download
0
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,