38
APOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

apostila delphi 2006 ds1 - · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

  • Upload
    buihanh

  • View
    261

  • Download
    1

Embed Size (px)

Citation preview

Page 1: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

APOSTILA

Programação de

Computadores – I (Delphi)

ETEC Prof. Terezinha Monteiro dos Santos

Taquarituba – SP

2º sem - 2010

Page 2: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

2

Paradigmas da Programação

"Paradigma é uma forma de pensar e perceber o mundo real e determina o que escolhemos como significativo e o que descartamos ao compreender ou descrever o que existe ou ocorre no mundo em torno de nós".

A mudança de paradigma é uma oportunidade de encontrar novas interpretações para antigas questões, bem como, para rever soluções tidas como definitivas. Introdução

Antes de começarmos seria interessante ressaltar que aprender a ser um bom desenvolvedor envolve mais do que aprender a sintaxe de uma linguagem de programação em particular, isto porque existem muitos outros aspectos do campo do sw, que têm pouca conexão com o ato em si de escrever código.

Se você pode está pensando: "Ora, vamos, eu só quero aprender Delphi", deveria também pensar que a questão aqui é que, se você pretende desenvolver sw por dinheiro ou para manter-se num emprego, e tem clientes ou chefes esperando que seu sw:

Saia funcionando da caixa, Seja feito a tempo, Seja livre de erros e Seja barato,

Então, vamos ter que começar por aqui mesmo, comentando sobre problemas como a crise de sw; o ciclo de vida e a engenharia de sw porque apenas talento artístico indisciplinado (intuição) não resolve.

Devemos nos lembrar que o objetivo mais direto do desenvolvimento de sw é fazer o

produto final satisfazer a especificação dos requisitos. Precisamos portanto, dividir isso em algo mais tratável. Algum grupo menor ou mais preciso de objetivos que sejam mais alcançáveis e fáceis de lembrar.

Lembre-se de que se tem algo que é sempre permanente é a mudança. Conforme sabemos, uma aplicação passará a maior parte de seu ciclo de vida na fase de manutenção. Então, é importante termos um conjunto de objetivos que transceda a mudança.

Entre outros, os quatro objetivos geralmente excluídos da engenharia de software são a capacidade de modificação, eficiência, confiabilidade e inteligibilidade. Devemos também destacar a ergonomia.

Page 3: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

3

Programação Procedimental

A maior parte dos programadores está acostumada a escrever código que é executado de forma sequencial. Tais programas possuem inicio, meio e fim bem definidos. Tipicamente, estes programas possuem telas de entradas de dados de algum tipo de processamento com estes dados de forma sequencial. Esta forma de se programar é dita procedimental. A figura 1 ilustra a sequencialidade encontrada em programas que seguem tal paradigma.

Esta forma de programar é uma conseqüência direta dos sistemas computacionais disponíveis no passado. Estes sistemas eram compostos por uma CPU responsável pelo processamento (mestre) e uma série de periféricos (escravos), responsáveis pela entrada e saída de dados.

O custo da CPU era nitidamente superior ao de qualquer periférico e até mesmo ao custo do trabalho de quem lidava com estes computadores. Consequentemente, todos os sistemas davam prioridade máxima ao processamento, em relação à entrada e saída de dados.

Os programas desenvolvidos visavam normalmente a solução de problemas de natureza científica, que naturalmente requisitavam mais recursos de CPU do que de entrada e saída de dados.

A popularização dos computadores modificou este quadro: as aplicações comerciais típicas dos dias de hoje exigem uma atenção maior dos programadores (e dos sistemas computacionais) para a entrada e saída de dados.

A hierarquia rígida imposta pela estrutura de menus e a sequencialidade com que os formulários são preenchidos pelo usuário impõem limitações sérias na qualidade da interação do usuário com o computador na programação procedimental.

Início

Entrada de Dados

Processamento

Fim

Page 4: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

4

Um exemplo não baseado em eventos

Program Verif_Nome;

Var Nome : String;

Begin

Write ('Digite um nome: ');

Readln (Nome);

If Nome = 'Ze Silva' then

writeln ('Nome bem original cara')

else

writeln ('O que poderia dizer');

End.

Note que o fluxo do programa é bem definido. Primeiramente ele pergunta o nome do

usuário. Agora, você pode esperar que o usuário introduza seu nome, e não precisa se preocupar com nenhuma outra entrada ou ação que ocorra no ambiente.

Depois que o nome é informado, uma instrução if define o que o programa deve fazer em seguida e o programa termina. A lógica deste programa linear é direta e sequencial. O modelo baseado em eventos não pode utilizar controle de fluxo do início até o fim, pois o aplicativo deve manipular todas as ações ou eventos possíveis

Programação Orientada a Eventos

Um aplicativo baseado em eventos, na verdade, não faz nada - a não ser que ocorra um evento. É isso mesmo, ele não tem um início ou final lógico. Ele simplesmente precisa saber como responde aos diferentes tipos de eventos. Isto não quer dizer que você não pode ter um evento que ocorra quando o programa começa ou quando vai se fechar; entretanto, você precisa pensar sobre seu modelo de programação de modo diferente.

No exemplo anterior, você sabia exatamente que ações o usuário executaria - digitar um nome. Contudo, pense em aplicativo processador de textos baseado no Windows. Não há meios de saber se o usuário digitará uma frase, escolherá uma opção no menu ou dará um clique em um botão, na barra de atalho. Independentemente da ação que o usuário executa, o aplicativo precisa ser consistente o suficiente para responder ao evento.

A idéia básica por trás da programação dirigida a eventos é que alguns eventos determinam o fluxo do aplicativo. Um programa gasta a maior parte de seu tempo aguardando eventos e tem código que responde a diversos deles (nem todos, já que normalmente um programa ignora eventos nos quais não tem interesse). Por exemplo, quando o usuário dá um clique em um dos botões do mouse, ocorre um evento. É enviada uma mensagem descrevendo esse evento para a janela que está sob o cursor do mouse no momento. A aplicação intercepta a mensagem e chama o método associado ao evento correspondente. Quando o metodo termina, o programa retorna a um estado de espera.

Como a explanação acima demonstra, eventos são serializados; cada evento é manipulado somente após o anterior ter sido completado. Quando uma aplicação está executando código de resposta ao evento (ou seja, não está aguardando um evento), outros eventos para essa aplicação devem aguardar em uma fila reservada de multitarefa gerenciada através de um manipulador de eventos.

Ações Sistema Eventos

Page 5: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

5

O avanço da tecnologia barateou o custo dos sistemas computacionais e introduziu recursos gráficos para a

interação com os usuários (GUI- Graphic User Interface).

Uma aplicação que se utiliza de interface gráfica, permite que o usuário decida a seqüência mais apropriada de interação. Esta abordagem muda completamente a forma de se construir programas.

As interfaces gráficas introduziram assim uma forma completamente nova de se programar. Nesta abordagem, uma aplicação constitui-se de um loop para tratamento de eventos e de procedimentos associados a eventos específicos. Toda vez que ocorre um determinado evento, o seu procedimento equivalente é executado. Eventos acontecem em decorrência da interação do usuário com o sistema, gerados pelo sistema operacional ou ainda gerados na própria aplicação. Exemplos de eventos: mover o mouse, pressionar uma tecla, selecionar um ítem de menu, setar o foco para um determinado controle, etc.

