projecto: curso de e-learning sobre delphi 5paf/proj/set2003/delphi5.pdf · lectivo do curso de...

105
Projecto: Curso de e-learning sobre Delphi 5 Ana Azevedo Setembro de 2003

Upload: lethien

Post on 20-Sep-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

PPrroojjeeccttoo:: CCuurrssoo ddee ee--lleeaarrnniinngg ssoobbrree DDeellpphhii 55

Ana Azevedo Setembro de 2003

Page 2: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

Page 3: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Realizado por: Ana Rodrigues Azevedo

980301

Orientador: Eng. Carlos Vaz de Carvalho

Data de realização:

Setembro 2003

Page 4: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

Page 5: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

II.. ÍÍnnddiiccee GGeerraall

I. Índice Geral .........................................................................I II. Índice Figuras ..................................................................... V III. Normas e conceitos utilizados ...........................................VII 1. Introdução.......................................................................... 1

1.1. O projecto..................................................................... 1 1.2. O curso......................................................................... 1

2. E-learning .......................................................................... 3

2.1. Porquê e-learning? ......................................................... 3 2.2. Vantagens..................................................................... 3 2.3. Desvantagens................................................................ 4

3. Introdução ao Delphi I.......................................................... 5

3.1. Informações gerais......................................................... 5 3.1.1. Informações úteis disponíveis na Internet ....................... 5 3.2. Um pouco sobre o Delphi e sua linguagem......................... 6 3.3. O ambiente ................................................................... 7 3.4. Os Itens...................................................................... 12 3.5. Arquivos/extensões geradas pelo Delphi.......................... 13 3.6. O que são sistemas orientados a objectos e eventos ......... 13 3.7. Como criar objectos...................................................... 14 3.8. Propriedades dos objectos ............................................. 15 3.9. Métodos dos objectos ................................................... 16 3.10. Eventos dos objectos ................................................. 17 3.11. O depurador de erros................................................. 18 3.11.1. Como utilizar ............................................................ 19 3.11.2. Alternativas de depuração .......................................... 20 3.12. Resumo ................................................................... 21 3.13. Exemplos ................................................................. 21 3.14. Exercícios................................................................. 22

4. Introdução ao Delphi II ...................................................... 25

4.1. Estrutura de uma Unit................................................... 25 4.2. Variáveis..................................................................... 26 4.3. Directivas.................................................................... 27 4.3.1. Directivas Switch....................................................... 27 4.3.2. Directivas de Parâmetro ............................................. 28

I

Page 6: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

4.3.3. Directivas Condicionais............................................... 28 4.4. Estruturas Condicionais................................................. 29 4.4.1. Instrução If-Then-Else ............................................... 29 4.4.2. Instrução Case.......................................................... 30 4.5. Estruturas de Ciclo ....................................................... 30 4.5.1. Estrutura For ............................................................ 31 4.5.2. Estrutura While ......................................................... 32 4.5.3. Estrutura Repeat/Until ............................................... 32 4.6. Operadores Lógicos ...................................................... 33 4.7. Trabalhando com Vectores ............................................ 33 4.8. Caracteres de formatação do EditMask ............................ 34 4.9. Comentários................................................................ 35 4.10. Funções e procedimentos ........................................... 36 4.10.1. Funções ................................................................... 36 4.10.2. Procedimentos .......................................................... 37 4.11. Trabalhando com menus ............................................ 37 4.12. Resumo ................................................................... 41 4.13. Exemplos ................................................................. 41 4.14. Exercícios................................................................. 42

5. Trabalhando com ficheiros .................................................. 45

5.1. Ficheiros ..................................................................... 45 5.2. Estruturas relacionadas................................................. 45 5.3. Funções e Procedimentos para manuseamento de ficheiros 45 5.4. Rotinas de I/O ............................................................. 46 5.5. Rotinas para ficheiros de texto ....................................... 47 5.6. Rotinas para tratamento de strings................................. 48 5.7. FTP ............................................................................ 49 5.8. Propriedades ............................................................... 49 5.9. Métodos...................................................................... 50 5.10. Eventos ................................................................... 51 5.11. Notas....................................................................... 52 5.12. Resumo ................................................................... 53 5.13. Exemplos ................................................................. 53 5.14. Exercicios................................................................. 54

6. Trabalhando com Base de Dados ......................................... 57

6.1. Conceitos de Base de Dados .......................................... 57 6.2. Borland Database Engine (BDE) ..................................... 58 6.3. O Database Desktop..................................................... 59 6.4. DataAccess e seus componentes .................................... 62 6.5. Propriedades dos componentes ...................................... 63 6.5.1. Database ................................................................. 63 6.5.2. DataSource .............................................................. 63 6.5.3. Query ...................................................................... 64 6.5.4. StoredProcedure ....................................................... 64 6.5.5. Table ....................................................................... 65 6.6. Métodos dos componentes............................................. 65

Page 7: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

6.6.1. Database ................................................................. 65 6.6.2. DataSource .............................................................. 66 6.6.3. Query ...................................................................... 66 6.6.4. StoredProcedure ....................................................... 66 6.6.5. Query, StoredProcedure e Table .................................. 66 6.7. Eventos dos componentes ............................................. 67 6.7.1. Database ................................................................. 67 6.7.2. DataSource .............................................................. 67 6.7.3. Query, StoredProcedure e Table .................................. 68 6.8. DataControls e seus componentes .................................. 68 6.9. Propriedades dos componentes ...................................... 69 6.9.1. DBCheckBox ............................................................. 69 6.9.2. DBComboBox............................................................ 69 6.9.3. DBEdit ..................................................................... 70 6.9.4. DBGrid..................................................................... 70 6.9.5. DBNavigator ............................................................. 71 6.9.6. DBText .................................................................... 71 6.10. Métodos dos componentes.......................................... 71 6.10.1. DBComboBox............................................................ 71 6.10.2. DBEdit ..................................................................... 71 6.10.3. DBGrid..................................................................... 72 6.11. Eventos dos componentes .......................................... 72 6.11.1. DBComboBox............................................................ 72 6.11.2. DBEdit ..................................................................... 72 6.11.3. DBGrid..................................................................... 72 6.11.4. DBNavigator ............................................................. 73 6.12. Resumo ................................................................... 73 6.13. Exemplos ................................................................. 73 6.14. Exercícios................................................................. 75

7. Anexos............................................................................. 77

7.1. Como criar uma ligação ODBC para a base de dados fornecida............................................................................. 78 7.2. Resolução dos exemplos ............................................... 82 7.2.1. Capítulo 3 ................................................................ 82 7.2.2. Capítulo 4 ................................................................ 84 7.2.3. Capítulo 5 ................................................................ 87 7.2.4. Capítulo 6 ................................................................ 89

III

Page 8: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

IV

Page 9: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

IIII.. ÍÍnnddiiccee FFiigguurraass

Fig. 3.1: Barra de Ferramentas ................................................... 7 Fig. 3.2: Janela de Propriedades.................................................. 9 Fig. 3.3: Janela de Formulário..................................................... 9 Fig. 3.4: Janela de Área de Código ............................................ 10 Fig. 3.5: Objectos ................................................................... 11 Fig. 3.6: Botão Play ................................................................. 11 Fig. 3.7: Janela de Itens .......................................................... 12 Fig. 3.8: Propriedades do objecto Button .................................... 16 Fig. 3.9: Métodos possíveis do objecto Button ............................. 17 Fig. 3.10: Eventos do objecto Button ......................................... 18 Fig. 3.11: BreakPoints ............................................................. 19 Fig. 3.12: Conteúdo de variáveis ............................................... 20 Fig. 4.1: Declaração de variáveis............................................... 27 Fig. 4.2: Caixa de diálogo de criação de menu............................. 38 Fig. 4.3: Caixa de diálogo de criação de menu – cont. .................. 39 Fig. 4.4: Caixa de diálogo de criação de menu – cont. .................. 39 Fig. 4.5: Caixa de diálogo de criação de menu – cont. .................. 40 Fig. 4.6: Caixa de diálogo de criação de menu – cont. .................. 40 Fig. 6.1: DB Desktop ............................................................... 60 Fig. 6.2: Janela “Alias Manager” ................................................ 60 Fig. 6.3: Janela "Alias Manager" ................................................ 62 Fig. 6.4: Janela "Alias Manager" – cont. ..................................... 62 Fig. 7.1: Ferramentas Administrativas........................................ 78 Fig. 7.2: Administrador de origem de dados de ODBC .................. 79 Fig. 7.3: Criar nova origem de dados ......................................... 79 Fig. 7.4: Configuração de ODBC para Microsoft Access ................. 80 Fig. 7.5: Administrador de origem de dados de ODBC .................. 81 Fig. 7.6: Janela de edição de colunas ......................................... 91

V

Page 10: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

VI

Page 11: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

IIIIII.. NNoorrmmaass ee ccoonncceeiittooss uuttiilliizzaaddooss

• Todos os exercícios possuem sequência numérica crescente.

• Os nomes das teclas utilizadas no exercício estão escritos em

letras MAIUSCULAS.

• As opções de menu, os comandos, os botões, as funções, os

nomes das janelas e das caixas de diálogo e de verificação

estão em itálico nas descrições de exercícios prácticos.

• Os carecteres ou comandos que o aluno deve digitar

encontram-se em negrito.

• Toda a vez que aparecer o sinal de adição (+) entre dois nomes

de teclas, o aluno deverá pressionar estas teclas ao mesmo

tempo. Por exemplo, “Pressione as teclas ALT+TAB” significa

que o aluno deverá manter pressionada a tecla ALT enquanto

pressiona a tecla TAB.

• “clique” ou “clicar” significa posicionar o ponteiro do rato em

um objecto e pressionar e libertar rapidamente o botão

esquerdo do rato.

• “Arrastar” significa posicionar o ponteiro do rato em um objecto

e pressionar e manter pressionado o botão esquerdo do rato

enquanto movimenta o ponteiro do rato até ao local desejado.

• “duplo clique” significa pressionar e libertar o botão esquerdo

do rato, rápida e sucessivamente.

VII

Page 12: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

VIII

Page 13: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

11.. IInnttrroodduuççããoo

1.1. O projecto

A frequência do 2º semestre em regime diurno, do 5º ano

lectivo do curso de Engenharia Informática ministrado pelo Instituto

Superior de Engenharia do Porto, engloba várias disciplinas

curriculares, sendo uma delas a disciplina de Projecto.

Nesta disciplina o aluno deve escolher uma das opções

indicadas pelo Instituto ou sugerir uma escolha que é sujeita,

posteriormente, a uma avaliação por parte dos responsáveis pela

disciplina. Após a aprovação, inicia-se o Projecto escolhido.

Neste caso particular, escolhi um projecto cujo objectivo é a

elaboração de um curso de e-learning sobre Delphi. A escolha recaiu

sobre Delphi porque esta é uma linguagem de fácil aprendizagem,

mas bastante completa.

1.2. O curso

O curso será vocacionado para pessoas sem experiência em

linguagens de programação orientadas a objecto, mas com alguns

conhecimentos base de programação.

Terá como objectivo a criação de uma aplicação funcional

gráfica (sobre cd’s, dvd’s, etc.) que trabalhe com ficheiros e base de

dados.

Cada capítulo terá uma componente teórica acompanhada com

exemplos ilustrativos de cada parte da matéria dada.

No final de cada capítulo, haverá 3 sub-capítulos importantes:

1

Page 14: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

• Resumo – onde serão relembrados os aspectos mais

importantes da matéria dada ao longo do capítulo;

• Exemplos – onde serão colocados problemas iniciais, com a sua

resolução apresentada em formato texto (em 7 Anexos) e em

formato digital (é fornecido por cada capitulo um projecto em

Delphi). Os exemplos visam os aspectos mais importantes da

matéria dada ao longo do capítulo. A resolução apresentada

funcionará apenas como um guia, visto poder existir mais do

que uma solução para o mesmo problema.

• Exercícios – onde serão fornecidos mais problemas (mas não as

suas resoluções).

Os exercícios terão com objectivo elaborar a aplicação idealizada,

com o propósito do aluno conseguir completar sozinho partes

funcionais da aplicação.

2

Page 15: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

22.. EE--lleeaarrnniinngg

2.1. Porquê e-learning?

O conhecimento à distância já existe há alguns anos. Desde

cursos por correspondência ou mesmo a Tele-Educação, chegamos

agora à era da Internet.

Para quem precisa/gosta de adquirir conhecimentos e não o

