Академический Документы
Профессиональный Документы
Культура Документы
Mini-Curso Delphi
1. INTRODUÇÃO.................................................................................................................................1
1.1. FAMILIARIZAÇÃO COM O AMBIENTE DE PROGRAMAÇÃO ...........................................................1
1.2. SUBDIVISÕES DO AMBIENTE DE PROGRAMAÇÃO DELPHI ...........................................................2
1.2.1 Menu Principal .....................................................................................................................3
1.2.2 Gerenciador de Desktops .....................................................................................................3
1.2.3 Palheta de Botões Rápidos ...................................................................................................4
1.2.4 Palhetas de Componentes.....................................................................................................4
1.2.5 Formulário ...........................................................................................................................4
1.2.6 “Code Editor” ......................................................................................................................5
1.2.7 “Object TreeView”...............................................................................................................6
1.2.8 “Object Inspector” ...............................................................................................................7
1.3. AMBIENTE “DRAG AND DROP” ..................................................................................................8
2. FERRAMENTAS DO AMBIENTE DE PROGRAMAÇÃO........................................................9
2.1. “CODE COMPLETITION” .............................................................................................................9
2.1.1 Chamando o “Code Completition” ....................................................................................10
2.1.2 Refinando a busca do “Code Completition” ......................................................................10
2.2. ESTRUTURAS DE PROGRAMAÇÃO PRÉ-ESTABELECIDAS (“CODE TEMPLATES”).......................11
2.2.1 Utilizando “Code Templates” ............................................................................................11
2.2.2 Adicionando “Code Templates”.........................................................................................12
3. PROGRAMANDO EM DELPHI ..................................................................................................14
3.1. TIPOS DE ARQUIVOS GERADOS PELO DELPHI ...........................................................................14
3.2. O QUE SALVAR?.......................................................................................................................16
3.3. NORMA INTERNACIONAL DE NOMENCLATURA DE VARIÁVEIS E OBJETOS ...............................17
3.4. CASE-INSENSITIVE ...................................................................................................................17
3.5. CRIAÇÃO DE VARIÁVEIS ..........................................................................................................18
3.6. CONSTANTES............................................................................................................................19
3.7. TIPOS .......................................................................................................................................19
3.8. CRIAÇÃO DE ROTINAS ..............................................................................................................20
3.8.1 Parâmetros .........................................................................................................................21
3.8.2 Procedimentos ....................................................................................................................21
3.8.3 Funções ..............................................................................................................................22
3.8.4 Onde declarar rotinas ........................................................................................................22
3.9. CRIAÇÃO DE MÉTODOS ............................................................................................................23
3.9.1 Onde Declarar Métodos .....................................................................................................24
3.9.2 Facilitando as Coisas .........................................................................................................25
3.10. CRIAÇÃO DE UNITS ..................................................................................................................25
3.10.1 Interface.........................................................................................................................26
3.10.2 Implementation ..............................................................................................................27
3.11. EVENTOS ..................................................................................................................................28
3.12. TRATAMENTO DE EXCEÇÕES ....................................................................................................30
3.12.1 Try ... Except..................................................................................................................30
3.12.2 Try ... Finally .................................................................................................................31
4. COMPILANDO E DEBUGANDO................................................................................................31
4.1. COMPILANDO ...........................................................................................................................31
4.1.1 Gerando o executável .........................................................................................................31
4.1.2 Erros de Compilação..........................................................................................................32
4.2. DEBUGANDO ............................................................................................................................33
4.2.1 BreakPoints ........................................................................................................................33
4.2.2 Watches ..............................................................................................................................34
I
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
II
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
1. Introdução
Este tópico destina-se a dar uma visão geral sobre o ambiente de programação
da Borland®: Delphi® 7.0 Studio, mostrando suas principais características e sua
organização para melhor atender aos programadores.
®
O ambiente de programação Delphi é uma ferramenta projetada para facilitar a
programação rápida e fácil de qualquer aplicação. Esta ferramenta conta com uma
interface totalmente interativa. Baseando-se em uma programação orientada a objetos
utilizando recursos de “drag and drop”, o ambiente proporciona ao programador um
ganho de tempo muito grande. Este tempo poderá ser usado na programação dos
eventos necessários para o pleno funcionamento do sistema.
Uma outra vantagem da ferramenta Delphi® é a quantidade de componentes
existentes na Internet que podem ser facilmente instalados, além da grande gama de
componentes que já vêm com a ferramenta.
O ambiente Delphi® foi projetado para proporcionar ao programador um meio
rápido, limpo e preciso de programação, no qual apenas é necessário preencher as
lacunas que serão criadas pela programação dos eventos, como veremos adiante.
Entretanto, este ambiente de programação se torna um tanto quanto prejudicial
para programadores novos. Como toda a estruturação e criação de objetos é feita
automaticamente pelo ambiente, o programador não tem espaço para treinar suas
habilidades. Portanto, recomenda-se este ambiente para programadores mais experientes
ao lidar com objetos e que visem aumentar sua produtividade. Deve-se salientar,
entretanto, que este fator não é uma desvantagem, pois não impede que o programador
altere os objetos criados para adaptá-los às suas necessidades.
Todas as versões do Delphi até hoje lançadas são feitas sobre o conceito de
linguagem de programação compilada, ou seja, o código fonte é interpretado e
transformado em objeto para depois dar origem ao executável. Existem boatos de que a
Borland®, fabricante do Delphi® está desenvolvendo uma Máquina Virtual Delphi para
que assim como no Java® o programa gerado tenha maior portabilidade, ou seja, que
possa ser executado independente do sistema operacional.
Este curso de programação em Delphi® versará sobre a versão 7.0 do compilador
e debugger Delphi®, que além de proporcionar algumas mudanças na sua interface
tradicional, permite o uso de alguns recursos de interface de programação mais
avançados (principalmente para serem usados com o Windows XP®). Outra mudança
observada é que a nova versão do ambiente permite ao usuário utilizar alguns recursos a
mais de programação Web, dentre os quais uma integração Java® é o mais chamativo
deles.
1
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
2
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Menu Principal
3
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
janelas organizadas a seu modo. Esta ferramenta permite que o programador salve as
configurações do Desktop do ambiente de trabalho Delphi® 7.0 para que possa
futuramente utilizá-las caso ocorra alguma desordem. As principais características
salvas são o posicionamento das janelas e viewers.
Gerenciador de Desktops
Palhetas de Componentes
1.2.5 Formulário
4
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
onde os “Drags” terminam. Esta única e simples função permite que todos os
componentes encontrados na Palhetas de Componentes possam ser posicionados em seu
interior. O Formulário serve também como fundo para as interfaces do usuário, onde
serão colocados botões, caixas de texto, figuras, etc.
O formulário pode nem sempre estar visível ao programador ou ao usuário,
porém sempre que estiver terá uma “Unit’ associada a ele, dentro da qual haverá seu
código-fonte e o código de todos os componentes que ele contiver como filhos, ou seja,
todos os componentes em seu interior.
Formulário
5
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
6
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Object TreeView
7
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Object Inspector
8
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Nota: se o “Code Completition” não conseguir exibir nenhuma opção para completar o
código, isto indica que o código apresenta erros em posições anteriores a que ele foi
9
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
chamado, ou que ele ficou em dúvida sobre a melhor opção a escolher. O último caso
geralmente ocorre com tipos definidos pelo usuário ou diante do uso de type-casting.
No exemplo da figura acima foi definida uma variável nome do tipo string em
um procedimento qualquer. Logo em seguida, no corpo do procedimento, chamamos o
10
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
11
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
12
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Editor de Templates
Nota: o caractere “|” (pipe ou barrinha em pé) que aparece nas definições da maioria das
templates que acompanham Delphi® 7.0 Studio indica o lugar onde o cursor irá para
depois que a template for inserida no “Code Editor”.
13
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
3. Programando em Delphi
Cada aplicação ou projeto gerados no Delphi pode gerar um número bem grande
de arquivos. Cada tem o seu papel especial no armazenamento das configurações das
aplicações e são indispensáveis para a remontagem das mesmas.
14
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
15
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Como o Delphi® 7.0 Studio cria muitos arquivos é necessário ter conhecimento
sobre os mesmos, para saber qual deles devem ser selecionados para Backup. A seguir
temos uma tabela com essas informações:
16
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
3.4. Case-Insensitive
Este item foi criado com único propósito de frisar uma das características do
Delphi® 7.0 Studio, portanto será breve. O pretende-se neste item é salientar que o
ambiente de programação do Delphi é Case-Insensitive, ou seja, para variáveis,
comando, procedimentos, etc, não importa o modo como você os chama no que diz
respeito à caixa do nome. Por exemplo, se criarmos um procedimento chamado
“CalculaX”, poderemos chamá-lo das seguinte maneiras:
• calculax;
• CaLcUlAx;
• calCulax;
• ...
Qualquer uma das formas apresentadas acima e variantes são reconhecidas pelo
Delphi como sendo o mesmo procedimento. Portanto não é necessário se preocupar
como chamar o procedimento como no caso de linguagens case-sensitive como C e Java
que exigem que todos os caracteres tenham a mesma caixa para serem reconhecidos
como o mesmo procedimento.
17
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
18
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Exemplo
var aNome: String;
iValorX, iValorY: Integer;
fDinheiro: Real;
Fato Importante: as variáveis são privadas às units nas quais são declaradas, ou
seja, só podem ser acessadas por métodos e objetos contidos na unit. Se for necessário
utilizar um variável em outra unit, devemos adicionar sua unit na clausula uses da
mesma.
Segundo Fato Importante: variáveis podem ser também declaradas dentro de
objetos, sendo de uso exclusivo do mesmo, a não ser que sejam declaradas na região
pública.
3.6. Constantes
Constantes são variáveis cujo valor não pode ser alterado, ou seja, seu valor é
instanciado no início do programa e permanece inalterado até o término do mesmo.
Constantes são úteis em programação para armazenar o valor de delimitadores de laços
e para armazenar valores que sempre são utilizados no decorrer do código.
É altamente recomendável o uso de constantes no lugar de valores, pois uma vez
alterado o valor de uma constate, todo o lugar onde ela aparece terá seu valor alterado
também.
As constantes devem ser declaradas entre as cláusulas “uses” e “type”.
Sintaxe
Constantes Declaradas
3.7. Tipos
O programador pode querer definir os seus próprios tipos para tornar o programa
mais claro e conciso. O Delphi® 7.0 Studio possibilita que isso ocorra assim como as
demais linguagens de alto nível.
O programador deverá declarar seus tipos sempre antes de atribuí-los a uma
variável, recomenda-se que isto seja feito logo após a declaração das constantes.
19
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Sintaxe
20
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
3.8.1 Parâmetros
3.8.2 Procedimentos
Sintaxe
end;
21
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Exemplo
3.8.3 Funções
Sintaxe
end;
Exemplo
22
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Métodos são rotinas especiais de objetos, que possuem privilégios sobre seu
objeto continente. Podem acessar variáveis, objetos e até mesmo outros métodos dentro
de seu objeto continente.
Os métodos possuem uma maneira especial de serem declarados. Devem conter
antes de seu nome o tipo do objeto continente, separado por “.” de seu próprio nome.
Sintaxe
end;
23
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
end;
Métodos têm uma maneira diferente de serem declarados. Como as rotinas seu
corpo deve estar descrito na região conhecida como “implementation” e deve ser feito
segundo a sintaxe acima. Porém é necessário também incluir o cabeçalho do método
dentro da definição do objeto do qual ele faz parte.
Existem três seções possíveis para se inserir o cabeçalho de um método. Estas
seções também servem para declaração de variáveis. São elas:
• Delphi exclusive declarations: nesta região o delphi faz a declaração de
todos os métodos, variáveis e objetos que cria automaticamente. Dentre
estes métodos, temos os métodos que são utilizados para o tratamento de
eventos. Nesta região pode-se inserir métodos que são definidos pelo
programador, porém sempre que possível é melhor evitar isto. É
altamente recomendável que os métodos do programador sejam
declarados nas próximas duas seções;
• Private declarations: esta região é utilizada na declaração de variáveis e
métodos que são privados ao objeto, ou seja, somente o objeto terá
acesso ao que for declarado nesta região;
• Public declarations: esta região é utilizada na declaração de variáveis e
métodos que são públicos, ou seja, o que for declarado nesta região
poderá ser acessado por qualquer objeto ou uma unit que puder acessar
uma instância do objeto continente desta região.
24
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
25
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Unit simples
Observando a figura acima, nota-se que ambas as units mantém uma mesma estrutura
padrão. A segunda figura mostra como uma unit deve ser declarada e o que ela deve
conter. Todas as units criadas deverão no mínimo apresentar a seguinte estrutura:
interface
implementation
end.
3.10.1 Interface
26
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
3.10.2 Implementation
27
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Esta seção pode conter todos os tipos de cláusulas declaradas para a seção
“interface”, porém as cláusulas aqui declaradas só poderão ser utilizadas por esta seção.
Um fato importante a se observar é que todas as cláusulas usadas pela seção
“interface” também são válidas nessa seção, portanto não é necessário redeclará-las.
A declaração de rotinas deve ser feita nessa seção como foi descrito
anteriormente na seção 3.8.4.
Curiosidade: as rotinas poderão ser inseridas nessa seção com o seu cabeçalho
completo ou apenas até o seu nome. Seu o último for feito, o delphi procurará por sua
declaração posterior na seção “interface” e completará o resto!
3.11. Eventos
28
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
29
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
O comando try ... except e usado para tratar exceções e tem sua base
implementada da seguinte maneira: tenta executar um comando ou um conjunto deles,
se ocorrer exceção então ela a trata e aborta a rotina em execução.
Sintaxe
Try
<comandos>
Except
on <exceção> do <ação>
on <exceção> do <ação>
on <exceção> do <ação>
...
End;
Para tratar a exceção basta então saber o nome da exceção que ocorreu para
executar alguma ação sobre ela, se assim desejar. Se nenhuma exceção for especificada,
o programa apenas abortará a rotina.
30
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Este comando trata exceções da mesma forma que o comando try ... except,
porém a única diferença entre eles é que diante da ocorrência de uma exceção ao invés
de tratá-la, ele executa os comandos após o finally. Para este comando não importa o
que aconteceu, mas sim o que deve ser feito antes que a rotina aborte.
Sintaxe
Try
<comandos>
Finally
<comandos>
End;
4. Compilando e Debugando
4.1. Compilando
31
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
32
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
4.2. Debugando
O recurso debug é muito importante quando temos erros os quais não podemos
identificar em tempo de execução, para isso usamos os recursos de debug. Com eles
podemos analisar o código rotinas por rotina, linha de código por linha de código e
observar o conteúdo de cada variável.
Existem dois meios mais usuais de se percorrer o código-fonte:
• Step Into: percorre o programa linha por linha e ao encontrar uma rotina
executa a mesma linha por linha e assim por diante. Este recurso é
ativado com o uso da tecla <F7>;
• Step Over: percorre o programa linha por linha e ao encontrar uma
função a executa sem entrar no seu interior, ou seja, não mostra a
execução linha a linha da rotina. Este recurso é ativado com o uso da
tecla <F8>.
4.2.1 BreakPoints
33
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
4.2.2 Watches
Após realizado um dos passos acima uma janela aparecerá para que as
características do watch sejam determinadas. Nessa janela deve-se fornecer o nome da
variável, componente, propriedade ou qualquer outra coisa que se deseje avaliar.
Os watches também podem ser feitos sobre expressões booleanas ou aritméticas.
Após a configuração das características do watch ele deverá aparecer na Janela
de Watches. Para que um watch possa mostrar o valor do que se deseja é necessário que
o programa esteja funcionando, pois ele retira as informações da memória.
34
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Propriedades do Watch
35
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
5.1. Panels
Painéis são simples quadrados recipientes básicos de objetos, eles não têm
muitas funções específicas e servem na maioria das vezes como quebra-galho no que
diz respeito à organização e interface.
Na maioria das vezes são usados como separadores de áreas e como dock para
botões e outros componentes de interface. Pode ser usados também como um quadro
para a exposição de figuras, entre outras utilidades.
Os painéis também são conhecidos como o 1001 utilidades dos sistemas
gráficos.
Adicionar um painel é tão simples que não é necessário nem um subitem para
explicar como fazê-lo. Basta procurar pelo desenho mostrado no início deste tópico na
Barra de Componentes na guia “Standard” ou por um componente chamado “Panel” na
mesma guia.
Menus são itens muito comuns em interfaces e sua grande utilização se deve
ao fato de serem unidades gráficas que tornam a apresentação das ferramentas dos
sistemas mais agradável. Além disso, os menus são práticos porque deixam as
ferramentas ao alcance do usuário que podem acessá-las de maneira rápida e menos
complicada.
36
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Menu Designer...
37
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Criando um SubMenu...
38
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Barra de Ferramentas
39
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
MDIs são janelas dedicadas. Estas janelas são um tipo especial criadas a partir
do formulário original, configurando-se sua propriedade “FormStyle”. Ao criarmos
janela MDI necessitamos criar duas instâncias das mesmas. A primeira instância é
40
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
São janelas destinadas a servir como desktop para outras janelas que possam
vir a ser criada durante a execução do programa. Ou seja, estas últimas serão mantidas
em clausura quando forem do tipo MDIChild. São criados configurando-se a
propriedade FormStyle do formulário para MDIForm.
41
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Splashes são telas de abertura criadas com o intuito de realizar algum tipo de
propaganda da aplicação ou da empresa. São também muitas vezes criadas para que o
usuário não abra o programa e surja do nada a tela principal do mesmo. Ou então são
exibidas enquanto os módulos do programa são executados.
Splashes são criados basicamente utilizando-se formulário comuns, timers e a
criatividade do programador.
Portanto, este tópico não apresentará uma receita para fazê-lo, utilize sua
criatividade.
42
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
7. Banco de Dados
7.1. Tables
43
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Nota: uma tabela deve ser aberta antes que dados possam ser inseridos na mesma, e
fechada logo após ser usada.
44
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Com apenas estes 4 passos temos uma tabela da aplicação pronta para ser
usada.
7.2. DataSources
Data Sources são componentes cuja única função é servir de elo de ligação
entre os componentes do formulário e as Tables.
Este componentes são encontrados na Barra de Componentes na aba Data
Access e apresentam a figura acima.
45
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
7.3.1 DBEdit
DBEdit é um campo Edit com vínculo direto para a tabela, ou seja, tudo o que
for digitado neste campo terá reflexo direto sobre a tabela apontada por um componente
Table associado ao mesmo.
Para configurar o vínculo destes componentes com a tabela física, basta seguir
os passos abaixo:
1. Na propriedade DataSource, identifique o DataSource que faz
referência à tabela que contém o campo que será modificado com o
valor do DBEdit;
2. Na propriedade DataField selecione o campo que terá seu valor
modificado.
7.3.2 DBNavigator
7.3.3 DBGrid
7.4. Databases
46
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Databases são componentes que funcionam como aliases, ou seja, eles indicam
o caminho onde estão armazenadas as tabelas. Entretanto, não fazem só isso. Os
Databases também permitem que drivers sejam configurados e conexões externas sejam
feitas com Bancos de Dados como Oracle, por exemplo. Nele também pode-se definir
opções de logon, entre outras.
Databases são encontrados na Barra de Componentes na aba BDE.
DataBase Editor
7.5. Queries
Queries são similares às tabelas, porém elas são mais maleáveis. Nas queries é
possível determinar quais colunas de uma tabela queremos exibir, e quais registros
também. Fazemos isto através de comandos SQL inseridos na propriedade SQL. Estes
comandos podem utilizar parâmetros da propriedade Params.
47
Mini-Curso Delphi Marcos Paulo Salvador de Oliveira
Para termos uma query pronta para o uso devemos configurá-la primeiro.
Notaremos a seguir que os passos de configuração de uma query são muito similares aos
de uma Table, a saber:
1. Selecione em DatabaseName, o Database ou o alias onde se encontra a
tabela que a Query estará utilizando;
2. Na propriedade DataSource selecione o DataSource associado à Query.
Parâmetros são utilizados quando não sabemos exatamente qual valor passar
para uma linha de comando SQL ao realizar uma consulta. Quando isto acontece
usamos um parâmetros que futuramente poderá ter seu valor modificado em tempo de
execução.
A adição de parâmetros deverá ser feita com o auxílio do Object TreeView,
seguindo os seguintes passos:
1. Localize a query na qual se deseja inserir parâmetros no Object
TreeView;
2. Procure dentro da árvore da mesmo por Params;
3. Clique com o botão direito em Params e em seguida, Add items;
4. Configura o Parâmetro conforme sua necessidade.
Para modificar o conteúdo exibido por uma Query basta na propriedade SQL
digitar o comando SQL apropriado para tanto.
48