A cada ação do usuário corresponde um ou mais eventos “enviados” para a aplicação. Estes eventos devem ser identificados e tratados de maneira adequada pelo programa. Esta abordagem é conhecida como programação orientada a eventos.

As interfaces gráficas tornaram a interação dos usuários com as aplicações bastante atraentes. Em compensação, introduziram uma complexidade enorme do ponto de vista de programação. Para se ter uma idéia, o código em linguagem C no windows para escreve na tela “Alô mundo” possui cerca de 100 linhas.

Se acrescentarmos a isto o fato de que 80% do código escrito para uma aplicação é consumido na elaboraçào de interface, fica difícil de massificar a programação em ambientes de interface gráfica.

Felizmente, o paradigma da orientação a objetos consegui esconder do programador a maior parte da complexidade da programação nestes ambientes.

Loop de Tratamento dos Eventos

Page 6: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

6

IDE

O ambiente de desenvolvimento do Delphi é composto de várias ‘partes’ compondo um conjunto integrado de ‘janelas’ que interagem entre si.

Vamos abordar cada uma separadamente:

O FORM DESIGN

Form é o termo utilizado para representar as janelas do Windows que compõem uma aplicação. Os forms servem como base para o posicionamento dos componentes, que são responsáveis pela interação entre usuário e máquina.

Para selecionarmos o form devemos clicar (uma vez) em sua área interna ou na object inspector, e não simplesmente em seu título. As características iniciais do form como tamanho, botões (minimizar, maximizar, fechar,

controle) e ícone podem (e serão) ser modificadas através de recursos que veremos adiante.

Page 7: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

7

A BARRA DE MENU PRINCIPAL

Como todo programa padrão Windows, há uma janela onde estão situados os menus da aplicação, a barra que contem os menus também agrupa outras partes.

A PALETA DE COMPONENTES

Aplicativos orientados a objetos trabalham com elementos que denominamos componentes. No Delphi, os componentes encontram-se em uma paleta com várias guias.

OBJECT INSPECTOR

Uma das ‘partes’ mais importantes da orientação a objeto é a possibilidade de definir características personalizadas aos componentes.

No Delphi, utilizamos a janela object inspector para realizar esta tarefa. Há uma caixa de listagem1 que permite a escolha de qual componente deverá ser selecionado.

Duas guias: Properties – Define as propriedades e valores do Objeto selecionado. Events – Define quais os eventos serão manipulados pelo desenvolvedor. 1 Componente ComboBox.

Objeto atual selecionado

Propriedade

Valor atual desta propriedade

Page 8: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

8

Algumas propriedades trazem opções diferenciadas para alteração. Por exemplo: Caption – Permite a inserção de uma string de caracteres. Color – Permite a inserção de um dos valores pré-definidos na caixa de listagem. BorderIcons – Toda propriedade que possui o sinal de + tem a característica de mostrar subpropriedades. Deve-se clicar no sinal de + para expandir e no sinal de – para ocultar. Icon – Exibe um botão de reticências (...) que dará origem a uma caixa de diálogo.

Os nomes definidos como valores das propriedades na object inspector serão os nomes usados na construção do código em Object Pascal.

Na parte superior da janela há uma caixa de listagem que permite a seleção de componentes já inseridos no formulário. Duas guias (Properties e Events) separam as listas de propriedades e eventos. As propriedades são definidas através de tipos. Podemos citar no exemplo com o objeto form:

Tipos Simples São tipos String ou valores numéricos definidos ao digitar um valor na frente da

propriedade. Exemplo: Name, Caption, Height e Width entre outros.

Tipos Enumerados São tipos definidos por uma quantidade limitada de opções que devem ser previamente

selecionadas, não simplesmente definidas pelo usuário. Exemplo: Cursor, BorderStyle e WindowState entre outros.

Page 9: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

9

Tipo Set Algumas propriedades podem conter múltiplos valores. Um exemplo é a propriedade

BorderIcons com o sinal + indicando subpropriedades.

Tipos com Editor de Propriedades As propriedades que são acompanhadas de um ícone de reticências (...) indicam que

uma janela de diálogo irá auxiliar na escolha de seu(s) valor(es). Exemplo: Icon.

Manipulando Eventos A guia Events permite o desenvolvedor definir um handler2 em Object Pascal para um

determinado evento que pode ser disparado pelo usuário ou pelo sistema. Um evento é uma ação disparada dentro de uma aplicação orientada a Objeto. Podemos

citar as ocorrências dos principais eventos que são disponibilizados na maioria dos componentes em Delphi:

Evento Ocorrência

OnClick Quando o usuário clicar uma vez com o botão esquerdo do mouse sobre o componente.

OnDblClick Quando o usuário dá um duplo clique no componente com o botão esquerdo do mouse.

OnEnter Quando o componente recebe o foco. OnExit Quando o componente perde o foco. OnKeyPress Quando pressiona uma única tecla de caractere.

Observe a construção do procedimento criado pelo próprio Delphi:

2 Manipulador de evento

Page 10: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

10

procedure TForm1.Button1Click(Sender: TObject);

begin

end;

CODE EDITOR

O editor de código é responsável por receber todas as declarações criadas pelo Delphi e handlers

3 criados pelo desenvolvedor. E no ambiente Code Editor que implementamos o algoritmo na linguagem Object

Pascal.

Na janela do editor pode haver uma outra janela denominada Code Explorer. É a parte esquerda da janela, onde podemos ter uma orientação sobre os objetos, procedimentos, funções e classes utilizadas na aplicação. Para desligar o code explorer clique no pequeno X ao lado da guia do code editor, para visualiza-lo clique com o botão direito dentro do editor e escolha View Explorer ou pelo teclado Ctrl+Shift+E.

Uma característica muito importante do Code Explorer é que quando inserirmos componentes no form, a sua declaração é feita pelo Delphi de maneira automática.

3 Manipulador de eventos.

Code Explorer

Code Editor Name do form que define uma nova classe

Page 11: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

11

Podemos considerar também o seguinte fato: ‘Tudo o que o Delphi escrever, é problema dele’.

Agora, ‘Tudo o que você escrever é problema seu’.

Problema no sentido de atualização de código, como veremos adiante. Quando alteramos o nome do objeto, deve-se utilizar o mesmo nome nas rotinas implementadas. Agora, o que o Delphi declarou, ele se encarrega de atualizar.

Pode-se personalizar o Editor através do menu Tools | Editor Options.

CODE INSIGHT

Um recurso que vai facilitar nossa vida no momento de desenvolvimento de código é o Code Insight do Code Editor do Delphi.,

Ele atua como um ajudante de complemento junto ao código do desenvolvedor. Por

exemplo, ao digitar o nome de um objeto seguido de ponto (.) abre-se uma listagem de métodos e propriedades que podem ser utilizadas neste objeto.

Esta lista pode ser ordenada por nome, clicando com o botão direito dentro da listagem.

No momento de chamada de procedimentos ou métodos:

Page 12: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

12

Para forçar o code insight em determinada situação, utiliza-se: • Ctrl + Barra de Espaço - Para complemento de objetos; seus métodos e

propriedades. • Ctrl + Shift + Barra de Espaço – Para complemento de parâmetros.

Page 13: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

13

PROJETO EM DELPHI