pode fazer porque ou não tem a disponibilidade temporal ou física

para o fazer, ou porque simplesmente se sente mais confortável ao

seu próprio ritmo, o e-learning surge como a alternativa ideal, pois

fornece conhecimento de alto nível e encontra-se disponível 24 horas

por dia, 365 dias por ano, em qualquer parte do mundo.

2.2. Vantagens

Algumas das vantagens do e-learning são facilmente

perceptíveis:

• Nem todos os alunos aprendem ao mesmo ritmo. Nada melhor

do que nós próprios para saber as nossas dificuldades e pontos

fortes. Com o e-learning, cada um aprende quando e onde

quer. Deste modo, a aquisição de conhecimento é optimizada

ao máximo.

• Uma grande parte dos cursos de e-learning existentes são

constituídos por partes teóricas e práticas, ou seja, o aluno

assimila conhecimento e aprende como aplicar esse

conhecimento, através da realização de projectos e resolução

de tarefas.

3

Page 16: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

• Em termos de empresas, estas chegam a poupar entre 50% a

70% nos custos da educação e o espaço que se poupa é

bastante relevante.

2.3. Desvantagens

Como desvantagens pode-se indicar as seguintes:

• Este tipo de ensino baseia-se na Internet. Como tal, está

sujeito a todos os tipos de falhas que poderão ocorrer (desde

servidores, redes, entre outras).

• Apesar da facilidade de acesso aos cursos, estes têm

normalmente um custo inerente (para além do custo de acesso

á Internet) que nem todos os possíveis alunos o podem

suportar.

• Como em toda a espécie de ensino que englobe professores,

estes não deixam de ser humanos e como tal, são

caracterizados pelas suas qualidades/defeitos. Nem todos os

professores existentes têm qualidades para o serem. O e-

learning depende muito do professor, pois este terá de saber

compensar a falta da componente física.

4

Page 17: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

33.. IInnttrroodduuççããoo aaoo DDeellpphhii II

3.1. Informações gerais

O exercício que iremos praticar neste curso será um sistema de

controle para cd’s, videos, livros, entre outros.

A cada capítulo iremos melhorando o sistema, de modo a que

no último o aluno terá um sistema completo criado por ele e poderá

fazer ele próprio a manutenção dos seus dados.

O aluno aprenderá a trabalhar graficamente, trabalhar com

ficheiros e base de dados.

Para a elaboração deste curso foi utilizada a resolução

1024x768, caso a resolução do computador do aluno não seja a

mesma, alguns exemplos e imagens poderão aparecer ligeiramente

diferentes.

3.1.1. Informações úteis disponíveis na Internet

O aluno deverá consultar o site da Inprise regularmente, e

outros sites que eventualmente conheça, pois as pessoas que

trabalham com o Delphi diariamente, disponibilizam normalmente

truques e dicas importantes sobre o produto.

De seguida será apresentada uma lista de alguns endereços

úteis na internet que falam sobre Delphi.

• http://www.inprise.com.br/

• http://www.inprise.com.br/delphi/

• http://www.delphi.com/dir-app/service/aboutDelphi.asp

• http://www.borland.com/delphi/

5

Page 18: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

• http://ourworld.compuserve.com/homepages/schlottke/delphi,h

tm

• http://www.dmz.com.br/digital/Programacao/Delphi

• http://www.revolution.com.br/delphistop/sitetipp.htm

• http://www.delphi.com.br/

• http://www.clubedelphi.com.br

A Inprise patrocina uma variedade de grupos de discussão ou

newsgrups, onde utilizadores podem trocar informações sobre os

produtos e ferramentas que a empresa desenvolve. Para obter uma

lista completa dos grupos e saber como se conectar com o servidor

de notícias da Inprise, entre no endereço:

http://www.inprise.com/newsgrups/

3.2. Um pouco sobre o Delphi e sua linguagem

A versão 5 é a segunda actualização do Delphi desde a Borland

tornou-se Inprise. Tanto o Delphi como outros produtos continuam a

ser comercializados com o nome Borland visando o desenvolvimento

da empresa. Na prática o nome Borland é sempre direccionado às

ferramentas de desenvolvimento oferecidas pela Inprise, conforme o

aluno pode ver nas outras ferramentas de desenvolvimento

disponibilizadas no mercado como o Borland C++ Builder e o Borland

JBuilder. Ambas pertencem à empresa Inprise.

Actualmente o Delphi5 é o produto mais rápido para construção

de aplicações para a Internet e também para as aplicações que

trabalham com base de dados. Isto quando comparamos as

ferramentas de desenvolvimento para Windows existentes no

mercado.

6

Page 19: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

3. Introdução ao Delphi I

O Delphi encontra-se disponível em 3 versões (ou edições) –

Delphi 5 Enterprise, Professional e Standard. Aconselha-se uma visita

ao site da Inprise para um conhecimento mais profundo sobre cada

uma delas, suas especificações e tipo de equipamento recomendado.

O Delphi utiliza como linguagem base o Object Pascal,

considerada uma linguagem muito prática, versátil, extremamente

estável e que actua em método de programação orientado a a

objectos.

Embora o conceito de linguagem de programação orientada a

objectos1 possa ser um pouco confuso no início, o Delphi torna este

trabalho algo muito simples.

Durante a execução dos exercícios e exemplos, o aluno irá aos

poucos familiarizar-se com esta linguagem e verá que com poucas

linhas de código poderá construir aplicações incrivelmente poderosas.

Uma particularidade desta linguagem é que ele não distingue

entre maiúsculas e minúsculas, o que quer dizer que o aluno poderá

digitar o código tanto em maiúsculo como em minúsculo, apenas as

informações apresentadas no ecrã é que deverão estar coerentes com

o que o aluno pretende informar.

3.3. O ambiente

Abra o Delphi. Quando o Delphi é aberto, o ecrã é dividido em

diversas partes. Vamos analisá-las.

Na parte superior temos:

Fig. 3.1: Barra de Ferramentas

1 Este conceito será desenvolvido no sub-capítulo 3.6 O que são sistemas orientados a objectos e eventos.

7

Page 20: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

Aqui encontramos as opções de menu, barras de ferramentas e

os tipos de componentes e objectos que podem ser adicionados ao

formulário do nosso sistema.

As barras de ferramentas localizadas no canto esquerdo, dão

acesso rápido às opções de menu mais utilizadas no Delphi. Vamos

analisar melhor os botões apresentados:

Atalho para a opção de menu New

Atalho para a opção de menu Open

Atalho para a opção de menu Save

Atalho para a opção de menu Save All

Atalho para a opção de menu Open Project....

Atalho para a opção de menu Add to Project...

Atalho para a opção de menu Remove from Project

Atalho para a opção de menu Help

Atalho para a opção de menu View Unit

Atalho para a opção de menu View Form

Atalho para a opção de menu Toogle Form/Unit

Atalho para a opção de menu New Form

Atalho para a opção de menu Play

Atalho para a opção de menu Pause

Atalho para a opção de menu Trace Into

Atalho para a opção de menu Step Over

8

Page 21: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

3. Introdução ao Delphi I

No centro do ecrã temos 3 janelas:

Fig. 3.2: Janela de Propriedades

Fig. 3.3: Janela de Formulário

9

Page 22: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

Repare na legenda “Form1” na janela de formulário. Esta janela

representa o formulário padrão do Delphi. É aqui que iremos construir

o aspecto gráfico, a interface dos nossos programas.

O que o Delphi classifica como sendo formulário é na realidade

uma janela de aplicação Windows.

A maioria dos formulários para Windows apresenta uma barra

de título, uma barra de menus, botões de maximização, minimização

e de fecho, localizados no canto superior direito do formulário.

Por último temos a seguinte janela:

Fig. 3.4: Janela de Área de Código

Esta é a janela de visualização e construção de código. Chama-

se “Code Editor” e encontra-se por trás da janela de formulário

(“Form1”).

Como a maioria dos aplicativos em ambiente Windows possui

diversas janelas, caixas de diálogo e formulários em geral, o Delphi

10

Page 23: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

3. Introdução ao Delphi I

utiliza o conceito de Projecto para gerir a aplicação e armazena estas

informações em arquivos de extensão .dpr2

Repare que o nome do Projecto activo aparece na barra de

título do Delphi (ver Fig. 3.3). Como ainda não demos nome ao

Projecto, este é fornecido automaticamente pelo Delphi, neste caso,

chama-se Project1.

No Delphi os formulários são armazenados em arquivos de

extensão .dfm e o código em arquivos de extensão .pas2.

Basicamente existem quatro etapas na criação e execução de

uma aplicação Delphi. De uma forma resumida podemos dizer que os

passos são:

1. Escolha dos objectos existentes que queremos utilizar na

nossa aplicação e adicioná-los ao formulário.

Fig. 3.5: Objectos

2. Formatação das propriedades dos objectos escolhidos de

forma a que estes trabalhem como desejamos (ver Fig.

3.2).

3. Escrever blocos de código que indicam ao sistema o que

este deve fazer (ver imagem Fig. 3.4).

4. Finalmente compilar e executar o programa.

Fig. 3.6: Botão Play

2 Este aspecto será desenvolvido no sub-capítulo 3.5 Arquivos/extensões geradas

pelo Delphi.

11

Page 24: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

3.4. Os Itens

Itens são projectos, formulários ou wizards pré-definidos que

poderão funcionar como um ponto de partida para o desenvolvimento

de uma aplicação3.

O Delphi apresenta por defeito, vários itens.

Fig. 3.7: Janela de Itens

Cada item apresentado tem funcionalidades diferentes, mas

vamos só analisar as mais importantes.

• Application – esta opção cria um projecto novo que

contem um formulário, uma unit e um .dpr ou fornece

maneira de o utilizador seleccionar um template.

• Form – Cria e adiciona um formulário em branco ao

projecto actual, ou permite seleccionar um a partir de um

template.

• Unit – Cria e adiciona uma unit ao projecto actual.

3 Para visualizar estes projectos escolha a opção File – New.

12

Page 25: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

3. Introdução ao Delphi I

3.5. Arquivos/extensões geradas pelo Delphi

Os nomes dos arquivos são gerados quando se digita o nome

do projecto e seus formulários. As extensões geradas pelo Delphi

são:

• BMP, ICO – Arquivos gráficos.

• DCU – Unidade compilada do Delphi 5.

• ~DF – Backup de formulário gráfico.

• DFM – Arquivo de formulário gráfico.

• ~DP – Backup do projecto.

• DPR – Arquivo de projecto do Delphi 5.

• DSK – Configurações do Desktop.

• DSM – Dados do pesquisador de objecto.

• EXE – Arquivo executável compilado.

• OPT – Opções do projecto.

• ~PA – Backup da unidade.

• PAS – Código-fonte da unit.

• RES – Arquivo de recursos compilado.

3.6. O que são sistemas orientados a objectos e

eventos

Um sistema é orientado a eventos quando uma determinada

função ou rotina somente é executada quando ocorre um evento no

Windows. Por exemplo, quando um utilizador clica com o botão do

rato num botão. Este botão que poderia ser qualquer outra forma

(imagem, campo, entre outros), é considerado um objecto no

Windows.

O Delphi é uma ferramenta baseada neste conceito que nasceu

e foi amplamente difundido no sistema operacional gráfico do

Microsoft Windows 3.1.

13

Page 26: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

Assim concluímos que são nestes objectos espalhados pelo

nosso sistema que acontecem os eventos que dão partida a execução

de rotinas.

Podemos também concluir que o Delphi não executa

simplesmente o código do programa linha a linha, mas espera que

eventos aconteçam, o que desencadeará a execução das rotinas.

3.7. Como criar objectos

A criação de objectos dá-se de forma bastante simples e

intuitiva. Para criar objectos basta escolher o objecto a criar dos

existentes na palete de componentes e fazer duplo clique (o que

inserirá automaticamente o objecto centralizado no formulário) ou

clique no objecto escolhido e de seguida clique no formulário (o

objecto irá aparecer no formulário na posição indicada pelo clique

efectuado).

Para observar esta diferença, proceda da seguinte forma:

1. Dirija-se à palete de componentes e faça um duplo clique

em (objecto Button) localizado na divisão Standard.

2. Dirija-se novamente à palete e faça clique em

(objecto Button). Agora faça clique em qualquer parte do

formulário.

Quando se cria um objecto, este recebe o nome standard do

objecto escolhido, seguido por uma numeração crescente.

Para observar este aspecto, mova o ponteiro do rato para cima

