Académique Documents
Professionnel Documents
Culture Documents
Pr-Requisitos: Windows 98 Delphi 4.0 verso Client/Server Suite BDE 5.00 MS-Access 97
Arquivos trabalhados juntos com esta apostila: BRASIL.BMP NORTE.BMP NORDESTE.BMP SUL.BMP SULDESTE.BMP CENTRO.BMP
Prefcio
Uma das grandes vantagens do Delphi o seu relacionamento com os diversos bancos de dados atualmente existentes, e o Delphi um dos poucos ambientes que consegue fazer essa conexo de forma rpida e prtica. Mas antes de nos enveredarmos no conceito de Banco de Dados vamos criar a nossa capa do aplicativo, garanto que voc achar bastante interessante o que estamos prestes a comear a desenvolver. Vamos a uma rpida explicao o que este projeto. Inicialmente ser mostrado o mapa do Brasil para que o usurio possa escolher determinada regio, aps a escolha de uma regio o usurio poder dentro desta escolher qual o estado ele deseja ter uma pequena descrio, eu vou alargar um pouco e dar tambm a possibilidade de impresso da regio escolhida.
figura) 4. V na Object Inspector e localize o objeto Form1 (basta clicar no Combo Box para selecion-lo), e altere as seguintes propriedades: 4.1. BorderStyle: bsDialog (Far com que a janela fique no formato padro de uma janela de mensagens) 4.2. Caption: Mapa Eletrnico (Contedo da tarja do formulrio) 4.3. Name: F_Mapa (Nome interno do formulrio) 4.4. Position: poScreenCenter (Far com que o formulrio fique sempre centralizado quando for executado) 5. D uma salvadinha no seu projeto, para tanto, no menu v em File | Save All...: 5.1. Aonde aparece Unit1.pas (o Delphi est se referindo do nome do formulrio) mude para fMapa.PAS 5.2. Aonde aparece Project1.dpr (o Delphi est se referindo do nome do projeto - que ser o nome do executvel final) mude para Mapa.DPR 6. Na Component Pallete localize uma pgina chamada Standard e dentro dessa pgina localize o objeto Label (acredito que seja o terceiro) clique no objeto e d um clique no Form e altere as seguintes propriedades: 6.1. Font: Clique nos "..." e faa as seguintes altees na janela de Fonts: 6.11. Cor: Castanho 6.12. Estilo: Negrito 6.2. Caption: Clique sobre a Regio a consultar (Contedo que ser mostrado) 7. Na Component Pallete localize uma pgina chamada Additional e dentro dessa pgina localize o objeto Image (acredito que seja o sexto) pressione a tecla SHIFT e clique no objeto (deve ter ficado um quadriculado azul em volta do objeto, como se ficasse marcado) e d cinco cliques no Form - de preferncia um em cada regio, e altere as propriedades Name e Hint de cada um para, respectivamente: Name ImgNorte ImgNordeste ImgCentro ImgSudeste ImgSul - Hint - Mostra os estados da Regio Norte - Mostra os estados da Regio Nordeste - Mostra os estados da Regio Centro-Oeste - Mostra os estados da Regio Sudeste - Mostra os estados da Regio Sul
Importante - Isso pode ser usado para alterar diversas propriedades de objetos diferentes, praticaremos
isso posteriormente. 9. Quando terminar clique em qualquer regio do formulrio para desmarcar os objetos.
10. Para terminar nosso primeiro formulrio desse projeto v para a Component Pallete localize uma pgina chamada Additional e dentro dessa pgina localize o objeto BitBtn (acredito que seja o primeiro) clique no objeto e d um clique no Form e altere as seguintes propriedades: 10.1. Kind: bkClose, isso fez com que trs importantes propriedades se alterassem: 10.11. Caption: assumiu o valor &Close. 10.12. Glyph: ganhou uma imagem padro de uma portinha de sada 10.13. Modal Result: apesar de no ter sofrido alterao internamente foi disparado uma Flag que far com que quando este boto seja clicado o formulrio se encerre automaticamente. 10.2. Caption: &Fechar (apenas para "aportuguesar"o nosso aplicativo). 11. D uma comparadinha no desenho para ver como ficou:
Bom, este ser o nosso primeiro formulrio, de uma srie de sete, sua funo simples, ele mostrar o mapa do Brasil e ao ser clicar em qualquer parte de uma determinada regio ele disparar o mapa respectivo desta.
Codificando o mapa
A codificao um tanto simples, mas pretendo aqui ensinar tambm alguns macetes interessantes, aperte a tecla F12 at que voc tenha a janela da Code Editor aberta e localize para mim as seguintes linhas: ImgSul: TImage; ImgSudeste: TImage; private Inclua a seguinte chamada a um procedimento antes da parte private: ImgSul: TImage; ImgSudeste: TImage; procedure ChamaRegiao(Sender: TObject); private
Agora localize a linha: implementation {$R *.DFM} end. E faa as seguintes alteraes implementation {$R *.DFM} uses fNorte, fNordeste, fSul, fSudeste, fCentro;
// Chama o mapa da Regio Norte // Chama o mapa da Regio Nordeste // Chama o mapa da Regio Sul // Chama o mapa da Regio Sudeste // Chama o mapa da Regio Centro-Oeste
procedure TF_Mapa.ChamaRegiao(Sender: TObject); // Chama os outros Formulrios procedure CriaForm(aFormClass: TFormClass); begin with aFormClass.Create(Application) do try ShowModal; finally Free; end; end; begin if (Sender = ImgNorte) then CriaForm(TF_Norte) else if (Sender = ImgCentro) then CriaForm(TF_Centro) else if (Sender = ImgNordeste) then CriaForm(TF_Nordeste) else if (Sender = ImgSul) then CriaForm(TF_Sul) else if (Sender = ImgSudeste) then CriaForm(TF_Sudeste); end; end. Antes de explicar esse procedimento deixa eu comentar porque criei uma nova declarao USES (note que na terceira linha da Unit - l em cima) j tem um comando assim, este comando serve para identificar minhas unidades externas, antes da palavra chave IMPLEMENTATION assim que o formulrio gerado tudo compilado e salvaguardado em reas de memria prontos para serem utilizados, ou seja, a Unit Windows (se voc reparar ela est l em cima) e jogada para uma rea de memria, mas em compensao a Unit fNorte (que criaremos posteriormente) no armazenada. Assim eu estou preservando vrios blocos de memria para serem utilizados apenas quando realmente forem necessrios. Prontinho agora vamos explicar essa procedure linda e maravilhosa que foi montada de propsito para voc entenda algumas artimanhas da linguagem Pascal, antes de faz-la poderiamos simplesmente em cada objeto TImage clicarmos no evento OnClick e para cada um colocarmos o seguinte cdigo: (por exemplo para o objeto da Regio Norte)
begin F_Norte := TF_Norte.Create(Application); F_Norte.ShowModal; F_Norte.Free; end; Isso funcionaria perfeitamente bem mas como so cinco objetos precisariamos repetir isso cinco vezes (imagine se fossem uns 20 ou 30), e isso j no to bom assim em Pascal. Outra coisa que poderiamos fazer , criamos um procedimento particular (l no Private) para todas os outros procedimentos ento ficaria assim: private procedure CriaForm(aFormClass: TFormClass); public . . . // Depois do comando uses procedure TF_Mapa.CriaForm(aFormClass: TFormClass); begin with aFormClass.Create(Application) do try ShowModal; finally Free; end; end; e em cada objeto TImage clicarmos no evento OnClick e para cada um colocarmos o seguinte cdigo: (por exemplo para o objeto da Regio Norte) begin CriaForm(TF_Norte); end; Isso tambm funcionaria perfeitamente bem mas como so cinco objetos precisariamos repetir isso cinco vezes (imagine novamente se fossem uns 20 ou 30), mas agora o pior que e sero vrios procedimentos que teremos que olhar caso d algum erro e isso j no to bom assim em Pascal. Ento resolvi fazer da maneira como eu coloquei. Criei um nico procedimento ChamaRegiao que receber uma varivel do tipo TObject (lembra da apostila anterior ? o objeto que chama o procedimento) e para este procedimento coloquei um outro procedimento interno, chamado CriaForm. Para ativar todo o conjunto aperte novamente a tecla F12 (para mostrar o formulrio) e d um clique simples sobre o objeto ImgNorte aperte a tecla F11 (para chamar a Object Inspector), v para a pgina de eventos e para o evento OnClick, selecione atraves do Combo (aquela setinha apontada para baixo) o procedimento ChamaRegiao. Repita os mesmos passos com as outras imagens das outras regies. Este formulrio j est pronto, vamos agora ver o que acontece com cada regio. (Obs. No adianta tentar rodar que ele deve acusar erro que as outras unidades ainda no existem.
Primeira Regio
Apenas para gui-los mostrarei como criar o mapa da Regio Sul (s tem trs estados e no deve me dar muito trabalho :)) voc dever criar os formulrios para as outras regies. Observe que quase tudo igual ao primeiro formulrio criado. A partir do Menu Principal clique em File | New Form e ser disponibilizado um novo formulrio, vamos aos passos: 12. Na Component Pallete localize uma pgina chamada Additional e dentro dessa pgina de um clique no objeto Image (acredito que seja o sexto) e d um clique no Form. (automaticamente o Delphi criou um quadrado quadriculado que representa o objeto Image1). 13. Olhe na Object Inspector e verifique as propriedades do objeto Image1 criado, e altere as seguintes propriedades: 13.1. AutoSize: True (Far com que o tamanho do objeto fique automaticamente do tamanho da figura selecionada) 13.2. Picture: Clique nos "..." e localize o arquivo SUL.BMP enviado (Seleciona determinada figura) 14. V na Object Inspector e localize o objeto Form1 (basta clicar no Combo Box para selecion-lo), e altere as seguintes propriedades: 14.1. BorderStyle: bsDialog (Far com que a janela fique no formato padro de uma janela de mensagens) 14.2. Caption: Estados da Regio Sul (Contedo da tarja do formulrio) 14.3. Name: F_Sul (Nome interno do formulrio) 14.4. Position: poScreenCenter (Far com que o formulrio fique sempre centralizado quando for executado) 15. D uma salvadinha no seu projeto, para tanto, no menu v em File | Save All...: 15.1. Aonde aparece Unit1.pas (o Delphi est se referindo do nome do formulrio) mude para fSul.PAS 16. Na Component Pallete localize uma pgina chamada Standard e dentro dessa pgina localize o objeto Label (acredito que seja o terceiro) clique no objeto e d um clique no Form e altere as seguintes propriedades: 16.1. Font: Clique nos "..." e faa as seguintes altees na janela de Fonts: 6.11. Cor: Castanho 6.12. Estilo: Negrito 16.2. Caption: Clique sobre o Estado a consultar (Contedo que ser mostrado) 17. Na Component Pallete localize uma pgina chamada Additional e dentro dessa pgina localize o objeto Image (acredito que seja o sexto) pressione a tecla SHIFT e clique no objeto (deve ter ficado um quadriculado azul em volta do objeto, como se ficasse marcado) e d cinco cliques no Form - de preferncia um em cada regio, e altere as propriedades Name e Hint de cada um para, respectivamente: Name ImgPR ImgSC ImgRS - Hint - Descreve o estado do Paran - Descreve o estado de Santa Catarina - Descreve o estado do Rio Grande do Sul
18. (Praticando o polimorfismo novamente) Clique no objeto ImgPR segure a tecla SHIFT e clique em ImgSC e ImgRS, altere agora a propriedade ShowHint para True e Cursor para crHandPoint. 19. Quando terminar clique em qualquer regio do formulrio para desmarcar os objetos.
20. Para terminar nosso primeiro formulrio desse projeto v para a Component Pallete localize uma pgina chamada Additional e dentro dessa pgina localize o objeto BitBtn (acredito que seja o primeiro) clique no objeto e d um clique no Form e altere as seguintes propriedades: 20.1. Kind: bkClose, isso fez com que trs importantes propriedades se alterassem: 20.2. Caption: &Fechar (apenas para "aportuguesar"o nosso aplicativo). 21. D uma comparadinha no desenho para ver como ficou:
Agora cabe a voc criar mais quatro formulrios, so eles respectivamente: Nome Interno F_Norte F_Nordeste F_Centro F_Sudeste Nome Externo Figura a usar fNorte NORTE.BMP fNordeste NORDESTE.BMP fCentro CENTRO.BMP fSudesteSUDESTE.BMP
Importante - Chamei de Nome Interno a propriedade Name dos formulrios e Nome Externo como
ser o nome que voc deve salvar cada formulrio. Note que a nica diferena entre eles est num simples apostrofe "_", isso facilita muito quando queremos lembrar o nome que precisamos utilizar.
Importante - Infelizmente com o Delphi no existe outro componente mais poligonal que o tImage,
mas tem uma notcia boa o Delphi respeitar o objeto tImage criado por ltimo, ento voc pode colocar uns sobre os outros. Comigo aqui acabei conseguindo montar com uma exatido fora do normal, at eu me assustei. Uma Dica: Para a regio Centro-Oeste crie primeiro o Objeto do estado de Gois e dentro dele coloque o objeto do estado do Distrito Federal.
exatamente criar os nosso formulrios para utilizarmos e depois destru-los. Mas precisamos dizer para o Delphi que no queremos que ele faa o servio de Auto-Create, para tanto v (a partir do menu principal) em View | Project Manager, esta janelinha a que controla todas as unidades do seu projeto. Clique no boto Options. Selecione a pgina Forms l voc ver dois objetos ListBox, do lado esquerdo so os Auto-Create Forms e do lado direito esto os Available forms ou simplesmente formulrios disponveis. Ento selecione os formulrios: F_Norte, F_Nordeste, F_Centro, F_Sudeste e F_Sul e clique no boto com o sinal > isso far com que eles sejam despachados para o outro lado. No faa o procedimento com o F_Mapa, ele o nosso Menu e ele precisa realmente ser criado automaticamente assim que o usurio iniciar o processo. Prontinho, agora execute o projeto e veja como ele est ficando.
Finalmente
Existem vrias maneiras de se mostrar o estado escolhido mas a que eu achei mais interessante utiliza o QuickReport (que vem com o Delphi) para fazer o servio. Mas faremos isto apenas na prxima apostila.
Prefcio
Salve, na ltima apostila comeamos a montar nosso pequeno mapa eletrnico, agora vamos conclulo. Antes de recomearmos precisamos entender como funciona a conexo entre o Delphi e o Banco de Dados. Isto realizado atravs de um conjunto de bibliotecas que a Inprise chamou de BDE (Borland DataBase Engine) ela trabalha assim como um ODBC de ligao, mas com a grande vantagem que para determinados bancos o acesso totalmente nativo, isso significa que a conversa entre sua Aplicao e o Banco no recebe interferencias externas a no ser do BDE (mas isso at o antigo Clipper precisava de suas ligaes para seus acessos com os bancos xBase). Ilustradamente o acesso funciona da seguinte maneira:
A coisa acontece da seguinte forma, a sua aplicao atravs dos objetos contidos na Component Pallete (localizado na parte superior direita) e na pgina chamada Data Access esto todos os objetos que fazem esta primeira conexo entre o Aplicativo e o BDE e este se comunica com o Banco de Dados.
Importante - Note que eu no especifiquei qual o Banco de Dados, ento salvaguardando algumas
regras do prprio banco (tais como o nome das tabelas, formas de SQL) poderemos utilizar para nossa aplicao qualquer banco que acharmos mais fcil de manipularmos (tais como dBase, Access, Paradox...) e ao final (antes de entregar a aplicao para o usurio) fazermos um ltimo teste com o banco de dados escolhido por ele (Oracle, SQL Server, Interbase, Sybase...) para isso no precisaremos modificar uma nica linha de cdigo do nosso aplicativo.
Importante - A conexo com o MS-Access funciona da seguinte forma: Entre o BDE e o Banco de
Dados existe um aplicativo a mais de conexo, chamado DAO, a sigla significa Data Access Objects, um conjunto de bibliotecas para o desenvolvimento com o banco de dados MS-Access, e pertence a Microsoft, para ter o direito de uso e distribuio do produto voc deve adquirir quaisquer das ferramentas de desenvolvimento da Microsoft.
Iniciando na Prtica
Bem se voc ainda no fez, aconselho que voc d uma olhada no apndice identificado por CONEXAO e faa as alteraes sugeridas nele. Junto com essa apostila voc est recebendo um banco de dados (formato MS-Access 97). Para padronizar vamos criar uma pasta com o nome CursoDelphi e dentro dela criaremos uma nova pasta chamada Federao coloque dentro desta tudo que voc recebeu. Graficamente ento temos:
Abra agora o aplicativo BDE Administrator e crie um Alias para o banco de dados enviado. Se voc no sabe como fazer vou dar uma canja siga os passos abaixo: 1. A partir do BDE Administrator aberto v em Object | New... (ou simplesmente CTRL+N) e modifique a janelinha que aparece para:
e pressione a tecla OK. 2. Mude o nome do seu novo alias para AlFedera
Importante - Apesar de ser permitido no coloque acentos no seu Alias e procure no ultrapassar os
oito caracteres isso alm de manter a compatibilidade entre o Delphi 32 Bits e o Delphi 16 Bits tambm evita uma srie de confuses. 3. Altere a propriedade DATABASE NAME para C:\CursoDelphi\Federao\basico.mdb e confirme as alteraes em Object | Apply (ou simplesmente CTRL+A, ou ainda clique no quarto boto da barra de ferramentas) 4. Teste seu novo alias clicando em Object | Open (ou simplesmente clique no primeiro boto da barra de ferramentas) seu alias deve formar um quadradinho luminoso em volta do objeto, conforme a figura a seguir: 5. Feche-o em em Object | Close (ou simplesmente clique novamente no primeiro boto da barra de ferramentas) Se voc est confuso com tudo isso no fique retorne aquela figura inicial sobre a conexo, pode-se dizer que estamos exatamente criando o quadradinho do BDE. O Alias simplesmente uma conexo que se far entre seu Aplicativo e o Banco de Dados
AliasName para AlFedera (aquele que foi criado na apostila anterior) DataBaseName para dnFedera (nome da base de dados) Name para nmFedera Este objeto o que far a segunda conexo com o nosso banco de dados, para lembrar a vocs: 1a. Conexo: Entre o Banco de Dados e o Alias 2a. Conexo: Entre o Alias e o objeto tDataBase 3a. Conexo: Entre o objeto tDataBase e os objetos DB (tTable, tQuery, tStoreProc) 4a. Conexo: Entre os objetos DB com os objetos que o usurio utilizar (todos os que esto na pgina DataControls e alguns outros). Se voc quer simular como ser essa segunda conexo, altere a propriedade Connected do objeto para true e ser mostrada a seguinte janela:
Clique no botao Ok e prontinho seu banco estar conectado, mas vamos evitar que essa janelinha aparea quando o usurio for usar nosso aplicativo, antes volte a propriedade Connected do objeto para false, na pgina de eventos de um duplo clique no evento OnLogin e vamos as alteraes: procedure TF_Mapa.nmFederaLogin(Database: TDatabase; LoginParams: TStrings); begin LoginParams.Values['USER NAME'] := ''; LoginParams.Values['PASSWORD'] := ''; end; Agora precisamos simular as alteraes de Conexo para tanto, chame o objeto F_Mapa, e d um duplo clique no evento OnShow para abrirmos esta conexo: procedure TF_Mapa.FormShow(Sender: TObject); begin nmFedera.Connected := True; end; Para fechar a conexo quando terminar nosso sistema. d um duplo clique no evento OnClose: procedure TF_Mapa.FormClose(Sender: TObject; var Action: TCloseAction); begin nmFedera.Connected := False; end;
sistema esse disparar o evento OnShow do formulrio e este disparar o evento OnLogin do objeto TDataBase.
sim um nico que servir para qualquer regio que o nosso usurio clicar. Vamos aos passos: 1. A partir do Menu Principal clique em File | New Form e ser disponibilizado um novo formulrio e altere logo a propriedade name para F_Estado. 2. D logo uma salvadinha no seu projeto, para tanto, no menu v em File | Save All...: 2.1. Aonde aparece Unit1.pas (o Delphi est se referindo do nome do formulrio) mude para fEstado.PAS 3. Na Component Pallete ache uma pgina entitulada QReport nela esto todos os objetos utilizados pelo Quick, localize o objeto chamado QuickRep, clique nele e em seguida click no formulrio.
Importante - Foi criado nesse momento nossa rea de trabalho, o Quick 1.0 (distribudo com o Delphi
2.0) no criava esta rea branca que vc est vendo, ele se resumia a apenas alargar as propores do formulrio (propriedade Width e Height) para o tamanho de uma pgina da impressora. 4. Vamos para a Object Inspector e altere a propriedade Name para QrEstado
Importante - Qualquer gerador de relatrio trabalha por sees, pois nossos (e qualquer) relatrios tem
essas sees, so elas: Cabealho, Ttulo da Pgina, Rodap da Pgina, Pgina Inicial, ltima Pgina, Linhas Detalhes, e assim vai, vamos criar essas sees, o Quick as chama de Bandas. 5. Na Component Pallete na pgina QReport, localize o objeto chamado QrBand, clique nele e em seguida click dentro do objeto do QrEstado criado anteriormente. 6. Vamos para a Object Inspector e altere as seguintes propriedades: 6.1. Name para BdCabPagina 6.2. BandType para rbPageHeader - Essa a propriedade que controla os tipos das sees no caso escolhemos uma Banda de Cabealho de Pgina, ela aparecer em todas as pginas. Dentro do Quick devemos usar os objetos do Quick (isso parece bvio mas muita gente esquece disso) o correspondente ao objeto Label do Delphi que mostra um texto fixo no Quick o QrLabel. 7. Na Component Pallete na pgina QReport, localize o objeto chamado QrLabel, clique nele e em seguida click dentro do objeto da objeto BdCabPagina criado anteriormente . 8. Vamos para a Object Inspector e altere as seguintes propriedades: 8.1. Name para lbTitulo 8.2. Alignment para taCenter (alinhamento centralizado) 8.3. AlignToBand para True - Isso far com o que foi definido na propriedade Alignment seja estendido para a banda (Ento o QrLabel se alinhar centralizado dentro da banda) 8.4. Font: Clique nos "..." e faa as seguintes altees na janela de Fonts:
8.41. Cor: Azul-Marinho 8.42. Estilo: Negrito 8.43. Tamanho: 16 8.44. Fonte: Times New Roman 8.5. Caption para Estado do Brasil 9. Na Component Pallete na pgina QReport, localize o objeto chamado QrBand, clique nele e em seguida click dentro do objeto do QrEstado (no dentro daquela primeira banda criada). 10. Vamos para a Object Inspector e altere as seguintes propriedades: 10.1. Name para BdDetalhe 10.2. BandType para rbDetail - Essa a propriedade que controla os tipos das sees no caso escolhemos uma Banda de Detalhe, ela ser replicada a cada registro e d uma esticadinha para baixo nela, aumentando o tamanho (ou a propriedade Height) 11. Agora eu vou precisar dentro desta banda de seis (6) objetos QrLabel ( s apertar o objeto enquanto voc segura a tecla SHIFT - O objeto vai ficar com a marcao azul e d seis click's) dentro do objeto BdDetalhe, agora altere a propriedade Caption de cada um respectivamente: Sigla: Nome: Capital: Nm.Municpio: Regio: Descrio: 12. Agora marque todos os seis objetos (lembra-se) e aproveitando o Polimorfismo altere a propriedade Font, clique nos "..." e faa as seguintes altees na janela de Fonts: 12.1. Cor: Castanho 12.2. Estilo: Negrito 12.3. Fonte: Times New Roman 13. Continue com os objetos marcados e a partir do menu principal v em View | Alignment Palette ser mostrada a seguinte janela:
Clique ento no ltimo boto da primeira linha. Todos eles sero organizados direita.
Importante - Vamos a uma rapidinha sobre os alinhamentos, isso s serve para dois ou mais objetos
marcados: Primeira Linha: esquerda, centraliza verticalmente, tamanho vertical, espaamento vertical e direita. Segunda Linha: Superior, centraliza horizontalmente, tamanho horizontal, espaamento horizontal e inferior 14. Faremos agora a 3a. Conexo. Vamos para a pgina Data Access e localize o objeto Query. Click nele e clique dentro do formulrio e altere as seguinte propriedades: 14.1. DataBaseName para dnFedera (isto s aparecer se o formulrio F_Mapa estiver aberto) 14.2. SQL, clique nos "..." e faa escreva:
select * from Federacao
Importante - Se voc no conhece SQL (Structure Query Language) aconselho que voc compre um
bom livro, ou veja a apostila referente aos comandos bsicos. 15. Est a 4a. Conexo. Voltemos para a pgina QReport e localize o objeto QrDBText, precisaremos de seis (6) objetos dentro do objeto BdDetalhe 16. Agora marque todos os seis objetos e aproveitando o Polimorfismo altere as seguintes propriedades: 16.1. Font, clique nos "..." e faa as seguintes altees na janela de Fonts: 16.11. Cor: Azul 16.13. Fonte: Times New Roman 16.2. DataSet para QryEstado 17. Marque agora cada objeto e altere a propriedade DataField de cada um respectivamente: SIG_UF NOM_ESTADO NOM_CAPITAL NUM_MUNICIPIO NOM_REGIAO DES_REGIAO 18. Uma das principais facilidades do Quick quanto a campos Memo (como o caso do campo DES_REGIAO) altere as seguintes propriedades (do objeto QRDBText6 - marcado com a propriedade DataField em DES_REGIAO) 18.1. AutoSize para False (cancela o esticamento automatico horizontal) 18.2. AutoStretch para True (permite que o objeto se estique verticalmente) 18.3. WordWrap para True (s para confirmar - permite que o objeto quebre as linhas) 19. Agora estique esse objeto at o final, acredito que a propriedade Width deve ficar em torno de 625 20. Vamos conectar o objeto QrEstado (TQuickRep) com o objeto QryEstado (TQuery), para tanto localize o objeto QrEstado e altere a propriedade DataSet para QryEstado. Est pronto, compare como ficou:
Importante - Uma enorme vantagem do Quick voc poder ver como fica seu relatrio final mesmo
sem precisar rodar o sistema, para tanto faa o seguinte: 1. No objeto QryEstado altere a propriedade Active para True. 2. Clique no objeto QrEstado e em seguida clique com o boto direito e ser mostrado um menu e dentro dele clique em Preview. 3. Novamente no objeto QryEstado altere a propriedade Active para False.
// Mostra o Estado
procedure TF_Sul.MostraEstado(Sender: TObject); procedure Mostra(Estado: String); begin F_Estado := TF_Estado.Create(Application); with F_Estado do begin with QryEstado do begin SQL.Clear; SQL.Add('SELECT * FROM FEDERACAO WHERE (SIG_UF = ''' + Estado + ''')'); // Ateno tudo aspas simples Open; end; QrEstado.Preview; QryEstado.Close; Free; end; end; begin if (Sender = ImgPR) then Mostra('PR') else if (Sender = ImgSC) then Mostra('SC') else if (Sender = ImgRS) then Mostra('RS'); end; end. Prontinho veja que o procedimento que eu constru aqui igualzinho ao do F_Mapa, bvio salvo alguns comandos. Criei um nico procedimento MostraEstado que receber uma varivel do tipo TObject e para este procedimento coloquei um outro procedimento interno, chamado Mostra que realizar os seguintes passos: 1. Criao do Formulrio F_Estado; 2. Organizao do SQL para o estado selecionado criando a Query; 3. Mostra na tela do relatrio (note que no preciso do comando SHOWMODAL do formulrio, e sim PREVIEW do objeto QuickRep); 4. Fecha a Query; e 5. Eliminao do F_Estado da memria. Para ativar todo o conjunto aperte novamente a tecla F12 (para mostrar o formulrio) e d um clique simples sobre o objeto ImgPR aperte a tecla F11 (para chamar a Object Inspector), v para a pgina de eventos e para o evento OnClick, selecione atraves do Combo (aquela setinha apontada para baixo) o procedimento MostraEstado. Repita os mesmos passos com as outras imagens dos outros estados.
Estado + ''')'); esses trs plicks ( ''' ) tudo simples, nenhum aspas duplas ( " ). Pois dentro de uma string cada dois plicks simples ( '' ) conseguimos um plicks ( ' ), confuso n, mas veja s, se fizermos: VariavelString := 'Nome : Nando'; A VariavelString ter em seu contedo o valor Nome : Nando, agora se fizermos: VariavelString := 'Nome : ''Nando'''; A VariavelString ter em seu contedo o valor Nome : 'Nando'. Eu apenas acrescentei mais dois plicks simples entre a palavra Nando.
Finalmente
Agora precisamos arrumar, empacotar e distribuir nosso projeto, mas isto s ser feito na prxima apostila.
Arquivos trabalhados juntos com esta apostila: GEOGRAPH.ICO SETUP1.BMP SETUP2.BMP SETUP3.BMP SPLASH.BMP LOGO.BMP
Prefcio
Salve, na ltima apostila montamos nosso segundo aplicativo o Mapa Eletrnico, o interessante com ele que calmamente comeamos a desvendar os segredos do trabalho com o Delphi associado a Bancos de Dados, repararam como a maior parte dos livros evita em falar sobre o assunto ? O mximo com um aplicativo que arranha a superfcie deste fantstico mundo. O problema que o assunto muito mais do que se pode imaginar, pois o Delphi tem milhares de possibilidades para realizar esta tarefa. O maior problema com o Delphi (depois de entend-lo) como distribuir seus aplicativos gerados, quando ele independente de tratamento de banco de dados, tudo bem s mandar o executvel (.EXE) mas o problema comea quando ele utiliza o BDE, a a coisa complica um pouco, mas acredito que aps essa parte voc comear a dominar uma importante ferramenta de distribuio para seus aplicativos.
No Delphi 1.0 para distribuir o BDE era uma complicao, existia um diretrio no CD do Delphi chamado REDIST, nele estava (dividido para caber em disquetes de 1.44 Mb) o BDE. Ou seja, voc se deslocava at a mquina do seu Cliente (que iria instalar o sistema) criava um diretrio, colocava o executvel, as tabelas, e instalava o BDE, depois criava o alias, testava e pronto estava instalado. Com um certo tempo as pessoas aprenderam a gerar o Alias automtico. Mas ainda assim era um tanto primitivo, principalmente quando voc precisava mandar tudo para que o prprio cliente instalasse. Com o Delphi 2.0 surgiu o InstallShield que foi mais aprimorado ainda nessa verso, ele um produto da Stirling Technologies. Que acompanha tambm o Delphi 3.0 e o Delphi 4.0. Um aviso, no tente utilizar o InstallShield que vem com o Delphi 2.0 para aplicaes do Delphi 3.0 ou 4.0, nem vice-versa, apesar de todos serem de 32 Bits so de verses totalmente diferentes. O InstallShield no que nem o Quick Report, voc precisa instal-lo em separado (ele vem no prprio CD do Delphi), aps sua instalao e execuo, voc acabar com a seguinte janela:
Esta a tela inicial para a criao do seu projeto .IWZ, informe o nome do projeto, o tipo (no caso de verses registradas) e o diretrio que ser criado, aps isso aperte o boto Create e iremos para a janela de construo do projeto:
Esta tela foi dividida em nove grandes grupos, para explicar melhor vamos analizar grupo a grupo enquanto fazemos as alteraes para a gerao do nosso pacote.
Importante - Assim como o Logo.BMP voc notar que no decorrer dessa montagem colocaremos
vrios Bitmap's, voc mesmo poder ger-los mas lembre-se que o InstallShield aceita apenas imagens com no mximo 16 cores.
Na primeira parte (General) so as informaes principais, marque o BDE, (Observao: O SQL Links, serve apenas para conexo com bancos do tipo MS-SQL, SyBase padro DB-Lib, InterBase, Oracle, Informix, DB2 e SyBase padro CT-Lib e os pacotes de objetos servem apenas para o caso de compilaes parciais), clique no boto Settings... BDE Instalation Type - Aqui voc define seu tipo de banco de dados, infelizmente o Install no possui permisso para a distribuio da DAO 3.5, que a responsvel pela conexo nativa com o MS-Access, ista permisso adquirida apenas com a compra de qualquer ferramenta de desenvolvimento Microsoft, teremos ento que colocar na mo todos os arquivos necessrios, marque Partial BDE Installation e clique no boto Avanar. BDE Driver Types - no escolha nenhum, deixe todos desmarcados. Query Engine Types - Marque a opo SQL Engine isto far com que o BDE reconhea e envie para o gerenciados de banco de dados os comandos de SQL e clique no boto Avanar. BDE Alias - Step 1 of 4 - Clique no boto New e informe o nome do nosso Alias (AlFedera) BDE Alias - Step 2 of 4 - Esta e a tela mais enigmtica do Install, nela voc deve informar se quer que seu BDE seja configurado para aplicaes Win16/Win32 ou somente Win32, mas aqui ele no se refere a possibilidade de instalao para Windows 3.x ele apenas est se referindo ao .CFG salvo (que o arquivo de configurao do BDE 32, ento deixe desmarcado e sigamos em frente. BDE Alias - Step 3 of 4 - Aqui est todo o pulo do gato sobre a construo do BDE, em Alias Name ele mostrar o Nome do seu alias, em Path o local que seu banco dever ser instalado, agora vamos pensar um pouquinho, mas se o usurio mudar o destino ? Aqui usaremos uma varivel do Install, coloque: [Program Files]\ que ser o diretrio em que ficar sua aplicao. No Type selecione MSAccess. E finalmente escreva na lista de parmetros opcionais para o Alias o seguinte: DATABASE NAME=[Program Files]\Basico.mdb BDE Alias - Step 4of 4 - Aqui voc precisa apenas clicar no boto Concluir para finalizar todas as incluses no BDE. Na segunda parte (Advanced) voc ver todas as bibliotecas que sero instaladas, apenas clique no boto OK e vamos em frente.
Com o auxlio do boto Insert Files arraste os seguintes arquivos para esta pasta: C:\Windows\System\MSJTER35.DLL C:\Windows\System\MSJINT35.DLL C:\Windows\System\MSVCRT40.DLL C:\Windows\System\MSJET35.DLL C:\Windows\System\VBAJET32.DLL C:\Windows\System\VBAR332.DLL C:\Windows\System\OLEAUT32.DLL C:\Windows\System\STDOLE2.TLB C:\Windows\System\ODBCJT32.DLL C:\Windows\System\ODBCJI32.DLL C:\Windows\System\ODBCTL32.DLL C:\Windows\System\MSJT3032.DLL C:\Windows\System\MSJINT32.DLL C:\Windows\System\VEN2232.OLB C:\Windows\System\MSVCRT20.DLL C:\Windows\System\MSWNG300.DLL C:\Windows\System\MSRD2X32.DLL C:\Windows\System\VBDB32.DLL C:\Windows\System\MFC40.DLL C:\Windows\System\ODBC32.DLL C:\Windows\System\ODBCINT.DLL C:\Windows\System\MSRD2X35.DLL C:\Windows\System\MSREPL35.DLL Group Name: DAO Destination Directory: <CommonFilesDir>\Microsoft Shared\DAO Com o auxlio do boto Launch Explorer arraste os seguintes arquivos para esta pasta: C:\Arquivos de Programas\Arquivos comuns\Microsoft Shared\DAO\DAO350.DLL C:\Arquivos de Programas\Arquivos comuns\Microsoft Shared\DAO\DAO2535.TLB C:\Arquivos de Programas\Arquivos comuns\Microsoft Shared\DAO\DAO2532.TLB C:\Arquivos de Programas\Arquivos comuns\Microsoft Shared\DAO\DAO3032.DLL Group Name: VBFiles Destination Directory: <WINSYSDIR> Com o auxlio do boto Launch Explorer arraste os seguintes arquivos para esta pasta: C:\Windows\System\OLEPRO32.DLL C:\Windows\System\CTL3D32.DLL C:\Windows\System\VBAR2232.DLL As prximas partes (Components e Setup Types) so utilizadas quando voc estiver trabalhando com uma aplicao muito grande aonde existe a diviso em vrias partes, voc poder dar tambm a chance do seu cliente instalar apenas determinadas partes que o interesse.
User Information - Aqui so informaes do nosso cliente: seu nome, nome da empresa e o nmero de registro do nosso software. Para o nosso caso deixe a opo desmarcada. Choose Destination Location - Aqui aonde nosso cliente poder escolher qual o drive e a pasta que o sistema ser instalado. (para o nosso caso ela ser colocada em C:\Arquivo de Programas\Curso\Mapa). Como acertamos no BDE podemos deix-la marcada para que o nosso cliente decida. Setup Type - Em casos de sistemas muito grandes aqui que o cliente decidir qual o modo que ele quer que seja instalado o sistema. Tudo, Compacto ou Customizado. Para o nosso caso deixe a opo desmarcada. Custom Setup - Esta uma subdiviso da parte anterior aonde o cliente escolher (a partir da opo Customizado da janela anterior, qual a parte que ele quer que seja instalada. Para o nosso caso deixe a opo desmarcada. Select Program Folder - Aqui aparecer uma janela que permitir alterar o nome do grupo que ser criado no Windows para colocar nossos cones do projeto. Para o nosso caso deixe a opo marcada. Start Copying Files - aqui que o cliente v todas as opes que ele escolheu anteriormente, podendo voltar atrs e modificar algo antes da instalao propriamente dita. Para o nosso caso deixe a opo marcada. Progress Indicator - Uma barra que acompanhar o processo de instalao mostrando ao cliente o quanto falta (em percentual) para a concluso da instalao. Para o nosso caso deixe a opo marcada. Billboards - So cartazes que fazem a propaganda do nosso software ou de outros que produzimos, aqui possvel colocar um para cada mdia instalada, basta apenas nome-los em SETUP1.BMP, SETUP2.BMP e assim sucessivamente dependendo do nmero de discos que produzimos. V para a pgina Settings e localize o diretrio dos bitmaps enviados (SETUP1.BMP, SETUP2.BMP e SETUP3.BMP). Para o nosso caso deixe a opo marcada. Online Registration - Muitas empresas processam o registros dos softwares de forma automtica, bastando para isso que o cliente possua um Modem, para tanto na pgina Settings identifique o nmero identificador do sistema e o nmero do telefone ou ento desmarque a opo. Setup Complete - Este o ltimo passo do processo, aqui voc pode escolher se o cliente deve dar um Reboot na mquina (que aconselhvel), ou mostrar um arquivo Leiame final, bastando para isso alterar na pgina Settings, mas de qualquer forma deixe esta opo marcada. Clique no boto OK para finalizar
Deixe marcada a ltima chave INIT e clique na pgina Registry - Values e clique no boto Add Values e proceda as seguintes alteraes:
Pronto, clique no boto OK. Agora crie a seguinte Chave na pgina Registry - Keys: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\DAO Crie o seguinte Valor para esta chave na pgina Registry - Values: Value Type: String Value Name: Path Value Data: <CommonFilesDir>\Microsoft Shared\DAO\Dao3032.dll Crie a seguinte Chave na pgina Registry - Keys: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\DAO35 Crie o seguinte Valor para esta chave na pgina Registry - Values: Value Type: String Value Name: Path Value Data: <CommonFilesDir>\Microsoft Shared\DAO\DAO350.DLL
Importante - Para o aplicativo iniciar assim que o Windows iniciar na pgina Advanced, existe uma
caixinha para marcar que est escrito: Place Icon and Start Programs Menu.
Importante - No se assuste com o nmero de disquetes (1.44Mb) normalmente apenas o BDE ocupa
2,5 disquetes ento comum sistemas darem de 3 ou superior. Contando que o DAO normalmente ocupa 3 Disquetes ou mais, calcule que seu sistema caber em simples 7 disquetes.
Importante - Se voc instalar o sistema a partir da rede escolha a opo CD-Rom pois a ser uma
nica mdia.
Importante - Gere seu pacote em disquetes de 1.44Mb e copie para os disquetes para proceder a
instalao assim voc poder acompanhar a mudana das telas a cada disquete solicitado.
Importante - No se esquea que depois, para remov-lo, voc precisa ir em Painel de Controle |
Adicionar ou Remover Programas para que o Install proceda a retirada das entradas nas reas de registro do Windows.
Finalmente
Agora voc j pode mandar todo o seu projeto para aquele cliente especial, basta apenas embal-lo e despachar com as famosas instrues:
Como Instalar
O Mapa Eletrnico s pode ser consultado depois de instalado no seu Microcomputador, sob o ambiente Windows 95 ou superior. Para realizar a instalao siga essas instrues: 1. Ligue o Microcomputador ativando o Windows 2. Introduza o disquete marcado como INICIAL na unidade de leitura 3. Clique no boto INICIAR e escolha a opo EXECUTAR 4. Digite ento A:\SETUP (ou no lugar do A, a letra equivalente ao drive da sua unidade de leitura do disquete). 5. Click sobre o boto OK e execute as instrues do Instalador. Acredito que seu usurio no errar esses 5 passos. Um abrao e at a prxima.