O conceito de projeto em Delphi é baseado em um conjunto de arquivos necessários para gerar uma aplicação.

Vamos destacar os principais arquivos:

Extensão Tipo e descrição Criação Necessário para

compilar?

.PAS

Arquivo Pascal: o código-fonte de uma unidade Pascal, ou uma unidade relacionada a um formulário ou uma unidade independente.

Desenvolvimento Sim.

.DPR Arquivo Delphi Project. (Contém código-fonte em Pascal.)

Desenvolvimento Sim.

.DFM

Delphi Form File: um arquivo binário (na versão 5 pode ser convertido para texto) com a descrição das propriedades de um formulário e dos componentes que ele contém.

Desenvolvimento Sim. Todo formulário é armazenado em um arquivo PAS e em um arquivo DFM.

.DCU

Delphi Compiled Unit: o resultado da compilação de um arquivo Pascal.

Compilação Apenas se o código-fonte não estiver disponível. Os arquivos DCU para as unidades que você escreve são um passo intermediário; portanto, eles tornam a compilação mais rápida.

.BMP, .ICO,

.CUR

Arquivos de bitmap, ícone e cursor: arquivos padrão do Windows usados para armazenar imagens de bitmap.

Desenvolvimento: Image Editor

Normalmente não, mas eles podem ser necessários em tempo de execução e para edição adicional.

.CFG

Arquivo de configuração com opções de projeto. Semelhante aos arquivos DOF.

Desenvolvimento Necessário apenas se opções de compilação especiais foram configuradas.

.DOF Delphi Option File: um arquivo de texto com as configurações atuais para as opções de projeto.

Desenvolvimento Exigido apenas se opções de compilação especiais foram configuradas.

.DSK

Arquivo de Desktop: contém informações sobre a posição das janelas do Delphi, os arquivos abertos no editor e outros ajustes da área de trabalho.

Desenvolvimento Não. Você deve excluí-lo se copiar o projeto em um novo diretório.

.EXE

Aquivo executável: o aplicativo Windows que você produziu.

Compilação: Ligação (linking)

Não. Esse é o arquivo que você vai distribuir. Ele inclui todas as unidades compiladas, formulários e recursos.

.~PA

Backup do arquivo Pascal Pode ser ativado ou desativado através do Menu Tools – Editor Options - guia

display – Item: Create backup file.

Desenvolvimento Não. Esse arquivo é gerado automaticamente pelo Delphi, quando você salva uma nova versão do código-fonte.

.TODO Arquivo da lista to-do, contendo os itens relacionados ao projeto inteiro.

Desenvolvimento Não. Esse arquivo contém notas para os programadores.

Page 14: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

14

O Delphi possui um mecanismo de gerência de arquivos de projeto informando os principais arquivos e seu path. Clique em View – Project Manager

A figura acima é um exemplo de um projeto inicial, ainda não salvo. O diretório padrão para criação dos arquivos é projects, obviamente devemos definir na gravação pasta e nomes de arquivos mais específicos.

.PAS E .DPR

Para visualizarmos o código fonte da unidade (.PAS) em Delphi basta selecionarmos o code editor (F12).

Para visualizarmos o código fonte no arquivo de projeto (.DPR) basta selecionarmos o menu Project – View Source. O arquivo de projeto é exibido em uma guia no code editor.

Para fechar a guia basta clicar com o botão direito e escolher close page.

Unidades

Existem três tipos de unidades: unidades associadas aos formulários (as mais comuns), arquivos de unidade usados para armazenar funções e procedures, e arquivos de unidade usados para construir componentes.

Vamos ver una unidade básica associada a um formulário:

Unit Unit1;

Interface

uses

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

Dialogs;

Type

Page 15: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

15

O código acima, junto com o código de arquivo de projeto, é tudo de que precisa no Delphi para criar um executável que abre uma janela. Ele não fará muita coisa nesse ponto, mas é um programa Windows funcional, na sua forma mais simples.

Veja os nomes na cláusula uses, do código acima. Trata-se dos nomes de outras unidades. Se você decidisse escrever várias funções e procedures úteis, poderia criar sua unidade, colocar todo seu trabalho útil nela e compilá-la para uso futuro. Vamos ver as partes que constitui a unidade:

Cabeçalho da unidade - Um cabeçalho de unidade identifica o código como uma unit e é seguido pelo nome.

Interface - Marca o início da parte unit interface, que é usada para declarar variáveis, tipos, procedures, etc. A parte interface determina o que nessa unidade está disponível para outras unidades e partes do programa. A parte interface termina com o início da parte implementation.

Uses - A cláusula uses informa ao compilador quais bibliotecas de funções e procedures precisam ser compiladas no executável final. O Delphi coloca, automaticamente, várias delas lá para você.

Tform1 = class(Tform)

procedure FormCreate(Sender: Tobject);

private

{Declarações privativas}

public

{Declarações públicas}

end;

var

Form1: Tform1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: Tobject);

begin

end;

end.

Page 16: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

16

Type - A seção de declaração type é usada para a criação de tipos definidos pelo usuário. Esses tipos pode, então, ser usados para definir variáveis.

Especificadores de visibilidade vêm após a cláusula type na parte da interface. Os seguintes especificadores são usados para controlar como os objetos aparecem para outros programas e objetos:

Private - As declarações nessa seção são tratadas como públicas dentro do módulo, mas serão desconhecidas e não acessíveis fora da unidade.

Public - As declarações nessa seção são visíveis e acessíveis fora da unidade.

Var - Usado para declara varáveis e variáveis de objeto. Em uma unidade de formulário, var é usado na parte de interface (o Delphi coloca essa declaração para você) para declarar o formulário como uma instância do objeto Tform. Var também é usado para declarar variáveis na parte de implementação, assim como em procedures e funções.

Implementation - É onde todas as funções e procedures que foram declaradas na parte interface serão realmente colocadas. Todas as declarações feitas aqui são privativas da unidade (não disponíveis para as outras unidades).

{$R *.DFM) - Em uma unidade de formulário. O Delphi insere essa entrada para você. Ela liga o formulário ao seu arquivo.dfm. Não remova isso de seu programa, ou você terá problemas.

O bloco de código a seguir é executado quando seu formulário é criado. Você deve colocar aqui, todo o código de inicialização que precise ser executado quando o formulário começar a ser carregado. Para criar essa procedure, use o Object Inspector para ver o menu Events do formulário e, depois, dê um click duplo no evento OnCreate.

End. - É o end final, significa o final de sua unidade.

É importante manter os cabeçalhos, as cláusulas, etc no lugar correto. O Delphi cuida muito bem disso para você, pois ele cria a unidade e o código à medida que são feitas alterações no formulário. Você simplesmente insere seu código na seção correta, conforme for necessário.

OPÇÕES DE PROJETO O Delphi permite a configuração de vários itens do sistema através do menu Project – Options.

Page 17: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

17

Forms • Main form - Nesta guia permite a escolha do formulário principal da aplicação. • Available form - Os formulários available (disponíveis) em caso de criação em tempo de

execução.

Application • Title - Define um nome para a sua aplicação diferente do nome do arquivo de projeto

(.DPR). • Help file – Define o nome do arquivo de Help (.HLP) associado à aplicação. • Icon – Define o ícone utilizado no arquivo executável. (.EXE)

Compiler • Estas opções permitem especificar uma compilação personalizada, ou seja, cada projeto