do primeiro botão criado (caso já esteja posicionado em cima do

primeiro botão criado, mova-se para fora e depois retorne á posição

em que se encontrava). Espere uns breves instantes. Repare que o

Delphi apresenta “Button1: TButton”. Isto indica que o nome do

objecto é Button1 e que é um objecto TButton.

14

Page 27: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

3. Introdução ao Delphi I

Agora repita estes passos para o segundo botão criado. Repare

que agora o Delphi apresenta “Button2: TButton”, o que indica que o

nome do botão é Button2 e que também é um objecto TButton.

Ao criar o objecto, todas as suas propriedades, métodos e

eventos standard também são criados automaticamente.

3.8. Propriedades dos objectos

Podemos considerar uma propriedade de um objecto como uma

particularidade dele.

Isto também acontece na nossa realidade. Por exemplo,

imagine um copo. Quando o descrevemos podemos dizer que este é

redondo, azul e que tem base alta, o que poderia se traduzir da

seguinte forma:

Objecto: Copo.

Propriedades: forma, cor, base.

Como já vimos, no Delphi podemos aceder às propriedades de

um determinado objecto através da janela Object Inspector divisão

“Properties”4. Por exemplo, para o objecto Button, temos as

seguintes propriedades:

4 Para uma mais fácil comutação entre código, formulário e propriedades, utilize as teclas F12 para comutar entre código e formulário e F11 para mostrar/esconder a janela de propriedades.

15

Page 28: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

Fig. 3.8: Propriedades do objecto Button

3.9. Métodos dos objectos

Métodos são acções (funções ou rotinas) que um objecto pode

ter. É através dos métodos que podemos formatar os

comportamentos dos objectos. Seguindo o exemplo anterior do copo,

podemos enche-lo, esvazia-lo, parti-lo, etc. Traduzindo, poderíamos

ter:

Objecto: Copo.

Métodos: Encher, Esvaziar, Partir.

16

Page 29: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

3. Introdução ao Delphi I

Para aceder à lista dos métodos possíveis, basta escrever o

nome do objecto (no Code Editor) e esperar uns breves instantes ou

premir as teclas CTRL+SPACE, o que fará com que apareça uma lista

da qual podemos escolher o método que desejemos. Caso se saiba o

nome do método que queremos, basta escrever o nome dele.

Fig. 3.9: Métodos possíveis do objecto Button

3.10. Eventos dos objectos

Eventos são acontecimentos a que os objectos estão expostos.

Por exemplo, um copo pode partir-se:

Objecto: Copo.

Evento: Ao partir-se.

No Delphi, podemos associar código a eventos, por exemplo,

quando um copo se parte, de seguida, podemos esvazia-lo.

17

Page 30: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

Podemos aceder aos eventos de um determinado objecto

através da janela Object Inspector divisão “Events”5. Por exemplo,

para o objecto Button, temos os seguintes eventos:

Fig. 3.10: Eventos do objecto Button

3.11. O depurador de erros

O depurador de erros que encontramos no Delphi 5, permite

depurar uma aplicação sem ter que sair do ambiente de

desenvolvimento, ou seja, o modo de projecto da aplicação.

Um depurador é um tipo de programa que fornece ferramentas

que permitem encontrar erros em um programa.

Há três tipos de erros que ocorrem em uma aplicação:

• Erros de compilação

• Erros físicos

• Erros lógicos

5 Para uma mais fácil comutação entre código, formulário e propriedades, utilize as teclas F12 para comutar entre código e formulário e F11 para mostrar/esconder a janela de propriedades.

18

Page 31: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

3. Introdução ao Delphi I

3.11.1. Como utilizar

O depurador de erros do Delphi é muito fácil de utilizar. Para

tal, basta clicar num dos pontos azuis que aparecem no Code Editor

na barra cinzenta vertical do lado esquerdo e correr o programa. A

linha seleccionada aparecerá a vermelho e com um visto no sitio do

ponto azul6.

Fig. 3.11: BreakPoints

O programa funcionará normalmente e quando passar na linha

de código assinalada parará e então podemos escolher três opções:

• – correrá normalmente até encontrar outro

breakpoint ou até finalizar o programa;

• – com este botão podemos seguir o

funcionamento do programa, entrando dentro das

rotinas;

6 A este ponto chama-se “Breakpoint”.

19

Page 32: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

• – com este botão podemos seguir o

funcionamento do programa, mas sem entrarmos dentro

das rotinas.

Para vermos o conteúdo das variáveis podemos fazer de várias

maneiras, mas talvez a mais fácil e mais rápida, será mover o rato

para um dos sítios onde o nome da variável esteja escrita e esperar

uns breves instantes. Aparecerá um texto com o nome da variável e

com o valor que ele tem.

Fig. 3.12: Conteúdo de variáveis

3.11.2. Alternativas de depuração

Normalmente usamos os “pontos de interrupção” (breakpoints)

para saber que um programa atingiu um certo estágio, mas existem

outras técnicas de depuração.

20

Page 33: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

3. Introdução ao Delphi I

Uma técnica comum é mostrar mensagens simples através do

procedimento ShowMessage (que como o próprio nome indica, serve

para mostrar uma mensagem no ecrã) em linhas específicas para fins

de depuração. Há muitas outras técnicas manuais como enviar a

saída para uma janela de terminal, alterar o texto de uma label, ou

mesmo incluir uma linha e uma caixa de listagem ou campo memo.

3.12. Resumo

Neste capítulo o aluno adquiriu conhecimentos gerais sobre o

Delphi 5, incluindo onde procurar esses conhecimentos na Internet.

Adquiriu também conhecimentos fundamentais sobre o

funcionamento do Delphi tais como o seu ambiente, os itens

possíveis, os arquivos gerados pelo Delphi e como funciona o seu

depurador de erros.

Conheceu o que são sistemas orientados a objectos.

Aprendeu como criar objectos e aceder às suas propriedades,

métodos e eventos.

3.13. Exemplos

Antes de começar com os exemplos, crie uma pasta adequada

no seu computador para os guardar.

1. Abra o Delphi.

2. No formulário que aparece, mude:

a. a sua altura para 115;

b. a sua largura para 280;

c. o nome que está na barra de título para “Exemplo 1”.

3. Crie uma label.

4. Altere:

a. o seu título de acordo com o seu nome;

21

Page 34: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

b. o seu tamanho;

c. a fonte;

d. a côr.

5. Crie um botão.

6. Altere o título do botão para “OK”.

7. Crie um botão bitmap que tenha a função de fechar e sair do

programa.

8. Coloque uma ajuda no botão.

9. Compile e execute o programa.

10. Teste o botão de sair do programa.

3.14. Exercícios

Antes de começar com os exercícios, crie uma pasta adequada

no seu computador para os guardar.

1. Abra o Delphi.

2. No formulário que aparece, mude:

a. a altura para 350;

b. a largura para 550;

c. o título que aparece na barra para “Biblioteca

Multimédia”;

d. o nome para “Form_Apresentacao”.

3. Crie uma imagem.

4. Altere:

a. o caminho para o caminho da imagem fornecida;

b. A sua posição esquerda para 230;

c. Topo para 10;

5. Crie duas labels.

6. Altere:

a. O título de uma para “Biblioteca”;

b. O de outra para “Multimédia”;

22

Page 35: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

3. Introdução ao Delphi I

c. A fonte de ambas para Verdana, Negrito, 20 e com côr

Mogno;

d. Esquerda e topo de “Biblioteca” para 15;

e. Esquerda “multimédia” para 15 e topo para 55;

7. Crie outra label.

8. Altere:

a. O título para “de <seu nome>”;

b. Alinhamento à direita;

c. Topo 295;

d. Encoste ligeiramente à imagem.

9. Crie um timer.

10. Altere:

a. O intervalo para 5000;

b. O nome para “Tempo”.

11. Salve o programa na pasta que criou. Para a unit dê o nome de

“Unit_Principal” e para o nome do Projecto escolha

“Project_Curso”.

12. Compile, resolva os erros resultantes, e execute o programa.

23

Page 36: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

24

Page 37: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

44.. IInnttrroodduuççããoo aaoo DDeellpphhii IIII

4.1. Estrutura de uma Unit

Normalmente uma Unit é constituída por:

unit NomeUnit;

interface

uses // Classes que a unit utiliza

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

Dialogs;

type

// Declaração de variáveis

end;

// Declaração de funções e procedimentos

const

// Declaração de constantes

var

// Declaração de variáveis

implementation

{$R *.DFM}

// Especificação das funções e procedimentos declarados

end.

25

Page 38: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

4.2. Variáveis

Um dos aspectos básicos das maiorias das linguagens de

programação são as variáveis. Uma variável está normalmente

associada a um nome dado pelo programador que identifica uma

posição de memória no equipamento que servirá para armazenar

alguma informação, seja ela numérica ou caracter.

O Delphi possui os seguintes tipos de variáveis:

Tipo Intervalo

Boolean (Verdadeiro/Falso) – 1 byte

Byte 0 a 255

String 1 a 2 GB

Word 0 a 65535

Char 1 byte

Comp -263 a 263-1

Cardinal 0 a 4294967295

Single Γ1.5x10-45 a 3.4x1038

Double 5.0x10-324 a 1.7x10308

Real 2.9x10-39 a 1.7x1038

Extended 3.4x10-4932 a 1.1x104932

Integer -2.147.483.648 a 2.147.483.647

LongInt -2.147.483.648 a 2.147.483.647

ShortInt -128 a 127

SmallInt -32768 a 32767

Int64 -263 a 263-1

No Delphi é imperativo que se declare todas as variáveis que se

usem. Para declarar uma variável, utiliza-se a palavra reservada var.

26

Page 39: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

4. Trabalhando com ficheiros

Fig. 4.1: Declaração de variáveis

Após a declaração da variável está encontra-se pronta a usar

em qualquer parte do programa durante o seu ciclo de vida.

Para usar uma variável basta escrever o nome dela. Para

atribuirmos um valor a uma variável utiliza-se a seguinte sintaxe:

Nome_variavel := valor;

4.3. Directivas

As Directivas têm um significado especial no Delphi, mas, ao

contrário das palavras reservadas, aparecem apenas em contextos

onde não podem ocorrer identificadores definidos pelo utilizador.

Apesar deste factor podemos (mas não é aconselhável) definir um

identificador que se pareça exactamente como uma directiva.

Basicamente, directivas são comentários que obedecem a uma

sintaxe definida, utilizados para controlar características do Delphi.

Começa com o caracter delimitador de comentário, seguido por um $

e um nome (de uma ou mais letras) que identifique a directiva.

Cada directiva pode ser classificada como um switch, um

parâmetro ou uma condição.

4.3.1. Directivas Switch

Directivas switch tornam propriedades do compilador on/off.

Para directiva de uma única letra, basta acrescentar + ou –

imediatamente a seguir a letra. Para directivas com mais letras,

acrescenta-se as palavras “on” ou “off”.

27

Page 40: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

Estas directivas podem ser globais ou locais. Globais afectam

toda a compilação e têm de aparecer antes da parte da declaração do

programa ou da unit onde são compiladas. Locais, afectam apenas a

parte da compilação que se compreende até á próxima ocorrência da

mesma directiva, podendo aparecer em qualquer lado.

Podem ser agrupadas num único comentário de directiva ou

separadas com vírgulas sem espaços. Por exemplo:

{$B+,R-,S-}

4.3.2. Directivas de Parâmetro

Estas directivas especificam parâmetros que afectam a

compilação, como nomes de ficheiros e tamanhos de memória.

4.3.3. Directivas Condicionais

Estas directivas controlam compilação condicional de partes de

texto de código, baseadas em símbolos definidos pelo utilizador.

Todas as directivas, excepto as de switch, têm de ter pelo

menos um espaço entre o nome e os parâmetros. Alguns exemplos

de directivas:

{$B+}

{$STACKCHECKS ON}

{$R- Turn off range checking}

{$I TYPES.INC}

{$M 32768,4096}

{$DEFINE Debug}

{$IFDEF Debug}

{$ENDIF}

28

Page 41: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

4. Trabalhando com ficheiros

4.4. Estruturas Condicionais

4.4.1. Instrução If-Then-Else

A instrução If existe em muitas das linguagens. Como a própria

designação indica, a instrução é utilizada quando queremos que uma

determinada parte do código só seja executada consoante uma

condição.

A sintaxe completa da instrução é:

If {condição} Then

Begin

{Executa esta parte do programa, caso a condição indicada

seja verdadeira}

end7

Else