pode ser compilado com uma característica.

Linker • Estas opções incluem informações para a depuração.

Directories/Conditionals • Nesta guia pode-se configurar o diretório de saída para os arquivos gerados pela

aplicação. Version Info

• Estas informações podem ser visualizadas no Windows através do menu rápido do mouse no arquivo executável.

Packages • Os packages permitem um controle de distribuição através de DLL’s básicas externas ao

executável entre outros recursos.

CONVENÇÃO DE NOMEAÇÃO A propriedade mais importante de um componente é a propriedade Name. É ela que define o nome interno com relação ao código escrito em Object Pascal. Para organizar e facilitar o processo de desenvolvimento/manutenção do sistema, grande parte dos desenvolvedores

adota uma nomenclatura para tornar o código mais legível possível.

O Delphi adota como nomenclatura padrão o nome da classe da qual o componente é instanciado e um número crescente de acordo com o número de ocorrência deste componente no form. Exemplo: Button1, Button2, etc... são componentes instanciados da classe TButton .

Não é obrigatória a utilização da convenção de nomes utilizados nesta apostila, mas é

muito importante fazer uso de uma convenção mais clara possível.

Page 18: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

18

Exemplo:

Nome gerado pelo Delphi Objetivo Convenção

Button1 Sair da aplicação BtnSair Edit1 Receber nome do usuário EdtNome Label1 Indicar componente Edit LblNome

A Lista de Units

A janela de lista de units permite que você alterne entre as units que fazem parte do projeto ativo, sem que elas tenham de estar todas abertas no editor de código. Caso você selecione uma unit que não esteja aberta, o Delphi a abrirá e mostrará no Code Editor.

Figura 31 – A Lista de Units

A lista de units pode ser ativada através do menu View, opção Units..., ou através do primeiro ícone inferior da SpeedBar ou através da combinação das teclas <Ctrl> <F12>. A Lista de Forms

A janela de lista de forms permite, de forma análoga à de lista de units, que você alterne entre os forms que fazem parte do projeto ativo, sem que eles tenham de estar todos abertos. Caso você selecione um form que não esteja aberto, o Delphi o abrirá e mostrará para edição no Form Designer.

Page 19: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

19

A Lista de Janelas

A janela de lista de janelas do ambiente, embora menos utilizada do que as de lista de units e forms, apresenta uma forma rápida de encontrar-se uma janela, que esteja escondida atrás de muitas outras.

A lista de janelas pode ser ativada através do menu View, opção Window List..., ou através da combinação das teclas <Alt> <0>.

COMENTÁRIOS

Os comentários no código fonte são importantes e podem ser feitos através dos seguintes símbolos: //Comentário de linha { Comentário de bloco } (*Comentário de bloco *)

COMPONENTES

Agora definiremos resumidamente os principais componentes do Delphi, bem como as suas principais propriedades e eventos. Logicamente, este material não se constitui num manual dos componentes do Delphi, mas sim visa introduzir o programador nos recursos disponíveis.

Antes de iniciarmos as discussões sobre os componentes, iremos nos ater à explicação de algumas peculiaridades das propriedades dos componentes. O primeiro ponto a ser observado, está no fato de que algumas propriedades só são acessíveis em tempo de execução. Quando acontecer tal fato, chamaremos atenção a esse respeito.

Finalmente, existem propriedades onde o Delphi incorpora um construtor de valores. Para estes casos, aparece um botão com reticências no canto da coluna valor, do Object Inspector, isto quando a propriedade é selecionada. Para abrir o construtor de valores basta um clique neste botão, ou um duplo clique na propriedade.

É bom lembrar que ao criarmos uma aplicação, um dos detalhes mais importantes que devem ser considerados é a interface com o usuário. Porque se ela for feia ou difícil de ser entendida será mal usada e isto é a linha que divide o sucesso do fracasso no ramo de software.

O que se segue é uma referência dos componentes de interface mais utilizados. Vamos considerar alguns objetos e suas principais propriedades, métodos e eventos.

Page 20: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

20

Principais Eventos

Os eventos recaem em três categorias: de Mouse, de teclado, ou de Sistema. A maioria dos componentes possui um evento padrão. Para verificar isso dê um duplo clique sobre o componente no formulário.Os três eventos padrão são OnChange, OnClick e OnCreate, nesta ordem.

Se um componente não responder a nenhum deles, significa que ele não possui evento padrão.

Verificação: Dê um duplo clique na área do formulário e terá seu evento padrão, depois faça o mesmo no Label. Insira um Edit e dê um duplo clique.

Evento Descrição OnChange Acontece quando o objeto ou seus dados mudam OnClick Clique simples do mouse sobre o componente ou Enter no componente OnDblClick Duplo clique do mouse sobre o componente OnEnter Ocorre quando o componente recebe foco OnExit Ocorre quando o componente perde foco OnMouseDown O botão do mouse é pressionado sobre o componente OnMouseMove O ponteiro do mouse passa sobre o componente OnMouseUp O botão do mouse é liberado sobre o componente OnKeyDown Uma tecla é pressionada. É enviado para o componente com o foco de entrada. OnKeyPress Uma tecla de caractere é pressionada. Idem OnKeyUp Uma tecla é liberada. Idem OnDragDrop O componente está sendo arrastado e é solto num local permitido OnDragOver O componente está sendo arrastado e passa sobre outro componente OnEndDrag O componente está sendo arrastado e é solto num local permitido ou não OnStartDrag Acontece quando o usuário começa a arrastar; é enviado para o componente que originou

a operação de arrasto.

Principais Métodos Método Descrição BringToFront Coloca o componente na frente dos outros CanFocus Determina se o controle pode receber o foco Create Cria uma instância do componente Destroy Destrói a instância. Na verdade, deve-se utilizar o Free Focused Retorna se o foco está sobre o componente Free Destrói a instância e desaloca a memória Hide Torna o controle invisível SetFocus Faz com que o controle receba o foco SendToBack Coloca o componente atrás dos outros Show Torna o controle visível Clear Limpa o conteúdo do componente

Page 21: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

21

Objeto – Form (Formulário) Paleta – Standart Importância: É o principal componente container pois permite posicionar os demais componentes em si mesmo. É literalmente a implementação do conceito de ‘janelas’ do sistema operacional Windows.

Propriedades ActiveControl Permite definir qual o primeiro componente a receber foco assim que o formulário é

criado. Align Altera o alinhamento e preenchimento do objeto. AutoScroll Permite habilitar as barras de rolagem. AutoSize Determina se o controle será automaticamente redimensionado. BorderIcons Determina os ícones a serem exibidos na barra de título do formulário. BorderStyle Define o estilo da borda do formulário.

bsDialog – Borda não redimensionável, comum em caixa de diálogo bsSingle – Borda simples e redimensionável. bsNone – Borda invisível, não redimensionável, sem botões de controle. bsSizeable – Borda padrão redimensionável.

BorderWidth Define a espessura da borda. Caption Indica o rótulo exibido para o componente. ClientHeight / ClientWidth

Define a altura e largura da área cliente.

Color Define a cor de fundo de um componente. Cursor Indica a imagem exibida pelo ponteiro do mouse quando este ficar sobre o objeto. DefaultMonitor Associa o form a um monitor específico em uma aplicação que utiliza vários monitores. Enabled Define se o componente está habilitado ou não. Font Permite controlar os atributos do texto exibido em um componente. FormStyle Determina o estilo do formulário.

fsNormal – Definição padrão do formulário. fsMDIChild – O formulário será uma janela-filha de uma aplicação MDI. fsMDIForm – O formulário será o formulário-pai de uma aplicação MDI. fsStayOnTop – O formulário permanece sobre todos os outros formulários do projeto, exceto aqueles que também têm a propriedade FormStyle igual a fsStayOnTop.

Height Define a altura do objeto. HelpContext Define o tópico do arquivo help que será exibido ao pressionar a tecla F1. HelpFile Define um arquivo de help específico. Hint Permite exibir um texto de auxílio no momento em que o ponteiro do mouse permanece

sobre o controle. HorzScrollBar Define o comportamento de uma barra de rolagem horizontal. Icon Define o ícone que será usado pelo formulário. KeyPreview Define se o formulário deve ou não responder a um pressionamento de tecla, através do

evento OnKeyPress, por exemplo. Left Define a coordenada da extremidade esquerda de um componente. Menu Permite escolher entre mais de um componente MainMenu. Name Define o nome interno que identifica o componente dentro da aplicação. PopupMenu Define o componente PopupMenu a ser utilizado pelo objeto. Position Permite definir o tamanho e posição de um formulário no momento em que ele aparece

na sua aplicação. ShowHint Define se a string de auxílio deve ou não ser exibida quando o usuário mantém o

ponteiro do mouse sobre um controle.

Page 22: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

22

Tag A propriedade Tag é uma variável do tipo Longint que o Delphi coloca à disposição do usuário, que pode atribuir o significado mais conveniente.

Top Define a coordenada da extremidade superior de um componente. VertScrollBar Define o comportamento de uma barra de rolagem vertical. Visible Define se o componente aparece ou não na tela. Width Define a largura do objeto. WindowMenu Permite definir qual o menu responsável por manipular as janelas-filhas de uma

aplicação MDI. WindowState Define o estado de exibição de um formulário.

Métodos Show Exibe o formulário de manipulação não-modal. ShowModal Exibe o formulário de manipulação modal. Close Permite fechar o formulário.

Objeto – Button1 (Botão) Paleta – Standart Importância: É um dos objetos mais utilizados para confirmar e disparar rotinas associadas.

Propriedades Action Referencia uma ação definida em um objeto TActionList. Anchors Permite manter a posição relativa do objeto ao objeto ‘parente’ quando este é

redimencionado.

Cancel Associa o evento OnClick do objeto ao pressionamento da tecla Esc.

Default Associa ao evento OnClick do objeto ao pressionamento da tecla Enter.

ModalResult Propriedade utilizada para encerrar a execução de um formulário Modal quando selecionado um valor diferente de mrNone.

Parent... As propriedades Parent permitem que o componente receba a mesma formatação do objeto proprietário.

TabOrder Define a ordem na passagem de foco no momento de pressionamento da tecla TAB. TabStop Define se o foco pára no componente. Métodos SetFocus Envia o foco do windows para o componente.

Page 23: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

23

Objeto – Edit (Caixa de edição) Paleta – Standart Importância: Um dos principais componentes para a entrada de dados do usuário do sistema.

Propriedades AutoSelect Define se o texto exibido pelo controle será selecionado quando este receber o foco da

aplicação. AutoSize Para componentes TEdit a propriedade determina se a altura do controle será

redimensionada quando o tamanho da fonte for alterado. BorderStyle Determina o tipo da borda do componente. CharCase Determina o se tipo da fonte será maiúscula, minúscula ou normal. HideSelection Define se o texto perde a seleção ao perder o foco. Maxlength Define um limite para a inserção de caracteres. PasswordChar Define qual caractere será usado para ocultar o texto inserido no componente.

Text Permite manipular os caracteres inseridos no componente pelo usuário.

Métodos Clear Limpa o conteúdo da propriedade text. SetFocus Envia o foco do windows para o componente.

Objeto – Label (Rótulo de orientação) Paleta – Standart Importância: Orientar o usuário à escolha de componentes bem como sua utilização.

Propriedades Alignment Define o alinhamento da string na área do componente. AutoSize Para componentes TDBText e TLabel, esta propriedade define se o controle será

automaticamente redimensionado para acomodar o texto.

FocusControl Define qual o componente receberá foco quando o usuário selecionar a combinação de teclas aceleradoras (atalho) se existir.

Layout Define o alinhamento vertical do texto na área do componente. ShowAccelChar Define se o caracter ‘&’ será um literal ou tecla de aceleradora (atalho). Transparent Define se o fundo do componente será ‘transparente’ ou não.

Page 24: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

24

WordWrap Define se o texto poderá utilizar o ‘retorno automático’ em caso de ultrapassar a largura definida e se a propriedade AutoSize estiver falsa.

Objeto – Memo (Memorando) Paleta – Standart Importância: Permite o usuário entrar com dados do tipo TStrings, compara-se à funcionalidade do software bloco de notas.

Objeto – CheckBox (Caixa de verificação) Paleta – Standart Importância: Permite verificar opções boolenas pré-definidas ou re-definidas pelo usuário.

Propriedades AllowGrayed Define caso verdadeiro, três estados possíveis para o checkbox: checked (ligado),

unchecked (desligado) e grayed (parcial). Caso falso, dois estados: checked (ligado) e unchecked (desligado).

Checked Define se o componente está ligado ou não, caso tenha apenas dois estados.

State Permite definir três estados se AllowGrayed for verdadeiro.

Objeto – RadioButton (Botão de ‘radio’) Paleta – Standart Importância: Permite escolher entre um grupo, pelo menos uma opção.

Page 25: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

25

Propriedades

Checked Define se o componente está ligado ou desligado.

Objeto – ListBox (Caixa de listagem) Paleta – Standart Importância: Permite o usuário entrar ou manipular uma lista de dados.

Propriedades

Items Define uma lista de Strings que aparece no componente.

MultiSelect Permite selecionar vários itens (Strings) no componente. Sorted Define se a lista de Strings será ordenada ou não. Métodos Clear Permite limpar o conteúdo da propriedade Items. LoadFromFile Permite ‘carregar’ um arquvo para a propriedade Items. SaveToFile Permite salvar o conteúdo da propriedade Items para um arquivo.

Objeto – ComboBox1 (Caixa de listagem em formato de cortina) Paleta – Standart Importância: Permite o usuário entrar ou manipular uma lista de dados.

Propriedades

Items Define uma lista de Strings que aparece no componente.

Sorted Define se os dados serão ordenados.

Text Define o texto atual da Combobox.

Métodos Clear Permite limpar o conteúdo da propriedade Items. LoadFromFile Permite ‘carregar’ um arquvo para a propriedade Items.

Page 26: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

26

SaveToFile Permite salvar o conteúdo da propriedade Items para um arquivo.

Objeto – ComboBox1 (Caixa de listagem em formato de cortina) Paleta – Standart Importância: Permite o usuário entrar ou manipular uma lista de dados.

Propriedades

Items Define uma lista de Strings que aparece no componente.

Sorted Define se os dados serão ordenados.

Text Define o texto atual da Combobox.