Begin

{Executa esta parte do programa, caso a condição indicada

seja falsa}

end;

Exemplo:

Tempo := ‘Sol’;

If Tempo = ‘Sol’ Then

ShowMessage(‘Está sol. É melhor levar óculos de sol!!!’)

Else

ShowMessage(‘Não está sol. É melhor levar guarda-chuva!!!’);

7 É de notar que nem todas as instruções em Delphi acabam em “;”. Sempre que exista um “else”, na linha anterior não é possível colocar “;”.

29

Page 42: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

4.4.2. Instrução Case

Outra estrutura condicional é a instrução Case. Esta instrução

utiliza-se quando uma expressão pode ter um de vários valores e

queremos que uma parte do código só seja executada conforme o

valor que a expressão toma na altura.

A sintaxe desta instrução é:

Case <expressão> of

Valor1: <Bloco de código que só será executado caso o valor da

expressão seja igual ao valor de Valor1>

Valor2: <Bloco de código que só será executado caso o valor da

expressão seja igual ao valor de Valor2>

...

Else

{Bloco de código que só será executado caso o valor

da expressão não seja nenhum dos indicados}

End;

Exemplo:

Cidade := 2;

Case Cidade of

1: ShowMessage(‘Estás em Lisboa.’);

2: ShowMessage(‘Estás no Porto.’);

3: ShowMessage(‘Estás em Coimbra.’);

Else

ShowMessage(‘Não sei onde estás.’);

End;

4.5. Estruturas de Ciclo

As estruturas de ciclo são utilizadas de forma a que o programa

execute uma determinada parte do código enquanto uma condição

30

Page 43: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

4. Trabalhando com ficheiros

não for alcançada. Apesar de muito interessantes e de por vezes

facilitarem a programação, estas estruturas tem de ser utilizadas com

algum cuidado pois poderá acontecer que a condição nunca seja

alcançada e o programa nunca termine.

4.5.1. Estrutura For

É utilizada quando sabemos à partida quantas vezes queremos

que o ciclo se repita. Esta estrutura tem a particularidade de o

contador ser automático, ou seja não é necessário explicitar o

incremento ou decremento da variável contador.

A sua sintaxe é:

For variavel_contador := valor_inicial To valor_final Do

<Bloco de instruções>

ou

For variavel_contador := valor_inicial DownTo valor_final Do

<Bloco de instruções>

Exemplo:

For Contador := 1 To 5 Do

ShowMessage(‘O contador vai em ‘ + Contador + ‘;’);

Resultado:

O contador vai em 1;

O contador vai em 2;

O contador vai em 3;

O contador vai em 4;

Exemplo2:

For Contador := 5 DownTo 1 Do

ShowMessage(‘O contador vai em ‘ + Contador + ‘;’);

31

Page 44: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

Resultado:

O contador vai em 5;

O contador vai em 4;

O contador vai em 3;

O contador vai em 2;

4.5.2. Estrutura While

Esta estrutura é utilizada para repetir uma porção de código

enquanto uma condição for verdadeira. Nesta estrutura é necessário

explicitar o incremento/decremento.

A sintaxe é:

While <Condição> Do

<Bloco de instruções>

Exemplo:

Contador := 1;

While Contador < 5 Do

Begin

ShowMessage(‘O contador vai em ‘ + Contador + ‘;’);

Contador := Contador + 1;

End;

4.5.3. Estrutura Repeat/Until

Esta estrutura é utilizada para repetir uma porção de código até

que uma condição seja verdadeira. Nesta estrutura é necessário

explicitar o incremento/decremento.

A sintaxe é:

32

Page 45: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

4. Trabalhando com ficheiros

Repeat

< Bloco de instruções>

Until <Condição>

Exemplo:

Contador := 1;

Repeat

ShowMessage(‘O contador vai em ‘ + Contador + ‘;’);

Contador := Contador + 1;

Until Contador >= 5;

4.6. Operadores Lógicos

No Delphi existem os seguintes operadores lógicos:

• And - “e”; A expressão é verdadeira quando todas as condições

o são.

• Or - “ou” ; A expressão é verdadeira quando pelo menos uma

das condições o é.

• Xor - “ou“ (exclusivo); A expressão só é verdadeira quando o

valor das condições é diferente.

• Not – negação; Se a expressão é verdadeira, o resultado é falso

e vice-versa.

4.7. Trabalhando com Vectores

Os vectores são muito importantes para armazenar em

memória uma grande quantidade de dados de um mesmo tipo. Pode-

se definir um vector como um conjunto de variáveis que possuem o

mesmo nome, mas diferenciados por um índice.

Exemplo:

33

Page 46: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

{Criação de um vector do tipo caracter que irá armazenar 45 registos

referentes a alunos}

Alunos: array[1..45] of Char;

{Atribuir o vector Alunos à variável Ref_Alunos}

Ref_Alunos := Alunos;

{Inserir em cada registo um nome de um aluno}

Ref_Alunos[1] := ‘Ana’;

Ref_Alunos[2] := ‘Bruno’;

Ref_Alunos[3] := ‘Carla’;

Ref_Alunos[4] := ‘Dionísio’;

Ref_Alunos[5] := ‘Elsa’;

...

Ref_Alunos[45] := ‘Fernanda’;

4.8. Caracteres de formatação do EditMask

O EditMask é uma propriedade muito funcional porque permite-

nos formatar determinados campos que poderão aparecer no ecrã.

As máscaras possíveis são:

! (exclamação): Caracteres em branco não serão armazenados.

>(maior que): Todos os caracteres estarão em maiúsculas até que

apareça o caracter <.

<(menor que): Todos os caracteres estarão em minúsculas até que

apareça o caracter >.

<>(menor e maior que): Todas as letras maiúsculas e minúsculas

serão armazenadas conforme foram introduzidas pelo utilizador.

\(barra invertida): Os caracteres serão tratados como literais.

L(letra L maiúscula): Faz com que apenas os caracteres alfabéticos

sejam aceites na posição onde se encontra o L.

34

Page 47: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

4. Trabalhando com ficheiros

l(letra l minúscula): Faz com que apenas os caracteres alfabéticos

sejam aceites na posição onde se encontra o l, mas os caracteres

podem ser omitidos pelo utilizador.

A(letra A maiúscula): Faz com que apenas os caracteres

alfanuméricos sejam aceites na posição onde se encontra o A.

a(letra a minúscula): Faz com que apenas os caracteres

alfanuméricos sejam aceites na posição onde se encontra o a, mas os

caracteres podem ser omitidos pelo utilizador.

C(letra C maiúscula): Quaisquer caracteres podem ser aceites na

posição onde se encontra o C.

c(letra c minúscula): Quaisquer caracteres podem ser aceites na

posição onde se encontra o c e podem acontecer omissões.

0(zero): Faz com que apenas os caracteres numéricos sejam aceites

na posição onde se encontra o 0.

9(nove): Faz com que apenas os caracteres numéricos sejam aceites

na posição onde se encontra o 0 e podem acontecer omissões.

#: Faz com que apenas caracteres numéricos e sinais de adição (+)

ou subtracção (-) sejam aceites na posição onde se encontra o #.

:(dois pontos) : Usado para separar horas, minutos e segundos.

/(barra normal): Usado para separar meses, dias e anos.

;(ponto-e-vírgula): Usado para separar os pontos de uma máscara.

_(under-score): Usado para inserir espaços em branco na caixa de

edição.

4.9. Comentários

Muitas vezes para melhor compreendermos o nosso próprio

código, ou quando queremos que alguém o compreenda melhor,

usamos como método auxiliar os comentários. Os comentários são

linhas de código que serão ignoradas pelo Delphi quando este as

encontra.

Para inserirmos um comentário podemos utilizar dois métodos:

35

Page 48: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

• Comentário por Bloco

A := 1;

{Todo este código

será ignorado pelo Delphi}

B := 2;

• Comentário linha-a-linha

A := 1;

// Esta linha será ignorada pelo Delphi

B := 2;

// Esta linha também

// E esta...

4.10. Funções e procedimentos

As funções e os procedimentos são pedaços de código escritos

à parte do seguimento normal de um programa que só serão

executados quando os invocarmos. Ambos podem receber

parâmetros.

4.10.1. Funções

As funções tem que obrigatoriamente retornar um valor de um

determinado tipo.

Para que uma função retorne um valor, é necessário indicar

qual é esse valor. Para tal existem dois métodos:

• Palavra reservada Result: Atribuindo a esta palavra reservada

um valor, esse valor é passado automaticamente para o valor

da função.

• Nome da função: Atribuindo ao nome da função o valor que se

quer retornar.

A sintaxe de definição de uma função é:

36

Page 49: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

4. Trabalhando com ficheiros

Function nome_função(Par11,...,Par1N: Tipo_Variavel; ...; ParNN:

Tipo_Variavel): Tipo_Função;

Exemplo (função que calcula a soma de dois números passados por

parâmetro):

Funtion Calcula_Soma(x, y: Integer): Integer;

Begin

Result := x + y;

End;

4.10.2. Procedimentos

Os procedimentos não retornam valores.

A sua sintaxe é:

Procedure nome_procedimento(Par11,...,Par1N: Tipo_Variavel; ...;

ParNN: Tipo_Variavel);

Exemplo (procedimento que mostra uma mensagem no ecrã):

Procedure Mostra_Mensagem;

Begin

ShowMessage(‘Olá!’);

End;

4.11. Trabalhando com menus

A tarefa de adicionar e trabalhar com menus é muito fácil no

Delphi, simplesmente definindo os nomes dos itens que queremos

que apareçam na barra de menus.

Para inserir uma barra de menus, proceda da seguinte forma:

37

Page 50: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

1. dirija-se à palete de objectos e seleccione o objecto

(MainMenu) localizado na divisão Standard e em seguida

clique em qualquer parte do formulário.

2. Dê duplo clique no objecto MainMenu que acabou de criar, o

que fará com que apareça a caixa de diálogo

Form1.MainMenu1.

Fig. 4.2: Caixa de diálogo de criação de menu

3. Na janela Object Inspector, dê um clique na caixa de texto

ao lado da propriedade Caption para seleccioná-la, digite

&Ficheiro8 e pressione a tecla ENTER.

4. Na caixa de diálogo Form1.MainMenu1, dê um clique à

direita da palavra Ficheiro que acabou de inserir.

8 “&” indica que esta opção de menu terá como atalho a letra “F”

38

Page 51: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

4. Trabalhando com ficheiros

Fig. 4.3: Caixa de diálogo de criação de menu – cont.

5. Voltando à janela Object Inspector, dê um clique na caixa

de texto ao lado da propriedade Caption para seleccioná-la,

digite &Ajuda e pressione a tecla ENTER.

6. Na caixa de diálogo Form1.MainMenu1, dê um clique à

direita da palavra Ajuda que acabou de inserir.

Fig. 4.4: Caixa de diálogo de criação de menu – cont.

7. Na janela Object Inspector, dê um clique na caixa de texto

ao lado da propriedade Caption para seleccioná-la, digite

&Sobre e pressione a tecla ENTER.

39

Page 52: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

Para acrescentar opções, proceda da seguinte forma:

1. Dê um clique sobre a opção de menu Ajuda da caixa de diálogo

Form1.MainMenu1 para seleccioná-la e, em seguida, dê um

clique sobre o rectângulo vazio logo abaixo.

Fig. 4.5: Caixa de diálogo de criação de menu – cont.

2. Na janela Object Inspector, dê um clique na caixa de texto ao

lado da propriedade Caption para seleccioná-la, digite &Sair e

pressione a tecla ENTER.

Fig. 4.6: Caixa de diálogo de criação de menu – cont.

40

Page 53: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

4. Trabalhando com ficheiros

4.12. Resumo

Neste capítulo o aluno adquiriu conhecimentos mais específicos

sobre constituição de units e aspectos importantes de programação

sobre Delphi (como estruturas condicionais e de ciclo, como trabalhar

com vectores, entre outros).

4.13. Exemplos

Antes de começar com os exemplos, crie uma pasta adequada

no seu computador para os guardar.

1. Abra o Delphi.

2. Declare, como publicas, as seguintes variáveis:

a. Nome - String;

b. Idade - inteiro;

c. Morada – String;

d. VecNomes – vector de cinco strings;

e. VecIdades – vector de cinco inteiros.

3. Crie os objectos TEdit, TLabel e TButton.

a. Mude o título do objecto TLabel para “Idade:”;

b. Mude o nome do objecto TEdit para EIdade;