Métodos Clear Permite limpar o conteúdo da propriedade Items. LoadFromFile Permite ‘carregar’ um arquvo para a propriedade Items. SaveToFile Permite salvar o conteúdo da propriedade Items para um arquivo.

Objeto – GroupBox (Caixa de agrupamento) Paleta – Standart Importância: Permite agrupar componentes e estabelecer um título na propriedade Caption.

Propriedades Align Pemite definir um alinhamento no objeto proprietário.

Caption Define o texto informativo na parte superior do componente.

Page 27: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

27

Objeto RadioGroup (Grupo de botões ‘radio’) Paleta – Standart Importância: Permite estabelecer um grupo de botões de radio e manipula-los pela propriedade ItemIndex.

Propriedades Items Define os itens disponíveis ao usuário. ItemIndex Define qual dos itens está selecionado. Columns Define o número de colunas para organização dos componentes.

Objeto – Panel (Painel) Paleta – Standart Importância: Permite agrupar outros objetos e estabelecer um efeito visual nas aplicações.

Propriedades

Align Define o alinhamento do componente em relação ao seu proprietário. Bevel... Define a característica das bordas (interna e externa) bem como sua

espessura. BorderStyle Define o tipo da borda.

Objetos – MainMenu e PopupMenu (Menu principal e Menu rápido) Paleta – Standart Importância: Define os Menus utilizados pelo usuário pelo botão esquerdo (MainMenu) ou pelo botão direito (PopupMenu) do Mouse.

Propriedades

Page 28: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

28

Items Define um novo item de Menu. Images Define um objeto do tipo ‘ImageList’.

O objeto MainMenu permite a construção de sub-menus através de seu construtor clicando no item com o botão direito e escolhendo a opção Create submenu. Pode-se também excluir ou incluir items aleatoriamente através do botão direito no item desejado.

Para criar um separador de menus, utilize o operador de subtração (‘-‘) e confirme com a tecla Enter.

Diferentes pápeis dos itens de menu

Independentemente da posição deles na estrutura dos menus, há três tipos fundamentais de itens de menu: Comandos: São itens de menu usado para dar um comando, para executar uma ação. Eles não oferecem nenhuma pista visual. Definidores de Estado: São itens de menu usados para alternar uma opção entre ligado e desligado, para mudar o estado de um elemento em particular. Quando há dois estados, estes comandos usualmente têm uma marca de verificação à esquerda se estiverem ativos. Neste caso, selecionar o comando produz a ação oposta. Itens de Diálogo: São itens de menu que fazem com que uma caixa de diálogo apareça. A real diferença entre estes e os outros itens de menu é que o usuário terá condições de explorar os possíveis efeitos da caixa de diálogo correspondente e de finalmente abortá-los através do botão Cancelar da caixa. Esses comandos devem ter uma pista visual, que consiste em três pontos após o texto. Isto não é obrigatório do ponto de vista técnico, mas é tão comum que você não deve ignorar esta diretriz. Mudando itens de menu em tempo de execução

A estrutura de um menu pode mudar numa série de maneiras, mas as mais importantes se aplicam a itens individuais. Como por exemplo, quando um comando de menu não pode ou não deve ser selecionado (Prop. Enabled), usualmente ele assume a cor cinza. Neste caso o usuário não tem a chance de usar esse comando.

Outra mudança visual é o uso da marca de verificação (Prop. Checked), que pode ser substituída por duas legendas diferente (Prop. Caption) para os dois estados do item, como por exemplo: Exibir Lista e Ocultar Lista. Editando um menu com o Menu Designer (MD)

O Delphi possui em editor especial de menus, o Menu Designer. Para invocar esta ferramenta, coloque um componente de menu num formulário e dê um clique duplo sobre ele ou na sua propriedade Items ou dê um clique com o botão direito do mouse sobre ele e escolha essa opção.

Page 29: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

29

Não se preocupe demasiadamente com a posição do componente de menu do formulário, uma vez que isso não afetará o resultado; o menu é colocado apropriadamente abaixo da Barra de Título do formulário. Observação: Para ser mais preciso, o formulário exibe, abaixo de sua legenda, o menu indicado em sua propriedade Menu, a qual é definida por padrão tão logo você insira o primeiro componente de menu principal do formulário. Se o formulário tiver mais de um componente de menu principal, esta propriedade deve ser definida manualmente e pode ser mudada tanto em tempo de projeto como em tempo de execução.

Para criar o seu menu dentro do Menu Designer basta escrever o texto dos comandos.

Para se criar menus suspensos de segundo nível dê um clique com botão direito do mouse sobre o item desejado e selecione o comando Create Submenu ou pressione simultaneamente <Ctrl> <→→→→>.

Você também pode utilizar as teclas <Insert> e <Delete> para inserir e deletar itens de menu respectivamente e as setas de direção para navegar entre os itens de menu.

Para adicionar um separador ao menu suspenso, simplesmente insira um hífen como texto do comando, sendo que o separador não responde ao evento OnClick.

Atalhos de Menu

Uma característica comum dos itens de menu é que eles contêm uma letra sublinhada, pode ser a 1ª ou uma letra do meio. E ao pressionar <Alt> + letra, ativa menu suspenso correspondente.

Obviamente, cada elemento da barra de menus deve ter uma letra sublinhado diferente. O mesmo é verdadeiro para os itens de menu de um menu suspenso específico.

Para determinar a letra sublinhada, simples coloque & antes dela na definição do item. Os itens de menu podem ter também teclas de atalho (p.e. <Ctrl> <C>). Para associar

uma tecla de atalho a uma item de menu (menus suspensos as possui) selecione um valor para a propriedade ShortCut do item através das combinações padrões. Mudando Itens de Menu

Três propriedades são usadas para modificar um item de menu. Usamos a propriedade Checked para adicionar ou remover uma marca de verificação dentro do item de menu. A propriedade Enabled pode é usada para dar a cor cinza a um item de menu a fim de que ele não possa ser selecionado pelo usuário. A última é a Caption, o texto do item de menu.

Uma quarta operação com item de menu seria a sua remoção ou torná-lo invisível. Isso é facilmente realizado mudando-se o valor da prop. Visible para False. Sugere-se que você evite esta operação, pois o usuário pode confundir-se. É preferível desabilitá-lo temporariamente. Associando Eventos a Itens de Menu

A associação de um evento a um item de menu é fita semelhante à associação de um evento a qualquer componente. A única diferença é que ele não é visto como um componente, logo devemos selecioná-lo utilizando caixa de seleção do Obj Inspector ou utilizarmos o MD. Menus Pop-Up ou SpeedMenus ( com o botão direito do mouse) (Standard)

Page 30: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

30

No Windows é comum ver aplicações que possuem menus locais especiais que você ativa

dando um clique com o botão direito do mouse. O menu que é exibido - um menu pop-up em termos do Windows - usualmente depende da posição do clique do mouse. Estes menus tendem a ser fáceis de usar, uma vez que agrupam somente os poucos comandos relacionados ao elemento que está atualmente selecionado. Para adicionar menus pop-up na sua aplicação, execute algumas operações simples: 1. Insira um componente PopUpMenu no formulário 2. Adicione alguns itens de menu ao componente 3. Associe o componente à propriedade PopUpMenu do componente desejado 4. E obviamente, adicionar manipuladores de eventos para o OnClick dos itens de menu Observações:

A propriedade AutoPop = True faz o menu aparecer através do clique do botão direito sobre o componente.