4. No evento OnClick do objecto do tipo TButton, digite o código

necessário para que quando o utilizador clique no botão

apareça uma caixa de mensagem a indicar se é adulto (>=18

anos).

5. Crie um objecto TMaskEdit e formate-o para apenas receber

oito caracteres.

6. Crie uma função/procedimento para cada uma das seguintes

alíneas:

a. Preencher os vectores;

b. Calcular a média das Idades;

41

Page 54: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

c. Indicar se existe alguém cujo nome começa pela letra “A”

e não seja adulto ou cujo nome acaba pela letra “A” e

seja adulto.

7. Crie um menu para tratamento da alínea anterior.

8. Insira comentários.

9. Compile e execute o programa.

10. Teste o exercício.

4.14. Exercícios

1. Abra o Delphi com o projecto que gravou no exercício do

primeiro capítulo.

2. No formulário “Form_Apresentacao”, seleccione o objecto

Tempo. No evento OnTimer, escreva o código necessário para

que este formulário se feche.

3. Crie um novo formulário. Mude:

a. o nome do formulário para “Form_Entrada”;

b. o titulo para “Login”;

c. retire os BorderIcons;

d. guarde a unit com o nome “Unit_ Entrada”.

4. Crie um objecto TMaskEdit, um TEdit, dois TLabels e dois

TButton:

a. Mude o texto de uma das Labels para “Login:” e o outro

para “Password:”;

b. Formate o objecto MaskEdit para aceitar apenas oito

caracteres (Login).

c. Indique que o objecto Edit é do tipo password.

d. Mude o título dos botões para “OK” e “Cancelar”.

5. Defina as variáveis necessárias para ter um vector de logins e

passwords. No evento OnCreate do formulário preencha-o com

dados.

6. Crie uma função que indique se o login é válido.

42

Page 55: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

4. Trabalhando com ficheiros

7. No evento OnClick do botão “OK” escreva o código necessário

para chamar a função criada na alínea anterior. Se for válido,

fechar o formulário, caso contrário, enviar uma mensagem para

o ecrã a indica-lo. No evento OnClick do botão “Cancel” escreva

o código necessário para cancelar e fechar a aplicação.

8. Crie um novo formulário. Mude:

a. a cor de fundo para cinzento escuro (gray);

b. a propriedade Position para poScreenCenter;

c. a propriedade WindowState para wsMaximized;

d. o nome do formulário para “Form_Principal”;

e. guarde a unit com o nome “Unit_Principal”.

9. Crie um menu com as seguintes opções e sub-opções:

a. Itens;

b. Listagens;

c. Sistema;

d. B. Multimédia:

a. Acerca;

b. Sair.

10. No evento OnCreate, escreva o código necessário para abrir

o formulário “Form_Apresentacao” seguido do formulário

“Form_Entrada”.

11. Abra a opção de menu Project – Options. Seleccione

“Form_Apresentacao” e clique em “>”9. Repita para o

formulário “Form_Entrada”.

12. Compile, resolva os erros resultantes, e execute o programa.

9 A lista apresentada no lado esquerdo indica todos os formulários que serão criados automaticamente pelo Delphi; A do lado direito todos os que estão disponíveis para serem criados, mais tarde, pelo programa.

43

Page 56: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

44

Page 57: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

55.. TTrraabbaallhhaannddoo ccoomm ffiicchheeiirrooss

5.1. Ficheiros

Um ficheiro de texto é caracterizado por conter caracteres

organizados por linhas e por cada linha terminar com um identificador

de fim de linha (por exemplo carriage-return ou linefeed).

5.2. Estruturas relacionadas

Algumas das estruturas mais importantes são:

Estruturas Descrição

TOpenDialog Abre uma janela em modo modal para escolha e

abertura de ficheiros.

TFindDialog Abre uma janela que permite procurar texto dentro

de um ficheiro.

TSaveDialog Abre uma janela em modo modal para escolha de

nomes de ficheiros e permite guarda-los.

TReplaceDialog Abre uma janela que permite procurar e substituir

texto dentro de um ficheiro.

5.3. Funções e Procedimentos para

manuseamento de ficheiros

Algumas das funções e procedimentos mais importantes:

Estrutura Descrição

AssignFile Associa o nome de um ficheiro externo a uma

45

Page 58: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

variável de ficheiro.

ChDir Muda o directório actual.

CloseFile Termina a associação entre o nome do ficheiro

externo e a variável de ficheiro.

CreateDir Cria um novo directório.

DeleteFile Apaga fisicamente um ficheiro.

DirectoryExists Determina se um determinado directório existe.

FileClose Fecha um determinado ficheiro.

FileExists Determina se um determinado ficheiro existe.

FileRead Lê um determinado numero de bytes de um ficheiro.

FileSearch Procura num determinado caminho DOS um ficheiro.

FileWrite Escreve o conteúdo de um buffer para a posição

actual do ficheiro.

FindClose Liberta a porção de memória alocada por FindFirst.

FindFirst Procura pela primeira instancia de um nome de

ficheiro (com um determinado grupo de atributos

dado), no directório especificado.

FindNext Retorna a próxima entrada que corresponde ao

nome e atributos especificados na chamada ao

FindFirst.

GetCurrentDir Retorna o nome do directório actual.

RemoveDir Apaga um directório existente desde que este esteja

vazio.

RenameFile Muda o nome de um ficheiro.

SetCurrentDir Especifica o directório actual.

5.4. Rotinas de I/O

Algumas das funções e procedimentos mais importantes:

46

Page 59: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

5. Trabalhando com ficheiros

Estrutura Descrição

Append Prepara um ficheiro existente para adição de texto.

BlockRead Lê um ou mais blocos de registos de um ficheiro

aberto para uma variável.

BlockWrite Escreve um ou mais blocos de registos de uma

variável para um ficheiro aberto.

Eof Testa se a posição do ficheiro está no fim do ficheiro.

FileSize Retorna o tamanho de um ficheiro em bytes ou o

numero de registos num ficheiro de registos

MKDir Cria um novo subdirectório.

Rename Muda o nome de um ficheiro.

Reset Abre um ficheiro existente.

Rewrite Cria um ficheiro e abre-o.

RmDir Apaga um subdirectório desde que este se encontre

vazio.

5.5. Rotinas para ficheiros de texto

Algumas das rotinas para ficheiros de texto são:

Rotinas Descrição

AssignPrn Atribui uma variável de ficheiro de texto a uma

impressora.

Eoln Testa se o ponteiro de ficheiro está no final da linha.

Erase Apaga um ficheiro externo.

Flush Esvazia o buffer de um ficheiro aberto para output.

Read Lê dados de um ficheiro.

Readln Lê uma linha de texto de um ficheiro.

Write Escreve para um ficheiro de texto.

Writeln Escreve uma linha (com caracter de fim de linha incluído)

num ficheiro.

47

Page 60: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

5.6. Rotinas para tratamento de strings

Algumas das rotinas para tratamento de strings são:

Rotinas Descrição

CompareStr Compara duas strings distinguindo maiúsculas de

minúsculas.

CompareText Compara duas strings pelo seu valor ordinal, ignorando

diferenças entre maiúsculas e minúsculas.

Concat Concatena duas ou mais strings, resultando em uma.

Copy Retorna uma substring de uma string ou um segmento

de um vector dinâmico.

Delete Apaga uma substring de uma string.

Format Retorna uma string formatada de acordo com um

grupo de parâmetros dados.

Insert Insere uma substring numa string a partir de uma

determinada posição.

IsDelimiter Indica se um determinado caracter numa string

corresponde a um existente num grupo de

delimitadores.

Length Retorna o numero de caracteres numa string ou

elementos num vector.

LowerCase Retorna uma cópia de uma string, mas com todos os

caracteres em minúsculas.

Pos Retorna o índice do primeiro caracter de uma

determinada substring existente numa string.

QuotedStr Acrescenta aspas no inicio e fim de uma string e

retorna-a.

Str Formata uma string e retorna-a para uma variável.

StringReplace Retorna uma string com ocorrências de um caracter

substituído por outro.

Trim Apaga possíveis espaços que existam no inicio e fim de

uma string.

48

Page 61: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

5. Trabalhando com ficheiros

UpperCase Retorna uma cópia de uma string, mas com todos os

caracteres em maiúsculas.

Val Converte uma string para a sua representação

numérica.

5.7. FTP

Para transferencias de ficheiros de e para um servidor de

internet/intranet FTP (via protocolo de FTP), o Delphi possui o objecto

(NMFTP). Este objecto encontra-se na palete de componentes,

divisão FastNet.

5.8. Propriedades

As propriedades mais importantes deste objecto são:

Propriedade Descrição

BytesRecvd Contem o numero de bytes recebidos da

transferência.

BytesSent Contem o numero de bytes enviados na

transferência.

BytesTotal Contem o numero total de bytes enviados ou

recebidos na transferência.

Connected Indica se está conectado ao servidor remoto.

CurrentDir Contem o nome do directório corrente no

servidor remoto.

FTPDirectoryList Usada apenas quando a propriedade ParseList

tem o valor TRUE. Contem a listagem do

directório obtido através do método List.

Host Contem o nome ou endereço IP do servidor

remoto.

Password Especifica a palavra passe usada para login no

servidor remoto.

49

Page 62: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

UserID Especifica o login usado na conexão ao servidor

remoto.

Vendor Especifica o sistema operativo do servidor

remoto.

5.9. Métodos

Os métodos mais importantes deste objecto são:

Métodos Descrição

Abort Aborta a operação actual.

Allocate Aloca espaço no servidor remoto para guardar

ficheiros.

ChangeDir Altera o directório corrente.

Connect Conecta o cliente do servidor remoto.

Disconnect Disconecta o cliente do servidor remoto.

Download Transfere ficheiros do servidor remoto para o

computador local.

List Retorna uma listagem com os nomes dos

ficheiros e directórios existentes no directório

corrente no servidor remoto.

MakeDirectory Cria um directório no directório corrente no

servidor remoto.

Mode Altera o modo utilizado na transferência de

dados de/para o servidor remoto.

NList Retorna o nome de ficheiros e directórios do

directório corrente.

RemoveDir Remove um directório no directório corrente no

servidor remoto.

Upload Envia ficheiros do computador local para o

servidor remoto.

UploadAppend Envia ficheiros do computador local para o

servidor remoto. Caso já exista um ficheiro com

50

Page 63: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

5. Trabalhando com ficheiros

o mesmo nome, o novo ficheiro será

acrescentado no final do já existente.

UploadRestore Envia continuação de ficheiros do computador

local para o servidor remoto.

UploadUnique Envia ficheiros do computador local para o

servidor remoto. Caso já exista um ficheiro com

o mesmo nome, um nome único será utilizado.

5.10. Eventos

Os eventos mais importantes deste objecto são:

Eventos Descrição

AuthenticationFailed Ocorre quando o userId ou a palavra passe

estão incorrectas.

AuthenticationNeeded Ocorre quando o userId ou a palavra passe

estão vazias.

Disconnect Ocorre quando o cliente se desconecta do

servidor remoto.

Failure Ocorre quando um comando de execução falha.

PacketRecvd Ocorre quando o cliente recebe dados do

servidor remoto.

PacketSent Ocorre quando o cliente envia dados para o

servidor remoto.

Success Ocorre quando um comando é completado com

sucesso.

TransactionStart Ocorre quando o servidor remoto envia dados

ao cliente através do Data Socket.

TransactionStop Ocorre quando uma transferência de dados do

servidor para o cliente termina.

51

Page 64: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

5.11. Notas

Antes de se usar este componente para transferir ficheiros para

e de um servidor remoto, é necessário que primeiro nos conectemos.

Isto é conseguido atribuindo ás propriedades Host e Port valores

válidos de um servidor de FTP. Depois, atribui-se ás propriedades

UserID e Password valores de uma conta válida no servidor escolhido.

Muitos servidores aceitam Anonymous como UserID e um endereço

de email como password para se conectar. Só depois de se atribuir

estas propriedades, é que se pode efectuar o método Connect para

nos conectarmos ao servidor.

Depois de nos conectarmos, podemos obter um directório do

servidor remoto, chamando o método List e escrevendo um event

handler para o evento OnListItem.

Podemos também alterar o directório actual chamando o

método ChangeDir, especificando um nome de um directório válido.

Para efectuar upload de ficheiros para o directório actual no

servidor remoto, chamamos o método UpLoad. Este método utiliza

como parâmetros um nome de um ficheiro local e um nome para