A propriedade Alignment determina onde o menu se abrirá. A parte superior do menu será a da posição do cursor do mouse, mas o alinhamento poderá ser à esquerda ou à direita ou no no centro do componente, dependendo do valor definido nesta propriedade.

O PopUp Menu não deve ter submenus, pois por conveniência, eles devem ser rápidos e não possuem teclas de acesso mnemômico (Alt + letra).

Podem ter tecla de atalho (propriedade ShortCut). Mas atenção: Mesmo que menu não esteja associado a nenhum componente e também não esteja exibido, as teclas de atalho estarão disponíveis. Neste caso, para não acessar um item com este recurso, devemos desabilitá-lo.

Um componente de menu suspenso recebe o evento OnPopUp antes que ele seja exibido. É a chance que temos de realizar qualquer preparação em seus itens, como desativar, ajustar marcas de verificação, etc...

FUNÇÕES DE CONVERSÃO E MANIPULAÇÃO

Vamos quebrar nosso estudo sobre os componentes do delphi para falarmos sobre Casting e Conversões de tipos , pois estas funções serão importantes para futuras esplicações e atividades.

Como já sabemos, não podemos atribuir uma variável à outra de um tipo diferente. Caso precise fazer isso, há duas opções. A primeira é casting e a segunda é utilizar uma função de conversão de tipos.

Função Objetivo

Chr Converte um número ordinal em um caractere ANSI

Ord Converte um valor do tipo ordinal em um número que indica sua ordem

Round Converte um valor real em um valor inteiro, arrendondando seu valor

Trunc Converte um valor real em um valor inteiro, truncando seu valor

Int Retorna a parte inteira do argumento de valor de ponto flutuante

IntToStr Converte um número em uma string

Page 31: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

31

IntToHex Converte um número em uma string com sua representação em hexadec.

StrToInt Converte uma string em um número, levando uma execeção se a string não representa um número inteiro válido

StrCopy Copia uma string estilo Pascal em uma string terminada em nulo

FloatToDecimal Converte um valor de ponto flutuante em registro incluindo sua representação decimal (expoente, dígito, sinal)

FloatToStr Converte um valor de ponto flutuante para sua representação string usando representação padrão

FloatToStrF Converte um valor de ponto flutuante para sua representação string usando a formatação especificada

StrToFloat Converte uma string Pascal em um valor de ponto flutuante

TextToFloat Converte uma string terminada em nulo em um valor de ponto flutuante

DateToStr(Date: TdateTime) Converte um dado TDateTime em String.

DateTimeToStr(DateTime: TDateTime)

Converte um dado TDateTime em String.

StrToDate (const S: String) Converte um dado String em tipo TDateTime.

StrToDateTime(const S: String)

Converte um dado String em tipo TDateTime

FormatFloat(const Format: string; Value: Extended): string

Permite formatar um tipo ponto flutuante retornando uma string.

Edit2.Text := FormatFloat('###,###.00',soma);

Sendo soma uma variável real.

CAIXAS DE DIÁLOGO

Podemos utilizar alguns tipos de caixas de diálogo pré-definidas pelo Delphi facilitando em muito o desenvolvimento pela ferramenta: ShowMessage A caixa de diálogo ShowMessage é declarada internamente pelo Delphi desta forma:

procedure ShowMessage(const Msg: string);

Onde o parâmetro Msg é um dado String. Exemplo:

ShowMessage(‘Um texto ou propriedade string será exibida.’);

Page 32: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

32

MessageDlg A caixa de diálogo MessageDlg é declarada internamente pelo Delphi desta forma: function MessageDlg(const Msg: string; DlgType: TMsgDlgType;

Buttons: TMsgDlgButtons; HelpCtx: Longint): Word;

Onde: const Msg: string É uma constante string ou propriedade deste tipo.

DlgType: TmsgDlgType

mtWarning Contém um ícone exclamação amarelo.

mtError Contém um ícone vermelho de ‘parada’.

mtInformation Contém um ícone ‘i’ azul.

mtConfirmation Contém uma interrogação verde.

mtCustom Não contém BitMap.

Buttons: TMsgDlgButtons mbYes mbNo mbOK mbCancel mbAbort mbRetry mbIgnore mbAll mbNoToAll mbYesToAll mbHelp

HelpCtx: Longint Define um número para o help de contexto. Por padrão, zero ‘0’. O retorno da função é o tipo do botão como mr Desta maneira pode-se fazer testes lógicos como no exemplo: if MessageDlg(‘Deseja sair?’, mtConfirmation, [mbYes, mbNo], 0)=mrYes then

Application.MessageBox

Uma outra caixa de diálogo é o método MessageBox do objeto Application. Esta função está definida da seguinte maneira: function MessageBox(const Text, Caption: PChar; Flags: Longint): Integer;

Onde: const Text É uma constante string ou propriedade deste tipo. Caption: PChar Define uma string para o título da janela.

Flags Define os botões, ícones e a possibilidade de focar um determinado botão. Os valores para botões são: MB_ABORTRETRYIGNORE,

Page 33: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

33

MB_OK, MB_OKCANCEL, MB_RETRYCANCEL, MB_YESNO, MB_YESNOCANCEL Os valores para os ícones são: MB_ICONEXCLAMATION, MB_ICONWARNING, MB_ICONINFORMATION, MB_ICONASTERISK, MB_ICONQUESTION, MB_ICONSTOP, MB_ICONERROR, MB_ICONHAND Os valores para a definição do botão default pode ser: MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON3, MB_DEFBUTTON4

O retorno da função é o tipo do botão como id (IDABORT IDCANCEL IDIGNORE IDNO IDOK IDRETRY IDYES)

Desta maneira pode-se fazer testes lógicos como no exemplo: if Application.MessageBox('Texto','Título',MB_YESNOCANCEL +

MB_ICONINFORMATION + MB_DEFBUTTON2) = IdYes then

CHAMADA DE FORMS

Uma característica importante da apresentação dos formulários em uma aplicação, é o fato de ser apresentado como MODAL ou NÃO-MODAL. Há dois métodos para executar a visualização, mas antes vamos entender como isso funciona.

• MODAL – O foco fica preso no formulário e não é liberado para outro form até que ele seja fechado. O usuário pode ativar outra aplicação do Windows, mas não poderá trabalhar em outra janela daquele programa cuja janela foi aberta como modal (até que seja fechada).

• NÃO MODAL – O foco pode ser transferido para outra janela sem que esta precise ser fechada.

Entendido este conceito, os métodos que o Delphi utiliza para apresentar os forms são: Show para apresentar forms NÃO-MODAIS, ou ShowModal para apresentar forms

MODAIS.

Page 34: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

34

COMPONENTES (VCL) Objeto – BitBtn (Botão com figuras opcionais) Paleta – Additional Importância: Permite inserir figuras para uma melhor orientação do usuário, além de funções pré-definidas.

Propriedades

Glyph Define um Bitmap para o componente. (Arquivo com extensão .BMP)

Kind

Define o tipo de Bitmap exibido pelo usuário. bkCustom Bitmap definido pelo usuário.

bkOk Botão OK padrão, com uma marca de verificação na cor verde e propriedade Default

igual a True.

bkCancel Botão Cancel padrão, com um “x” na cor vermelha e propriedade Cancel igual a True.