salvar o ficheiro no computador remoto. É de notar que só se pode

efectuar upload para um servidor de FTP se tivermos as permissões

necessárias. Se o ficheiro já existir no servidor com o mesmo nome

que se especificou no método, o ficheiro será substituído pelo

enviado. Uma solução será utilizar o método UpLoadUnique.

Para efectuar Download de ficheiros do servidor remoto,

primeiro devemos chamar o método List, para sabermos se o ficheiro

que desejamos está disponível para Download. Depois chamamos o

método Download, passando por parâmetro o nome do ficheiro que

desejamos e o caminho e nome para onde o queremos salvar no

nosso computador. É de notar que não podemos efectuar download

de todos os caminhos do servidor de FTP. Normalmente é-nos

permitido fazer Download de vários ficheiros de um directório

52

Page 65: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

5. Trabalhando com ficheiros

chamado ‘pub’. Também aqui, se especificarmos um nome para o

ficheiro a guardar que já exista, ele será substituído pelo enviado.

Para criar directórios no servidor, primeiro temos de ter as

permissões suficientes para isso. Normalmente, é-nos permitido criar

directórios num directório ‘incoming’ do servidor FTP. Para criarmos o

directório, chamamos o método MakeDirectory, passando por

parâmetro o nome do directório que desejamos criar.

Para removermos um directório, também temos de ter as

permissões necessárias. Depois, chamamos o método RemoveDir,

passando por parâmetro o nome do directório que desejamos

remover.

5.12. Resumo

Neste capítulo o aluno adquiriu conhecimentos sobre como

trabalhar com ficheiros e estruturas relacionadas.

Adquiriu conhecimentos específicos de como trabalhar com

funções e procedimentos usados para tratamento de texto e de

ficheiros.

Aprendeu também como trabalhar com servidores FTP em

Delphi.

5.13. Exemplos10

Antes de começar com os exemplos, crie uma pasta adequada

no seu computador para os guardar.

1. Abra o Delphi.

2. Crie um objecto TSaveDialog, TMemo e dois TButton.

10 Neste capítulo não serão fornecidos exemplos sobre o objecto NMFTP visto ser necessário um servidor de FTP activo. No entanto, e caso seja necessário, convida-se o aluno a consultar a ajuda do Delphi sobre este objecto, pois considera-se que esta seja bastante completa.

53

Page 66: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

3. Mude o título de um dos botões para “Guardar Linha a Linha”

e o do outro para “Guardar em Linha”.

4. Dê-lhes nomes sugestivos (por exemplo, “BtnGuardarLL” e

“BtnGuardarL”, respectivamente).

5. Crie uma função que retorne todo o conteúdo do objecto

TMemo em minúsculas e todo na mesma linha.

6. Crie um procedimento que receba como parâmetro uma string

(que será o nome do ficheiro) e um boleano.

a. Se o valor do parâmetro boleano for true, transcrever

para um ficheiro o resultado da alínea 4.

b. Se for false, transcrever para um ficheiro todo o

conteúdo do objecto TMemo.

7. Ao clicar no objecto BtnGuardarLL:

a. Executar o objecto TSaveDialog;

b. Chamar a função criada na alínea 6, passando por

parâmetro o nome do ficheiro escolhido na alínea anterior

e false.

8. Ao clicar no objecto BtnGuardarL:

a. Executar o objecto TSaveDialog;

b. Chamar a função criada na alínea 6, passando por

parâmetro o nome do ficheiro escolhido pelo objecto

TSaveDialog e true.

9. Compile e execute o programa.

10. Teste o exercício.

5.14. Exercicios

1. Abra o Delphi com o projecto que gravou no exercício do

capítulo anterior.

2. Crie um novo formulário. Mude:

a. o nome do formulário para “Form_Carregar”;

b. o título para “Carregar de Ficheiro”;

54

Page 67: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

5. Trabalhando com ficheiros

c. guarde a unit com o nome “Unit_Carregar”.

3. Crie um objecto TMemo, um TButton e um OpenDialog.

4. Dê nomes sugestivos aos objectos (por exemplo, “Memo”,

“BtnLerFicheiro” e “OpenDialog”).

5. No objecto do tipo TMemo, retire a linha que aparece por

defeito.

6. Crie um procedimento que receba como parâmetro uma string

e um caracter (por exemplo, ‘|’) e que diga a primeira posição

em que o caracter aparece.

7. Crie um botão que ao clicar nele, percorra o objecto TMemo e

que vá indicando a posição em que o caracter separador

aparece. Utilize o procedimento criado na alínea anterior.

8. No objecto do tipo TButton:

a. Mude o título para “Ler Ficheiro”;

b. Ao clicar no botão:

i. Executar o objecto OpenDialog;

ii. Ler os dados do ficheiro escolhido e escrever no

objecto TMemo.

9. No objecto OpenDialog, especifique um directório existente

como o directório inicial.

10. No formulário “Form_Principal”, opção de menu Sistema, crie

como sub-opção “Carregar de ficheiro”.

11. No evento OnClick, escreva o código necessário para chamar

o formulário “Form_Carregar”.

12. Compile, resolva os erros resultantes, e execute o programa.

55

Page 68: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

56

Page 69: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

66.. TTrraabbaallhhaannddoo ccoomm BBaassee ddee DDaaddooss

6.1. Conceitos de Base de Dados

Uma Base de Dados não é mais do que um conjunto de tabelas

de informações relacionadas entre si e compostas por campos e

registos (similar a uma agenda).

Os campos das tabelas são o tipo de informação que vamos

armazenar (como nome, morada, etc.) e os registos que os campos

conterão são as informações em si (os nomes das pessoas, seus

endereços, etc).

Alguns dos termos mais utilizados são:

Termo Definição

Base de Dados Conjunto de tabelas.

Tabela Estrutura baseada em linhas e colunas de dados.

Registo Informação que se encontra linearmente em um

grupo de campos.

Campo Um item do registo, como por exemplo, nome do

cliente.

Índice Identificador de ordem lógica vinculado a um ou

mais campos de uma tabela.

Chave Índice principal onde registos duplicados não são

permitidos.

Para trabalhar com Base de dados, o Delphi utiliza um sistema

denominado BDE (Borland Database Engine), que integra

harmoniosamente dados de diversos formatos, como dBase, Paradox,

Access e outros.

57

Page 70: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

Os objectos de acesso a Base de Dados do Delphi5 permitem

que se automatize diversas tarefas que no passado exigiam um

volume significativo de programação. Por exemplo, em poucos

minutos o aluno poderá criar uma aplicação de entrada ou

manutenção de dados que manipule registos sem precisar escrever

uma só linha de código.

O mais interessante em tudo isto é que os programas poderão

incorporar imagens, listas, memorandos formatados e muito mais.

6.2. Borland Database Engine (BDE)

O BDE é uma ferramenta de 32-bit baseada em Windows que

possibilita conectividade entre as ferramentas da Borland e bases de

dados de vários formatos. Permite configurar vários drivers de base

de dados, criar e remover ODBC drivers, e criar e manter alias para

bases de dados.

Um dos pormenores a ter em atenção quando se utiliza o BDE,

é que quando se efectua uma instalação da aplicação, temos que

instalar também o BDE nos clientes.

É constituído por:

Componente Definição

Core BDE files Ficheiros .DLL essenciais que constituem o BDE.

BDE API functions Conjunto de funções para manuseamento do

ambiente, configuração, sessão, tratamento de

erros, entre outros.

BDE Administrator Ferramenta para configuração do BDE que

permite registar drivers e alias, especificar opções

de formatação de datas, e customização de BDE

drivers.

58

Page 71: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

6. Trabalhando com Bases de Dados

Query engines Permite suporte para a linguagem QBE.

Database drivers Inclui cinco drivers de base de dados standard

(Paradox, dBASE, FoxPro, Access e Texto).

Optional drivers Permite a adição de outros drivers que poderão

ser necessários, incluindo drivers para servidores

InterBase e drivers para SQL nativo, Informix,

Oracle, Sybase e Microsoft SQL Server.

ODBC connectivity Fornece acesso a todas as fontes de dados para

os quais o ODBC se encontra disponível.

6.3. O Database Desktop

O Database Desktop é uma ferramenta de Base de Dados que

permite criar ou reestruturar, navegar e até editar tabelas de Bases

de Dados. Permite trabalhar em vários formatos (dBase, Paradox,

SQL, entre outros).

Vamos analisar em pormenor esta ferramenta11:

1. Carregue a ferramenta que se encontra em Tools. O programa

será iniciado como indica a figura:

11 Para analisar em simultâneo tem de primeiro criar uma ligação ODBC como explicado em 6. Anexos.

59

Page 72: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

Fig. 6.1: DB Desktop

2. Clique na opção Tools na barra de menus e , em seguida, clique

na opção Alias Manager. A caixa de diálogo “Alias Manager”

aparece.

Fig. 6.2: Janela “Alias Manager”

60

Page 73: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

6. Trabalhando com Bases de Dados

Public Alias: Quando esta opção está seleccionada, significa que o

alias (apelido) referente à Base de Dados estará disponível a qualquer

momento dentro do Delphi5, ou seja, ele será publico (public).

DataBase Alias: Nome (ou novo nome) de alias escolhido para a

Base de Dados.

Driver Type: O tipo ou origem da Base de Dados que será

disponibilizado.

Path: O caminho onde a Base de Dados se encontra.

Botão New: Cria e disponibiliza a Base de Dados.

Botão Browse: Usado para procurar o caminho, ou seja, o local

onde se encontra a Base de Dados.

3. Clique em New, e em seguida, digite Biblioteca12 no campo

Database alias.

4. Em “Driver Type” escolha “Microsoft Access Driver

(*.mdb)”.

5. Em “ODBC DSN” escreva “BibliotecaMultimedia”.

12 Biblioteca será o alias (apelido) que será dado à Base de Dados exemplo com o propósito de facilitar a sua localização.

61

Page 74: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

Fig. 6.3: Janela "Alias Manager"

6. Clique no botão OK e, em seguida, clique no botão Sim para

confirmar as alterações realizadas.

Fig. 6.4: Janela "Alias Manager" – cont.

Com isto, a Base de Dados Biblioteca fica disponibilizada para

ser usada em qualquer aplicação Delphi.

6.4. DataAccess e seus componentes

A divisão DataAccess é muito importante pois permite conectar

à base de dados utilizando o BDE. Os componentes mais importantes

são:

Componente Definição

DataBase Encapsula uma ligação persistente à base de

dados.

DataSource Efectua ligação entre um componente do tipo

62

Page 75: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

6. Trabalhando com Bases de Dados

DataSet (Tabelas, Querys, entre outros) e um

componente do tipo data-aware (DataControls).

Query Utiliza comandos SQL para retornar dados de

uma tabela da base de dados e disponibiliza-os

para um ou mais componentes do tipo data-

aware (através do DataSource).

StoredProcedure Permite que uma aplicação aceda a

procedimentos da base de dados.

Table Retorna dados de uma tabela da base de dados e

disponibiliza-os para um ou mais componentes do

tipo data-aware (através do DataSource).

6.5. Propriedades dos componentes

6.5.1. Database

Propriedade Definição

AliasName Especifica um alias usado na conexão.

Connected Indica se uma conexão se encontra activa.

DatabaseName Especifica o nome da base de dados associada ao

componente.

LoginPrompt Especifica se aparecerá uma janela de diálogo

para inserção do userID e password após a

abertura da conexão.

Params Contem parâmetros de conexão para o BDE alias

associado ao componente.

6.5.2. DataSource

Propriedade Definição

AutoEdit Determina se o componente entra em modo de

edição automaticamente quando recebe o focus.

63

Page 76: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

DataSet Especifica o componente do tipo DataSet

(Tabelas, Querys, entre outros) sobre o qual o

componente efectua a ligação.

State Retorna o estado actual do componente (se está

em modo de edição, inserção, entre outros).

6.5.3. Query

Propriedade Definição

Active Especifica se o DataSet se encontra aberta.

DatabaseName Especifica o nome da base de dados associado ao

DataSet.

DataSource Especifica o componente do tipo DataSource de

onde se irá extrair os dados a usar.

Filter Especifica um filtro a actuar sobre o componente.

Filtered Especifica se a filtragem está activa.

Params Contem uma lista com os parâmetros utilizados

no comando SQL.

SQL Contem um comando SQL a ser executado pela

query.

6.5.4. StoredProcedure

Propriedade Definição

Active Especifica se o DataSet se encontra aberto.

DatabaseName Especifica o nome da base de dados associado ao

DataSet.

Filter Especifica um filtro a actuar sobre o componente.

Filtered Especifica se a filtragem está activa.

ParamBindMode Determina a ordem pela qual os parâmetros na

propriedade Params são comparados com os

parâmetros do procedimento remoto. Pode ser

64

Page 77: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

6. Trabalhando com Bases de Dados

por nome ou por número.

Params Contem uma lista com os parâmetros utilizados

no comando SQL.

StoredProcName Indica o nome do procedimento remoto.

6.5.5. Table

Propriedade Definição

Active Especifica se o DataSet se encontra aberto.

DatabaseName Especifica o nome da base de dados associado ao

DataSet.

Filter Especifica um filtro a actuar sobre o componente.

Filtered Especifica se a filtragem está activa.

TableName Indica o nome da tabela da base de dados.

6.6. Métodos dos componentes

6.6.1. Database

Método Definição

Close Fecha a conexão.

Commit Guarda permanentemente todas as alterações,

inserções e remoções efectuadas durante a

transação corrente e termina-a.

Execute Executa um comando de SQL.

Open Abre a conexão.

Rollback Cancela todas as alterações, inserções e

remoções efectuadas durante a transação

corrente e termina-a.

65

Page 78: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

6.6.2. DataSource

Método Definição

Edit Determina se se efectua uma chamada ao

método Edit do DataSet associado.

IsLinkedTo Verifica se o DataSource está ligado a um

DataSet especificado.

6.6.3. Query

Método Definição

ExecSql Executa um comando de SQL.

Prepare Envia previamente o comando de SQL para o BDE

para optimização.

6.6.4. StoredProcedure

Método Definição

ExecProc Executa o procedimento remoto.

Prepare Prepara um procedimento remoto para execução.

6.6.5. Query, StoredProcedure e Table

Método Definição

Append Acrescenta um novo registo vazio no final do

DataSet.

Cancel Cancela alterações efectuadas ao registo actual

que ainda não tenham sido guardadas.

Close Fecha o DataSet.

Delete Elimina o registo activo e posiciona o cursor no

próximo registo.

Edit Permite edição dos dados no DataSet.

First Posiciona o cursor no primeiro registo do DataSet.

66

Page 79: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

6. Trabalhando com Bases de Dados

Insert Insere um novo registo vazio no DataSet.

IsEmpty Indica se o DataSet contem registos.

Last Posiciona o cursor no ultimo registo do DataSet.

Locate Procura no DataSet um registo especifico e torna-

o o registo actual.

Lookup Retorna valores de campos de um registo que

corresponde aos parâmetros de pesquisa.

Next Posiciona o cursor no próximo registo do DataSet.

Open Abre o DataSet.

Post Guarda as alterações efectuadas num registo, na

base de dados.

Prior Posiciona o cursor no registo anterior do DataSet.

Refresh Efectua um refrescamento de dados.

6.7. Eventos dos componentes

6.7.1. Database

Evento Definição

After/BeforeConnect Ocorre antes/depois de uma conexão se

estabelecer.

After/BeforeDisconnect Ocorre antes/depois de uma conexão fechar.

OnLogin Ocorre quando uma aplicação se conecta à

base de dados.

6.7.2. DataSource

Evento Definição

OnDataChange Ocorre quando o registo actual foi editado e a

aplicação move-se de um campo ou registo para

outro.

OnStateChange Ocorre quando o estado do DataSet altera (por

67

Page 80: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

exemplo quando sai do estado de inserção e

passa para o estado de edição).

OnUpdateData Ocorre quando os dados do registo actual vão ser

actualizados.

6.7.3. Query, StoredProcedure e Table

Evento Definição

After/BeforeScroll Ocorre quando uma aplicação navega de um

registo para outro.

OnCalcFields Ocorre quando a aplicação recalcula campos do

tipo calculated.

OnNewRecord Ocorre quando uma aplicação insere ou

acrescenta um novo registo.

6.8. DataControls e seus componentes

A divisão de DataControls permite a utilização de componentes

especializados para tratamento de dados da base de dados. Os

componentes mais importantes são:

Componente Definição

DBCheckBox Mostra e permite edição de um campo do tipo

boleano do registo actual.

DBComboBox Mostra uma lista de valores de uma coluna de

uma tabela.

DBEdit Mostra e permite edição de um valor de um

campo do registo actual.

DBGrid Grelha que permite visualização e edição de

dados de uma forma muito similar a uma folha de

cálculos.

DBNavigator Contem botões que permitem operações sobre

68

Page 81: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

6. Trabalhando com Bases de Dados

registos (como por exemplo, navegação,

inserção, entre outros).

DBText Mostra um valor de um campo do registo actual.

6.9. Propriedades dos componentes

6.9.1. DBCheckBox

Propriedade Definição

Checked Especifica se a check box aparece preenchida por

defeito.

DataField Identifica o campo a mostrar o valor.

DataSource Liga a check box ao DataSet.

6.9.2. DBComboBox

Propriedade Definição

DataField Identifica o campo a mostrar o valor.

DataSource Liga a combo box ao DataSet.

DroppedDown Indica o estado da parte que se encontra

normalmente invisível (se invisível ou visível).

ItemIndex Indica qual o item que se encontra seleccionado.

Items Contem uma lista com as strings visíveis.

SelLength Especifica o tamanho, em caracteres, do texto

seleccionado na caixa de edição.

SelStart Especifica a posição do primeiro caracter

seleccionado na caixa de edição.

SelText Representa o texto seleccionado na região de

edição.

Sorted Determina se os valores visíveis da combo box

estão ordenados alfabeticamente.

Style Determina o tipo de combo box.

69

Page 82: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

Text Contêm uma string associada ao controlo.

6.9.3. DBEdit

Propriedade Definição

DataField Identifica o campo a mostrar o valor.

DataSource Liga o componente ao DataSet.

IsMasked Indica se o controlo possui uma máscara de

edição.

SelLength Especifica o tamanho, em caracteres, do texto

seleccionado na caixa de edição.

SelStart Especifica a posição do primeiro caracter

seleccionado na caixa de edição.

SelText Representa o texto seleccionado na caixa de

edição.

Text Indica o texto apresentado antes de, caso exista,

ter sido aplicada uma máscara.

6.9.4. DBGrid

Propriedade Definição

Columns Descreve os atributos e ligações de campos das

colunas.

DataSource Liga o componente ao DataSet.

SelectedField Especifica o campo da célula actualmente

seleccionada na grelha.

SelectedIndex Especifica o índice da coluna actualmente

seleccionada.

SelectedRows Especifica um conjunto de bookmarks para todos

os registos do DataSet que correspondem às

linhas seleccionadas na grelha.

70

Page 83: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

6. Trabalhando com Bases de Dados

6.9.5. DBNavigator

Propriedade Definição

ConfirmDelete Determina se aparecerá uma mensagem de aviso

para confirmar remoções.

DataSource Liga o componente ao DataSet.

Flat Determina se os botões são 3D.

VisibleButtons Determina quais os botões a aparecer no

controlo.

6.9.6. DBText

Propriedade Definição

DataField Identifica o campo a mostrar o valor.

DataSource Liga o componente ao DataSet.

Transparent Especifica se é transparente.

WordWrap Especifica se há quebras de palavras quando

estas são maiores que o espaço disponível.

6.10. Métodos dos componentes

6.10.1. DBComboBox

Método Definição

Clear Remove todo o texto da caixa de edição e todos

os itens da lista.

6.10.2. DBEdit

Método Definição

Clear Atribui vazio à propriedade Text.

Reset Cancela todos as alterações que não foram

71

Page 84: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

guardadas.

6.10.3. DBGrid

Método Definição

MouseCoord Retorna os índices da linha e coluna da célula que

contem as coordenadas especificadas.

6.11. Eventos dos componentes

6.11.1. DBComboBox

Evento Definição

OnChange Ocorre quando o utilizador altera o texto na caixa

de edição.

OnDrawItem Ocorre quando um item necessita de ser

desenhado.

OnDropDown Ocorre quando o utilizador acciona a lista.

6.11.2. DBEdit

Evento Definição

OnChange Ocorre quando o utilizador altera o texto na caixa

de edição.

6.11.3. DBGrid

Evento Definição

OnCellClick Ocorre quando o utilizador liberta o rato em uma

célula.

OnColEnter Ocorre quando uma célula ganha o focus.

OnColExit Ocorre quando uma célula perde o focus.

72

Page 85: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

6. Trabalhando com Bases de Dados

OnColumnMoved Ocorre quando o utilizador move uma coluna,

utilizando o rato.

OnDrawColumnCell Ocorre quando a grelha necessita de desenhar a

célula.

OnDrawDataCell Ocorre quando a grelha necessita de desenhar a

célula, caso a propriedade estado das colunas for

csDefault.

OnTitleClick Ocorre quando o utilizador liberta o rato em um

dos cabeçalhos das colunas.

6.11.4. DBNavigator

Evento Definição

BeforeAction Ocorre quando um botão é clicado, antes da

acção ser executada.

OnClick Ocorre quando um botão é clicado, depois da

acção ser executada.

6.12. Resumo

Neste capítulo o aluno adquiriu conhecimentos sobre como

trabalhar com base de dados.

Aprendeu conceitos base sobre bases de dados, BDE e

Database Desktop.

Aprendeu ainda quais os principais objectos utilizados para

manipular bases de dados, as suas propriedades, métodos e eventos.

6.13. Exemplos

Antes de começar com os exemplos, crie uma pasta adequada

no seu computador para os guardar. Caso ainda não o tenha feito,

crie a ligação ODBC e o alias para a base de dados fornecida

“Biblioteca Multimédia”.

73

Page 86: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

1. Abra o Delphi.

2. Crie os objectos TDatabase, TTable, TQuery e dois

TDataSource.

3. Crie os objectos TDBNavigator, TDBGrid, Label e TDBEdit.

4. Mude o título da Label para “Formato:”.

5. Em relação aos objectos do DataAccess, mude:

a. No objecto TDatabase:

i. A base de dados para a base de dados fornecida;

ii. Dê um nome ao objecto (por exemplo,

DBBiblioteca).

b. No objecto TTable, indique:

i. Qual a base de dados a que pertence;

ii. A tabela a que se refere – Itens;

iii. Dê um nome ao objecto (por exemplo, TBItens).

c. No objecto TQuery, indique:

i. Qual a base de dados a que pertence;

ii. O comando SQL a executar será: “Select

descricao from formatos where id_formato =

:Formato”.

iii. Especifique o tipo de dados e o tipo de parâmetro.

iv. Dê um nome ao objecto (por exemplo,

QRFormato).

d. Num dos objectos TDataSource, faça a referencia ao

objecto Table, no outro ao objecto Query.

6. Em relação aos objectos do DataControls, indique:

a. que o objecto DBNavigator faz referencia ao objecto

DataSource.

b. No objecto DBGrid, indique:

i. Que faz referencia ao objecto DataSource do

objecto Table;

ii. Liste todos os campos da tabela Itens.

74

Page 87: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

6. Trabalhando com Bases de Dados

c. No objecto DBEdit indique:

i. Que faz referencia ao objecto DataSource do

objecto Query;

ii. Que o campo a mostrar é o “descricao”.

7. No evento OnCreate do formulário abra o objecto tabela.

8. No evento AfterScroll do objecto Table, refaça a pesquisa

efectuada pela Query, em que o parâmetro é o valor do

id_item da tabela.

9. Compile e execute o programa.

10. Teste o exercício.

6.14. Exercícios

1. Abra o Delphi com o projecto que gravou no exercício do

capítulo anterior.

2. Crie um Data Module. Dentro do Data Module crie:

a. Um objecto TDataBase;

b. Três objectos TTable;

c. Três objectos TDataSource;

d. Mude o nome do Data Module para “Tabelas”;

e. Guarde-o com o nome “Unit_Tabelas”.

3. Para o objecto TDatabase, especifique:

a. A base de dados para a base de dados fornecida;

b. Dê um nome ao objecto (por exemplo, DBBiblioteca).

4. Nos objectos TTable, indique:

a. Qual a base de dados a que pertence;

b. A tabela a que cada um se refere:

i. Itens;

ii. Formatos;

iii. Tipos de Dados.

c. Dê um nome ao objecto (por exemplo, TBItens,

TBFormatos, TBTiposDados, respectivamente).

75

Page 88: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

5. Nos objectos TDataSource, faça a referencia aos objectos

TTable.