bkYes Botão Yes padrão, com uma marca de verificação na cor verde e propriedade Default

igual a True.

bkNo Botão No padrão, com uma marca vermelha representando um círculo cortado e

propriedade Cancel igual a True.

bkHelp Botão de auxílio padrão, com uma interrogação na cor cyan. Quando o

usuário clica sobre o botão, uma tela de auxílio deve ser exibida

(baseada no código do desenvolvedor). bkClose Botão Close padrão, com o desenho de uma porta. Quando o usuário clica sobre o

botão, o formulário a que ele pertence se fecha.

bkAbort Botão Abort padrão, com um “x” na cor vermelha e propriedade Cancel igual a True.

bkRetry Botão Retry padrão, com uma seta circular verde.

bkIgnore Botão ignore padrão, com o desenho de um homem verde se afastando.

bkAll Botão All padrão, com uma marca de verificação dupla na cor verde e propriedade

default igual a True.

ModalResult Permite encerrar a execução de um formulário Modal quando o seu valor for diferente de mrNone.

Objeto MaskEdit – (Caixa de edição com máscara)

Page 35: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

35

Paleta – Additional Importância: Permite estabelecer uma máscara para a entrada de dados no componente. Pode ser considerado literalmente um componente ‘Edit com máscara’.

Propriedades CharCase Define o tipo dos caracteres. EditMask Permite definir uma máscara para entrada de dados. PasswordChar Define um caracter para ocultar a entrada de dados.

A máscara definida na propriedade EditMask irá restringir os caracteres que o usuário pode entrar numa caixa de edição, isto evita que os usuários entrem com caracteres inválidos ou com formatos de dados indesejados para um determinado valor.

Máscara de Telefone: !\(9999\)999-9999;1;_ A máscara é formada por três partes: a 1ª é a máscara propriamente dita, a 2ª consiste

num caractere que define se os caracteres ou a máscara devem ser salvos como parte dos dados, a 3ª define o caractere usado para representar espaços em branco na máscara.

Lista dos caracteres utilizados numa máscara Caractere Significado na Máscara

! Se um ! aparecer na máscara, caracteres em branco não são armazenados como dados > Marca o início do bloco que deve ser convertido em letras maiúsculas, para fechar esse bloco espera-

se o caractere < < Marca o início do bloco que deve ser convertido em letras minúsculas, para fechar esse bloco espera-

se o caractere > \ Define um caractere literal, ou seja, o caractere que segue a barra invertida \ é utilizado como

caractere especial, fixo, que pode ser salvo como parte integrante do valor ou não. L Requer a entrada de caractere alfabético (A-Z, a-z) nesta posição l Permite a entrada de caractere alfabético (A-Z, a-z) nesta posição, mas não requer A Requer a entrada de caractere alfanumérico (A-Z, a-z, 0-9) nesta posição a Permite entrada caractere alfanumérico (A-Z, a-z, 0-9) nesta posição, não requer C Requer um caractere qualquer nesta posição c Permite um caractere qualquer nesta posição, mas não requer 0 Requer um caractere numérico (0-9) nesta posição 9 Permite um caractere numérico (0-9) nesta posição, mas não requer # Permite um caractere numérico, um símbolo + ou -, mas não requer : Usado como separador em dados horários. Se outro caractere separador é definido nos atributos

internacionais do Painel de Controle do seu Sistema, este caractere será usado ao invés dos dois pontos

/ Separador de dia, mês e ano. Idem com relação Painel de Controle ; Usado para separar as três partes que formam a máscara _ Insere espaço em branco automaticamente no texto

<> Define que as letras maiúsculas e minúsculas serão armazenadas como digitadas

Page 36: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

36

Objeto – SpeedButton (Botão para barra de ícones) Paleta – Additional Importância: Permite ao usuário manipular os botões individuais ou através do conceito de grupo.

Propriedades Glyph Define um Bitmap para o componente. GroupIndex Permite agrupar um conjunto de SpeedButtons quando ao serem selecionados, tiverem a

propriedade diferente de zero. AllowAllUp Permite que o componente possa ter o relevo suspenso ao ser clicado. Só pode ser

utilizado junto ao conceito de agrupamento. Flat Define um efeito visual interessante. Down Permite determinar qual componente foi pressionado. Só pode ser utilizado junto ao

conceito de agrupamento. Exemplo:

Objeto – Image (Imagem) Paleta – Additional Importância: Permite inserir uma figura para uso geral na aplicação.

Propriedades AutoSize Permite alterar o tamanho do componente baseado no tamanho da figura. Picture Define a figura a ser exibida. Stretch Permite alterar o tamanho da figura baseado no tamanho do componente.

Métodos

Page 37: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

37

LoadFromFile Permite ‘carregar’ um arquivo de figura na propriedade Picture.

Para trabalhar com imagens jpg, é necessário acrescentar na cláusula uses da interface a biblioteca jpeg.

Possibilita a exibição de uma figura (Bmp) Propriedade Significado Picture Definição da figura do tipo BMP, ICO, WMF ou EMF Center Centraliza a figura em relação ao Quadro (objeto) Strech Se True, adequa o tamanho da imagem com relação ao objeto AutoSize Se True, adequa o tamanho do objeto com relação a imagem

Contrário da propriedade Strech

Objeto – ToolBar (Barra de ícones) Paleta – Win32 Importância: Permite criar barras de ícones de maneira rápida e simples.

Propriedades Flat Define um efeito visual com relevo através do mouse nos botões. Images Permite definir um objeto do tipo ImageList. HotImages Permite definir um objeto do tipo ImageList a ser usado no momento em que o mouse

passa (ou clica) sobre o componente. ShowCaptions Permite exibir a propriedade caption dos botões.

Para adicionar botões ou separadores na ToolBar, clique com o botão direito sobre o componente e escolha New Button ou New Separator.

Inserindo BitMaps nos botões 1. Acrescentar no formulário um ou mais componentes ImageList 2. Obviamente carregar os bitmaps no ImageList 3. Associar o ImageList com a prop. Images do ToolBar.

Por padrão, as imagens serão atribuídas aos botões na ordem em que elas aparecem, mas você pode mudar isso facilmente, configurando a prop. ImageIndex para cada botão do ToolBar.

Pode-se preparar mais componentes ImageList para condições especiais dos botões, e

atribuir a elas as propriedades (DisabledImages ou Images) e HotImages para cada botão do ToolBar.

Page 38: apostila delphi 2006 ds1 -   · PDF fileAPOSTILA Programação de Computadores – I (Delphi) ETEC Prof. Terezinha Monteiro dos Santos Taquarituba – SP 2º sem - 2010

PC-I – Programação de Computadores I Téc. Informática

Delphi

38

O primeiro grupo é usado para os botões desabilitados, o segundo para o botões quando pressionados.

Esse último grupo de imagens usualmente é mais vivo, ou seja, deve possuir as imagens mais vivas que o seu correspondente desabilitado.

Para que as imagens vivas sejam exibidas quando da passagem do cursor do mouse sobre os botões, defina a propriedade Flat = True, fazendo também os botões terem aparência plana. Obviamente, associe uma ImageList à propriedade HotImages.

Não se esqueça de definir dicas instantâneas para os botões. Se você definir a propriedade ShowHint = True (Default = False) daToolBar, a propriedade ShowHint dos botões também será ajustada para True.