6. Crie um novo formulário. Mude.

a. o nome do formulário para “Form_Itens”;

b. o titulo para “Itens”;

c. guarde a unit com o nome “Unit_ Itens”.

7. Crie um objecto TDBNavigator, três TDBEdit, dois

TDBLookupComboBox, um TDBMemo, um TDBDateTimePicker e

respectivas Labels.

8. Associe:

a. O objecto TDBNavigator ao TDataSource;

b. Um objecto TDBEdit ao campo “id_item” do “TBItens”;

c. Outro ao campo “titulo”;

d. Outro ao campo “autor”;

e. Um objecto TDBLookupComboBox ao campo

“id_formato”, mas que liste o campo “descricao” da

tabela “Formatos”;

f. Outro ao campo “id_tipoDados”, mas que liste o campo

“descricao” da tabela “Tipos de Dados”;

g. O TMemo ao campo “descricao”;

h. Por último o TDBDateTimePicker ao campo “data”.

9. No evento OnCreate, abra o objecto TBItens.

10. No evento OnClose, feche o objecto TBItens.

11. No formulário “Form_Principal”, no evento OnClick da opção

Itens, escreva o código necessário para chamar o formulário

“Form_Itens”.

12. Compile, resolva os erros resultantes, e execute o programa.

76

Page 89: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

77.. AAnneexxooss

77

Page 90: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

7.1. Como criar uma ligação ODBC para a base

de dados fornecida.

Para criar uma ligação ODBC dirija-se ao “Painel de Controlo”,

opção “Ferramentas Administrativas”.

Fig. 7.1: Ferramentas Administrativas

78

Page 91: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

7. Anexos

Aqui escolha a opção “Origem de Dados(ODBC)”.

Fig. 7.2: Administrador de origem de dados de ODBC

Clique em Adicionar. Irá aparecer uma nova janela onde deve

escolher “Microsoft Access Driver (*.mdb)”.

Fig. 7.3: Criar nova origem de dados

79

Page 92: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

Clique em “Concluir”.

Na janela de configuração que se apresenta (Fig. 7.4), indique

no campo “Nome da origem de dados”, “BibliotecaMultimedia” e

clique em Seleccionar. Indique o caminho no qual guardou a base de

dados fornecida.

Fig. 7.4: Configuração de ODBC para Microsoft Access

Clique em OK.

A ligação já se encontra disponível pelo que se pode verificar na

figura seguinte.

80

Page 93: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

7. Anexos

Fig. 7.5: Administrador de origem de dados de ODBC

81

Page 94: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

7.2. Resolução dos exemplos

7.2.1. Capítulo 3

2.a)

1. Clique no formulário;

2. Tecle F11;

3. Na propriedade Height escreva 115.

2.b) Se o objecto seleccionado for o formulário salte para 3.

1. Clique no formulário;

2. Tecle F11;

3. Na propriedade Width escreva 280.

2.c) Se o objecto seleccionado for o formulário salte para 3.

1. Clique no formulário;

2. Tecle F11;

3. Na propriedade Caption escreva “Exemplo1”.

3. Dirija-se á palete de objectos, divisão Standard, objecto

(Label) e clique no formulário.

4.a)

1. Clique na label;

2. Tecle F11;

3. Na propriedade Caption escreva o seu nome.

4.b) Se o objecto seleccionado for a Label salte para 3.

1. Clique na Label;

2. Tecle F11;

3. Na propriedade Width escreva aumente 200 pixels ao valor

indicado.

4.c) Se o objecto seleccionado for a Label salte para 3.

1. Clique na Label;

2. Tecle F11;

3. Na propriedade Font clique em “...”; Altere o tipo de letra

para Verdana.

82

Page 95: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

7. Anexos

4.d) Se o objecto seleccionado for a Label salte para 3.

1. Clique na Label;

2. Tecle F11;

3. Na propriedade Font clique em “...”; Altere a cor para

Mogno.

5. Dirija-se á palete de objectos, divisão Standard, objecto

(Button) e clique no formulário.

6. Se o objecto seleccionado for o botão salte para 3.

1. Clique no botão;

2. Tecle F11;

3. Na propriedade Caption escreva “OK”.

7. Dirija-se á palete de objectos, divisão Standard, objecto

(BitBtn) e clique no formulário. Na propriedade Kind escolha

bkClose.

8. Se o objecto seleccionado for o botão salte para 3.

1. Clique no botão;

2. Tecle F11;

3. Na propriedade Hint escreva uma pequena frase ou palavra

descritiva.

9. Clique no botão .

83

Page 96: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

7.2.2. Capítulo 4

2.

3. Dirija-se á palete de objectos, divisão Standard, objecto

(Button) e clique no formulário. Repita os passos para os objectos

(Label) e (Edit).

3.a) Se o objecto seleccionado for a Label salte para 3.

1. Clique na label;

2. Tecle F11;

3. Na propriedade Caption escreva “Idade:”.

3.b) Se o objecto seleccionado for o Edit salte para 3.

1. Clique no Edit;

2. Tecle F11;

3. Na propriedade Name escreva “EIdade”.

4. Se o objecto seleccionado for o Button salte para 3.

1. Clique no Button;

2. Tecle F11;

3. Na divisão Events faça duplo clique em OnClick, irá ser

automaticamente redireccionado para o Code Editor.

4.

84

Page 97: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

7. Anexos

5. Dirija-se á palete de objectos, divisão Standard, objecto

(MaskEdit) e clique no formulário.

1. Tecle F11;

2. Na propriedade EditMask Clique em “...”;

3. No campo “Input Mask” escreva “AAAAAAAA”.

6.

7. Dirija-se á palete de objectos, divisão Standard, objecto

(MainMenu) e clique no formulário.

1. Faça duplo clique seguido de F11;

2. Na propriedade Caption escreva “&Preencher Vector”.

3. Clique no quadrado ao lado. Caso a janela Object Inspector

não se encontre visível, prime de F11.

4. Na propriedade Caption escreva “&Calcular Média”.

85

Page 98: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

5. Repita as duas ultimas alíneas mas troque “&Preencher

Vector” por “&Pesquisa”.

6. No evento OnClick da opção “Preencher Vector” escreva a

linha de código:

PreencherVector;

7. No evento OnClick da opção “Calcular Média” escreva a linha

de código:

ShowMessage('A média das idades é ' +

FloatToStr(CalculaMedia));

8. No evento OnClick da opção “Pesquisa” escreva a linha de

código:

Pesquisa;

86

Page 99: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

7. Anexos

7.2.3. Capítulo 5

2. Dirija-se á palete de objectos, divisão Standard, objecto

(Button) e clique no formulário. Repita os passos para o outro botão e

para o objecto (Memo). Na divisão Dialogs, encontra o objecto

(SaveDialog).

3. Se o objecto seleccionado for o Button salte para 3.

1. Clique no Button;

2. Tecle F11;

3. Na propriedade Caption escreva “Guardar Linha a Linha”;

4. Seleccione o outro botão;

5. Tecle F11;

6. Na propriedade Caption escreva “Guardar em Linha”.

4. Se o objecto seleccionado for o Button com título “Guardar

Linha a Linha” salte para 3.

7. Clique no Button;

8. Tecle F11;

9. Na propriedade Name escreva “BtnGuardarLL”;

10. Seleccione o outro botão;

11. Tecle F11;

12. Na propriedade Name escreva “BtnGuardarL”;

5. Para concatenar strings, pode-se utilizar a função Concat ou ‘+’.

87

Page 100: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

6.

7.

8.

88

Page 101: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

7. Anexos

7.2.4. Capítulo 6

2. Dirija-se á palete de objectos, divisão DataAccess, objecto

(Database) e clique no formulário. Repita os passos para o objecto

(Table), (Query) e (DataSource). Repita o processo para

o objecto DataSource.

3. Dirija-se á palete de objectos, divisão DataControls, objecto

(DBGrid) e clique no formulário. Repita os passos para o objecto

(DBNavigator) e (DBEdit). Dirija-se á divisão Standard, objecto

(Label).

4. Se o objecto seleccionado for a Label salte para 3.

1. Clique no formulário;

2. Tecle F11;

3. Na propriedade Caption escreva “Formato:”;

5. Para que o Delphi não peça password, coloque a propriedade

LoginPrompt do objecto DataBase a False.

5.a)

I) Se o objecto seleccionado for a Database salte para 3.

1. Clique na Database;

2. Tecle F11;

3. Na propriedade AliasName escolha “Biblioteca”.

4. Na propriedade DatabaseName escolha “Biblioteca”.

II) Se o objecto seleccionado for a Database salte para 3.

1. Clique na Database;

2. Tecle F11;

3. Na propriedade Name escolha “DBBiblioteca”.

5.b)

I) Se o objecto seleccionado for a Table salte para 3.

1. Clique na Table;

89

Page 102: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

2. Tecle F11;

3. Na propriedade DatabaseName escolha “Biblioteca”.

II) Se o objecto seleccionado for a Table salte para 3.

1. Clique na Table;

2. Tecle F11;

3. Na propriedade TableName escolha “Itens”.

III) Se o objecto seleccionado for a Table salte para 3.

1. Clique na Table;

2. Tecle F11;

3. Na propriedade Name escolha “TBItens”.

5.c)

I) Se o objecto seleccionado for a Query salte para 3.

1. Clique na Query;

2. Tecle F11;

3. Na propriedade DatabaseName escolha “Biblioteca”.

II) Se o objecto seleccionado for a Query salte para 3.

1. Clique na Query;

2. Tecle F11;

3. Na propriedade SQL escreva o comando “SELECT * FROM

formatos WHERE id_formato = :Formato”.

III) Se o objecto seleccionado for a Query salte para 3.

1. Clique na Query;

2. Tecle F11;

3. Na propriedade Params clique em “...”;

4. Seleccione o parâmetro;

5. Na propriedade DataType escolha “ftFloat”;

6. Na propriedade ParamType escolha “ptInput”;

IV) Se o objecto seleccionado for a Query salte para 3.

1. Clique na Query;

2. Tecle F11;

3. Na propriedade Name escolha “QRFormato”.

5.d) Se o objecto seleccionado for um dos DataSources salte para 3.

90

Page 103: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

7. Anexos

1. Clique na DataSource;

2. Tecle F11;

3. Na propriedade DataSet escolha “DBItens”.

4. Clique no outro DataSource;

5. Tecle F11

6. Na propriedade DataSet escolha “QRFormato”.

6.a) Se o objecto seleccionado for a DBNavigator salte para 3.

1. Clique na DBNavigator;

2. Tecle F11;

3. Na propriedade DataSource escolha o objecto do tipo

DataSource.

6.b)

I) Se o objecto seleccionado for a DBgrid salte para 3.

1. Clique na DBGrid;

2. Tecle F11;

3. Na propriedade DataSource escolha o objecto do tipo

DataSource.

II) Se o objecto seleccionado for a DBgrid salte para 3.

1. Clique na DBGrid;

2. Tecle F11;

3. Na propriedade Columns clique em “...”; Aparecerá a janela

de edição.

Fig. 7.6: Janela de edição de colunas

91

Page 104: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

Instituto Superior de Engenharia do Porto

4. Clique no botão (Adicionar novo) tantas vezes quantas o

número de campos a listar (sete).

5. Seleccione o primeiro. Na propriedade FieldName escolha

id_item.

6. Repita o passo anterior para todos os campos.

6.c)

I) Se o objecto seleccionado for o DBEdit salte para 3.

1. Clique no DBEdit;

2. Tecle F11;

3. Na propriedade DataSource escolha o objecto do tipo

DataSource correspondente.

II) Se o objecto seleccionado for o DBEdit salte para 3.

1. Clique no DBEdit;

2. Tecle F11;

3. Na propriedade DataField escolha “descricao”.

7. Se o objecto seleccionado for o formulário salte para 3.

1. Clique no formulário;

2. Tecle F11;

3. Na divisão Events faça duplo clique em onCreate, irá ser

automaticamente redireccionado para o Code Editor.

4. Escreva:

8. Se o objecto seleccionado for a table salte para 3.

1. Clique na Table;

2. Tecle F11;

3. Na divisão Events faça duplo clique em AfterScroll, irá ser

automaticamente redireccionado para o Code Editor.

4. Escreva:

92

Page 105: Projecto: Curso de e-learning sobre Delphi 5paf/proj/Set2003/Delphi5.pdf · lectivo do curso de Engenharia Informática ministrado pelo Instituto Superior de Engenharia do Porto,

7. Anexos

93