Você está na página 1de 32

Delphi e Lgica de

Programao para
Iniciantes

por: Diego Garcia


contato: drgarcia1986@gmail.com
site: http://drgarcia1986.wordpress.com

Delphi e Lgica de Programao para Iniciantes

Sumrio
Introduo ao Delphi............................................................................................................................3
O Que o Delphi.............................................................................................................................3
Criando um novo Projeto............................................................................................................3
IDE / Desktop..............................................................................................................................3
Design.....................................................................................................................................3
Code........................................................................................................................................3
Structure.................................................................................................................................3
Object Inspector.....................................................................................................................4
Project Manager.....................................................................................................................4
Tool Palette.............................................................................................................................4
Ol Mundo!.................................................................................................................................4
Logica e Pascal.....................................................................................................................................4
Premissas.........................................................................................................................................5
Fim de comando..........................................................................................................................5
Atribuindo valores a variveis....................................................................................................5
Comentrios................................................................................................................................5
Variveis / Constantes......................................................................................................................5
Definio de escopo....................................................................................................................5
Tipos mais comuns......................................................................................................................6
Declarando variveis ..................................................................................................................6
Declarando constantes.................................................................................................................7
Declarando Arrays.......................................................................................................................7
Operadores Lgicos.........................................................................................................................8
Estrutura de decises...................................................................................................................8
IF/ELSE..................................................................................................................................8
Igual (=).......................................................................................................................................9
Diferente (<>)...........................................................................................................................10
Maior (>) / Maior ou igual (>=)................................................................................................11
Menor (<) / Menor ou igual (<=)..............................................................................................11
Ou (or).......................................................................................................................................11
E (and).......................................................................................................................................12
Negao (not)............................................................................................................................13
Operadores Matemticos Bsicos..................................................................................................14
Precedncia...............................................................................................................................14
Exerccios.......................................................................................................................................15
Estruturas de lao (loop)................................................................................................................15
While.........................................................................................................................................15
For.............................................................................................................................................16
Repeat........................................................................................................................................17
Break / Continue.......................................................................................................................18
Exerccios.......................................................................................................................................18
Funes bsicas..............................................................................................................................19
Funes com strings .................................................................................................................19
Funes com Nmeros..............................................................................................................19
Funes com Data e Hora.........................................................................................................20
Funes de converso de tipo (cast)..........................................................................................20
1

Delphi e Lgica de Programao para Iniciantes


Exerccios..................................................................................................................................21
Componentes......................................................................................................................................21
Propriedades de componentes........................................................................................................21
Eventos dos componentes..............................................................................................................22
Componentes Bsicos....................................................................................................................22
Exerccios.......................................................................................................................................23
Banco de Dados..................................................................................................................................23
DataModule...................................................................................................................................23
BDE...............................................................................................................................................24
TTable.......................................................................................................................................24
Abrindo e fechando um tabela..............................................................................................24
Inserindo Registros...............................................................................................................24
Editando Registros...............................................................................................................25
Apagando registros...............................................................................................................25
Navegao entre registros....................................................................................................25
Procurando registros.............................................................................................................25
Locate..............................................................................................................................26
FindKey...........................................................................................................................26
FindNeareast....................................................................................................................27
TQuery......................................................................................................................................27
Carregando / Executando uma query...................................................................................27
Exerccios.......................................................................................................................................28
Componentes DataControl.............................................................................................................28
TDataSource..............................................................................................................................28
TDBGrid...................................................................................................................................29
TDBEdit....................................................................................................................................29
TDBText....................................................................................................................................29
Exerccio........................................................................................................................................29
Navegao..........................................................................................................................................29
TabOrder........................................................................................................................................29
VirtualKeys....................................................................................................................................29
Cdigo ASCII na navegao..........................................................................................................30
Exerccio........................................................................................................................................30
Formulrios.........................................................................................................................................30
Show e ShowModal.......................................................................................................................31
Criando formulrios em tempo de execuo.................................................................................31
Exerccios.......................................................................................................................................31

Delphi e Lgica de Programao para Iniciantes

Introduo ao Delphi
O Que o Delphi
Uma forma simples de definir o Delphi seria dizer que o Delphi uma ferramenta RAD (em
portugus Desenvolvimento Rpido de Aplicaes) para desenvolvimento desktop em Object
Pascal (ramificao da linguagem de programao Pascal, grosseiramente definida como Pascal
Orientado a Objetos). Comearemos este estudo conhecendo um pouco da IDE (em portugus
Ambiente Integrado de Desenvolvimento) do Delphi e criando nosso primeiro Hello World. Entre
as muitas verses do Delphi, iremos seguir nosso estudo utilizando a verso Turbo Delphi por ser
uma verso gratuita.

Criando um novo Projeto


Para o nosso primeiro Hello World iremos criar um formulrio simples com um boto que
quando for clicado apresentar a mensagem Hello World em um caixa de mensagem, porem antes,
iremos nos habituar melhor a IDE do Turbo Delphi. Vamos comear inserindo um novo projeto
em:
File -> New -> VCL Forms Application Delphi For Win32,
isso far com que um novo projeto seja criado e um formulrio vazio aparea no centro da tela.
Desta forma acabamos de iniciar um projeto de um aplicao comum, poderamos iniciar desta
mesma forma um projeto de uma nova dll, uma unit com um conjunto de funes, um pacote de um
projeto maior (bpl), etc. Esta rea onde o formulrio foi criado chamada de Design, entraremos
em detalhes em breve, vamos nos atentar agora as outras reas da desktop do Delphi.

IDE / Desktop
Pelo fato do Delphi ser uma ferramente RAD para desenvolver aplicaes visuais, sua IDE
foi projetada para facilitar o acesso a todas propriedades e eventos do projeto em desenvolvimento.
O IDE composto por vrias partes principais, onde temos:
Design

Esta a rea onde ser feita o design da interface grfica do projeto. aqui onde
desenhados os formulrios, onde so includos componentes como botes, caixas de texto, etc. Est
rea se encontra no centro da tela.
Code

Est a rea onde ser feita toda a codificao dos projetos criados. Toda inteligencia da
aplicao se encontra em sua codificao. Est rea se encontra junto com a rea de Design
podendo alternar entre uma o outro atravs de uma aba na parte inferior ou atrs da tecla F12.
Structure

Est a rea de estrutura do formulrio. Todos componentes criados em um determinado


formulrio sero apresentados de forma hierrquica nesta rea, sendo que, caso estejamos na rea
3

Delphi e Lgica de Programao para Iniciantes


Code a estrutura apresentada ser a do cdigo do formulrio, apresentando todos mtodos e
variveis criadas. Est rea se encontra no canto superior esquerdo.
Object Inspector

Est a rea de propriedades e eventos de um componente selecionado na rea de Design,


nesta rea onde sero definidas todas as caractersticas de um componente do projeto, desde o nome
at o evento disparado no momento em que o componente receber um clique do mouse por
exemplo. Est rea se encontra no canto inferior esquerdo.
Project Manager

Esta a rea de gerenciamento do projeto, todos os formulrios, units, datamodules, etc, que
forem criadas para o projeto corrente, estaro disponveis nesta rea, sendo possvel criar um grupo
de projeto e fazer o gerenciamento de mais de um projeto por vez. Est rea se encontra no canto
superior direito.
Tool Palette

Est a rea onde se encontro os componentes disponveis para o desenvolvimento de uma


aplicao. Os componentes disponveis podem mudar de acordo com o tipo de unit ou a are de
visualizao atual (code ou design). Esses componentes podem ser visuais ou no, como por
exemplo um boto sendo um componente visual e uma query sendo um componente no visual.
Est rea se encontra no canto inferior direito.

Ol Mundo!
Agora que j nos habituamos a IDE do Delphi, vamos desenvolver nosso primeiro Hello
World, para isso vamos inserir em qualquer parte do nosso formulrio um componente TButton que
consiste em um boto comum e vamos clicar duas vezes neste componente, isto far com que
alterne da are Design para a are Code com o mtodo Button1Click previamente implementado
(entraremos em detalhes posteriormente). Agora digite a seguinte linha de cdigo:
ShowMessage('Ol Mundo!');
Este cdigo fara com que, quando o boto que inserimos no formulrio for clicado, a aplicao ira
executar o mtodo ShowMessage que consiste em mostrar uma caixa de mensagem simples para o
usurio.
Salve este projeto em C:\Curso\HelloWorld (caso voc no possua esse diretrio, voc pode
cri-lo) e clique em Run -> Run no menu principal (ou simplesmente pressione a tecla F9), isto fara
com que o Delphi compile o projeto, gerando seu arquivo binrio e j o execute.

Logica e Pascal
A partir de agora, iremos estudar a parte mais importante deste curso, a parte de lgica de
programao e fundamentos da linguagem pascal. A grande maioria de desenvolvedores de software
espalhados pelo mundo concordam que basta ter a lgica bem assimilada para que seja possvel
desenvolver softwares em qualquer linguagem, isto por que, a soluo do problema sempre ser a
mesma, o que muda sintaxe usada para chegar a essa soluo.

Delphi e Lgica de Programao para Iniciantes

Premissas
Antes de comear a nos aprofundar no fantstico mundo do pascal, vamos nos atentar a
algumas regras da linguagem.

Fim de comando
Sempre no final de cada comando necessrio utilizar o caractere ; (ponto e virgula)
Variavel := 1 +2;

Atribuindo valores a variveis


Assim como foi demonstrado no exemplo anterior, para se atribuir o valor a uma varivel,
basta usar os caracteres := (dois pontos e igual) .
Variavel := Valor;

Comentrios
Uma boa pratica de programao o uso dos comentrios para identificar certos trechos de
cdigo que podem passar a ser complexos para entender depois de um determinado tempo ou caso
outra pessoa tenha a necessidade de dar manuteno neste cdigo. As duas maneiras mais comuns
de comentar um cdigo com o comentrio simples de uma linha e o bloco de comentrios.

Variveis / Constantes
De uma maneira simples, variveis e constantes so regies de memria onde damos um
nome e armazenamos valores de determinados tipos, com a diferena que as variveis podem ter
seus valor alterado durante a execuo de um aplicativo, enquanto que as constantes permanecem
sempre com o mesmo valor com qual foram declaradas.
Em um primeiro momento o uso de constantes pode parecer pouco til, porem, imagine uma
aplicao que realize diversos clculos com uma taxa de impostos fixa, no conhecendo o uso das
constantes, o comportamento esperado seria que, para cada calculo feito, fosse digitado o valor
desta taxa, porem, imagine que um dia essa taxa possa mudar, teramos que vascular o cdigo
inteiro atrs de ocorrncias da taxa antiga, correndo o risco de deixar algum calculo passar.

Definio de escopo
Quando dizemos escopo de uma varivel estamos nos referindo ao alcance desta varivel,
ou at onde ela est acessvel. Em Object Pascal (assim como na maioria das outras linguagens de
programao) uma varivel s pode ser acessada dentro do seu escopo. Se criarmos uma varivel
dentro de uma funo especifica, o escopo desta varivel limita-se ao corpo desta funo, ou seja,
esta varivel s poder ser acessada dentro desta funo.
5

Delphi e Lgica de Programao para Iniciantes

O uso da varivel 'MinhaVariavel' no mtodo 'FormCreate' no permitido


Na codificao do formulrio existe a rea Private e a rea Public, as variveis, contantes, funes,
etc, que forem declaradas no rea private estaro acessveis somente no formulrio atual, enquanto
que as declaradas em public estaro visveis para todos os formulrios que utilizarem o formulrio
onde a varivel foi declarada. Saber em qual escopo uma varivel se enquadra no projeto, ajuda a
fazer um melhor uso da memria da maquina.

Tipos mais comuns


Uma lista com os tipos mais comuns de dados tambm conhecidos como tipos primitivos
que usaremos no decorrer do nosso estudo

Integer Numero inteiro (de -2147483648 a 2147483647)


Double Ponto flutuante com 64 bits (utilizado para nmeros grandes e com casas
decimais)
Boolean Valor Booleano (true ou false)
String Cadeia de caracteres (utilizado para textos)
Date Referencia para data ou hora.

Declarando variveis
Assim como j explicado anteriormente, as variveis so espaos de memoria que
armazenam valores que podem ser alterados no decorrer da aplicao. Para declarar uma varivel
primeiro precisamos saber qual escopo ela se mostra necessria e qual o seu tipo.
A declarao de uma varivel sempre deve vir logo aps as palavras reservadas VAR,
PRIVATE ou PUBLIC sendo a primeira a mais comum, com a sintaxe:
NomeDaVariavel : Tipo;
Uma varivel pode ser de qualquer tipo reconhecido pelo Delphi, inclusive tipos criados
pelo prprio desenvolvedor. Uma importante observao que devido ao fato do Object Pascal ser
uma linguagem fortemente tipada, no possvel declarar uma varivel de um determinado tipo e
no decorrer da aplicao atribuir a ela um valor de um tipo diferente do seu tipo declarado.

Delphi e Lgica de Programao para Iniciantes

A segunda linha deste cdigo ocasionara uma erro de compilao.


Outra regra com relao as variveis diz respeito ao nome atribudo a varivel na sua
declarao, no sendo permitido o uso de palavras reservadas pelo delphi e nomes iniciados com
nmeros.

Declarando constantes
A declarao de constantes muito semelhante a declarao de variveis, com a principal
diferena que, na declarao da constante no obrigatrio especificar o tipo da constante e no
momento da declarao j deve ser atribudo um valor. A sintaxe mais comum para a declarao de
uma constante a seguinte:
NomeDaConstante = Valor
Apesar das regras de escopo se aplicarem tambm as constantes, a declarao de uma
constante deve ser feita logo aps a palavra reservado CONST, mesmo o escopo da constante sendo
global (are Public do formulrio).

Assim como as variveis, o nome de uma constante no pode ser uma palavra reservada do
delphi e nem pode comear com nmeros.

Declarando Arrays
Array (tambm conhecido como vetor) nada mais do que uma estrutura de memoria
utilizada para armazenar vrios dados de um mesmo tipo. possvel utilizar um array para
armazenar uma lista de valores como por exemplo uma lista de alunos. Um array comum possui um
tamanho fixo e o tipo de dado que ser armazenado em suas posies, essas definies so feitas no
momento da declarao do array. Um array tratado como uma varivel pelo Delphi seguindo as
mesmas regras de uma varivel comum. A sintaxe para a declarao de um array segue o seguinte
padro:
NomeDoArray : Array[posioInicial .. posioFinal] of Tipo;
Ou seja, podemos definir uma vetor de strings (maiores detalhes mais a frente) com 5
posies, para atribuir o nome de 5 pessoas diferentes, isto ficaria da seguinte forma:

Delphi e Lgica de Programao para Iniciantes

Note que comeamos nosso array na posio 0 e finalizamos na posio 4, fazendo com que nosso
array contivesse 5 posies
Analisando o exemplo, fica simples de entender que o array armazena uma estrutura de
variveis tendo cada uma seu ndice correspondente dentro do array.

Operadores Lgicos
Operadores lgicos so utilizados para definir valores booleanos (0 ou 1, true ou false) que
so usados principalmente em estruturas de deciso, sendo praticamente impossvel a construo de
uma aplicao sem o uso desses elementos. Os principais e mais comuns operadores lgicos so
estes:

Igual (=)

Diferente (<>)

E (and)

Ou (or)

Negao (not)

Para ajudar na compreenso dos operadores lgicos, vamos aprender a utilizar estruturas de deciso
para que possamos demonstrar as diversas maneiras de se utilizar operadores lgicos.

Estrutura de decises
Em determinadas aplicaes necessrio que o aplicativo seja capaz de tomar diferentes
caminhos de acordo com as condies que apaream no decorrer de sua execuo. Para que isso
seja possvel existem as estrutura de decises, tendo como principal representante o IF/ELSE.
IF/ELSE

O IF/Else a maneira mais comum de tomar uma deciso no fluxo de uma aplicao atravs
de um teste lgico. Fazendo uma abstrao a vida real, o uso do IF seria algo como:
Se isso for verdadeiro Faa
Esta Operao
Caso contrario
Esta Outra

Delphi e Lgica de Programao para Iniciantes


Esta a maneira mais simples e correta de entender o uso de um IF. Voltando ao Pascal, a
sintaxe bsico do IF a seguinte:
IF <condio> Then
...
Else
...
Sendo que o uso do ELSE no obrigatrio e o ELSE pode ser combinado com outro IF,
exemplo:
IF <condio> Then
...
Else If <condio> Then
...
Utilizaremos o IF para entendermos melhor como trabalhar com operadores lgicos,
lembrando que o IF testa condies boleanas, sendo assim, podemos utilizar o IF para validar
variveis booleanas da mesma forma que utilizamos o IF para validar operaes lgicas.

Igual (=)
O operador lgico de igualdade utilizado para validar se o valor de duas variveis igual,
independente do tipo da varivel desde que as duas variveis sejam do mesmo tipo, veja neste
exemplo quais so os resultados possveis para uma comparao de igualdade:
1

1 True (Verdadeiro)

False (Falso)

Utilizando variveis, constantes e estrutura de decises, podemos demonstrar o uso deste


operador lgico da seguinte maneira.

Seguindo o fluxo do exemplo acima, ao clicar no boto do formulrio seria apresentada a


mensagem Sua Sugesto est correta, mas caso o valor da varivel numeroSugerido ou da constante
NUMERO_ESPERADO fosse alterado fazendo com que tivessem valores diferentes, a aplicao
apresentaria a mensagem Este no o numero esperado.
9

Delphi e Lgica de Programao para Iniciantes

Diferente (<>)
O operador de diferena funciona exatamente como o operador de igualdade, porem,
executando a operao inversa. Se na igualdade validamos se o valor de duas variveis so iguais,
na diferena validamos se o valor da duas variveis so diferentes, fazendo com que o resultado
desta validao seja verdadeiro para variveis distintas e falso para variveis semelhantes, sendo
assim, os possveis resultados so os seguintes:
1

<>

False (Falso)

<>

2 True (Verdadeiro)

Para melhor ilustrar esta questo, usaremos o exemplo a baixo:

A execuo do exemplo acima, faria com que ao clicar no boto do formulrio, fosse
apresentada a mensagem Este nome comum pois a primeira validao do IF iria retornar False
devido ao fato do valor da varivel nomePessoa e da constante NOME_COMUM serem iguais e
como nossa deciso esta sendo tomada a partir de uma diferena, o fluxo da aplicao seguiria para
o Else.

Delphi e Lgica de Programao para Iniciantes

Maior (>) / Maior ou igual (>=)


possvel verificar se um valor maior do que outro e neste mesmo processo possvel
tambm verificar se os valores so iguais, isto atravs do sinal de maior (>) e o maior ou igual (>=).
1

>

0 True (Verdadeiro)

>

False (Falso)

>

False (Falso)

>=

0 True (Verdadeiro)

>=

1 True (Verdadeiro)

>=

False (Falso)

Menor (<) / Menor ou igual (<=)


Ao contrario do maior / maior ou igual, o menor (<) e o menor ou igual (<=) verifica se um
valor menor do que outro e verifica tambm se menor ou igual.
1

<

False (Falso)

<

False (Falso)

<

2 True (Verdadeiro)

<=

<=

1 True (Verdadeiro)

<=

2 True (Verdadeiro)

False (Falso)

Ou (or)
Em determinadas situaes necessrio verificar mais de uma condio em um fluxo da
aplicao, onde, caso apenas uma esteja de acordo (verdadeira) j o suficiente para executar uma
determinada sequncia de cdigo. Isso se torna possvel atravs do operador lgico OU (or) que
verifica se pelo menos uma das condies verificadas verdadeira.
1 > 0 or

'A' = 'B'

True (Verdadeiro)

1 < 2 or

'C' <> 'D' True (Verdadeiro)

1 = 3 or

10 >= 15

False (Falso)

11

Delphi e Lgica de Programao para Iniciantes


Utilizando o Ou a operao sempre resultara em verdadeiro caso pelo menos uma
das comparaes resulte em verdadeiro. Veja uma exemplo do uso do ou

obs: Em uma comparao OR os termos sempre so analisados da esquerda para direita,


portanto, caso algum termo resulte em um valor true os outros termos sero ignorados.

E (and)
Diferente do ou o E (and) s resulta em verdadeiro caso todas as condies resultem em
verdadeiro.
1 > 0 and 'A' = 'B'

False (Falso)

1 < 2 and 'C' <> 'D' True (Verdadeiro)


1 = 3 and 10 >= 15

False (Falso)

Usando o mesmo tema exemplo dado para o ou, vamos mudar um pouco para podermos
demonstrar o uso do E.

Delphi e Lgica de Programao para Iniciantes

Analisando esse exemplo, fica claro que a aplicao apresentara a mensagem 'Aluno
Reprovado', devido ao fato do valor da variavel FaltasAluno maior do que o valor da constante
MAX_FALTAS, porem poderamos mudar o valor da varivel FaltasAluno para 20, desta forma a
aplicao iria apresentar a mensagem 'Aluno Aprovado', j que as duas validaes estariam testadas
no IF seriam verdadeira.
Obs: Assim como no OR o AND compara os termos da esquerda para direta, sendo assim,
caso algum termo resulte em false os outros termos no sero analisados.

Negao (not)
Podemos utilizar o operador lgico de negao (not) para negar alguma condio booleana,
a grosso modo, o uso do not faz com que se 'inverta' o resultado de uma comparao booleana.
not True

False (Falso)

not False

True (Verdadeiro)

not (1=1)

False (Falso)

not (2 > 3)

True (Verdadeiro)

Vamos mudar um pouco nosso exemplo do aluno, para podermos demonstrar o uso do not:

13

Delphi e Lgica de Programao para Iniciantes

Operadores Matemticos Bsicos


Assim como em qualquer linguagem o Pascal tambm trabalha com operaes matemticos.
Limitaremos nosso estudo as 4 operaes bsicas e o resto da diviso:
Soma

Subtrao

Diviso

Multiplicao

Resto

mod

Precedncia
A precedncia das operaes matemticas no pascal segue a mesma precedncia da
matemtica:
Primeiro

*, /, mod

Segundo

+, -

Delphi e Lgica de Programao para Iniciantes


Porem, podemos forar a execuo de uma operao matemtica de menor procedncia
antes de uma de maior utilizando parenteses:
10 * 5 + 3
Primeiro seria executada a multiplicao 10 * 5 resultando em 50 e este valor seria somando ao 3
resultando em 53
10 * (5 + 3)
Desta forma, primeiro seria executado a soma 5 + 3 resultando em 8 e esse valor seria
multiplicado ao 10 resultando em 80.

Exerccios
Para os exerccios a seguir, o uso de variveis livre, independente da quantidade e do tipo
de variveis que forem utilizadas:
1. Utilizando a ideia do aluno sendo aprovado ou no, faa uma rotina para que sejam somadas
3 notas, tire a mdia delas e verifique se o aluno foi aprovado, reprovado ou se pode fazer
exame para recuperar nota. Utilize uma constante para armazenar a mdia de aprovao do
curso e a media para exame. Mostre para o usurio o resultado e depois altere o valor das
variveis para chegar em diferentes resultados.
2. Calcule quanto um funcionrio recebe em um ano (ignorando 13 salrio e frias), para
realizar esse calculo crie uma constante para armazenar o salrio mensal bruto do
funcionrio e a porcentagem de tributao paga mensalmente. Mostre para o usurio o
resultado e depois altere o valor das constantes para chegar em diferentes resultados.

Estruturas de lao (loop)


Utilizamos laos quando queremos executar um bloco de instrues um numero
determinado de vezes, mesmo esse numero sendo conhecido ou no.

While
O lao while executado enquanto uma determinada condio for verdadeira:
Enquanto for verdadeiro faa
Esta operao
O while utilizado geralmente quando no se sabe o numero de interaes do lao. Para
exemplificar o uso do while, vamos fazer uma contagem regressiva comeando em 10 e terminado
em 0.

15

Delphi e Lgica de Programao para Iniciantes

For
Diferente do lao while o lao for utilizado quando se sabe a quantidade de interaes, pois
na sintaxe da sua implementao especificado a quantidade de interaes.
Para contador valendo x at y faa
Esta operao
Diferente do while o for executado at que a condio seja verdadeira. O for um lao
largamente utilizando em operaes com arrays por utilizar um contador que vai incrementando
automaticamente a cada iterao.

Note que foi necessrio declarar a varivel I para utiliza la como contador.
No exemplo acima especificamos na implementao do lao que a varivel I comearia
valendo 0 (zero) e o lao iria ser executado at que o varivel I estivesse valendo 4 (quatro). O
resultado seria cinco mensagens na tela uma com cada nome atribudo no array de nomes seguindo
a ordem de atribuio.

Delphi e Lgica de Programao para Iniciantes


Seria possvel fazer com que no exemplo acima a aplicao apresentasse os nomes na ordem
contraria a de atribuio? Comeando pelo ndice 4 e terminando no ndice 0 ? sim possvel, ao
alterar a implementao do lao for trocando o TO por DOWNTO o contador passa a ser
decrementado ou invs de ser incrementado.

Repeat
At agora estudamos laos que primeiro checam uma condio para depois realizar sua
primeira iterao, no lao repeat esta regra muda, primeiro a aplicao vai realizar um iterao no
lao para depois checar se a condio permite a execuo da prxima iterao. Assim como o for o
repeat executado at que a condio seja verdadeira.
Repita
estes comandos
at esta condio
Mesmo que inicialmente a condio de parada do lao seja verdadeira antes de sua primeira
iterao, os comandos so executados pelo menos uma vez, diferente dos laos anteriores. Para
exemplificar o uso lao repeat vamos fazer uma contagem de 0 (zero) at um determinado numero.

17

Delphi e Lgica de Programao para Iniciantes

Break / Continue
Caso seja necessrio sair de um lao interrompendo sua execuo, basta usar o comando
break, caso a inteno seja apenas pular desta iterao para a prxima, voltando para o comeo do
lao basta utilizar o comando continue

Exerccios
1. Fao uma contagem regressiva utilizando o lao for.
2. Faa uma contagem utilizando o lao while comeando em 0 (zero) at achar 3 nmeros
pares.
3. Faa uma contagem nos 3 tipos de laos comeando em 0 (zero) e terminando em 10 (dez)
mostrando na tela mensagens somente com os nmeros impares.
4. Faa uma contagem nos 3 tipos de laos comeando em 0 (zero) e terminando em 10 (dez),
porem, force a sada do lao aps apresentar o numero 5.

Delphi e Lgica de Programao para Iniciantes

Funes bsicas
O pascal j disponibiliza algumas funes j implementadas, funes essas que so comuns
em qualquer linguagem.

Funes com strings


Funo

Aplicao

Sintaxe

Length

Recuperar o tamanho de uma


string ou de um Array

VarInteira := Length(varTexto);

Copy

Copia parte de uma string

StrFinal := copy(varTexto,
posioInicial, quantosCaracteres);

Pos

Recupera a posio de um
determinado caractere (ou
conjunto) dentro de uma string

VarInterira := Pos('A',varTexto);

Trim

Elimina espaos a direita e a


esquerda de uma string (utilize
TrimLeft para eliminar somente a
esquerda e TrimRight somente a
direita)

StrFinal := Trim(varTexto);

StringReplace

Substitui parte de uma string por


outra

StrFinal := StringReplace(varTexto,
caracterASubstituir, novoCaracter,
outrasOpcoes);

Funes com Nmeros


Funo

Aplicao

Sintaxe

Inc

Incrementa o valor de uma


variavel do tipo inteiro

Inc(varInteiro);

Random

Retorna um numero inteiro


aleatrio.

VarInteira := Random(range);
obs: utilizar sempre a funo
Randomize antes de usar a random.

19

Delphi e Lgica de Programao para Iniciantes

Funes com Data e Hora


Funo

Aplicao

Sintaxe

Date

Retorna a data atual

VarData := Date;

Now

Retornar a data e hora atual

VarDataTempo := now;

IncDay

Incrementa dias a uma data

VarData := incDay(varData, dias);


obs: caso no informe a quantidade de
dia, a funo ira incrementar somente 1

DaysBetween

Retorna numero de dias entre uma


data e outra

VarInteira := DaysBetween(varData,
varProximaData);

Funes de converso de tipo (cast)


Funo

Aplicao

Sintaxe

IntToStr

Converte um integer para uma


string

VarStr := IntToStr(varInteira);

FloatToStr

Converte um double para uma


string

VarStr := FloatToStr(varDouble);

StrToInt

Converte uma string para um


Integer

VarInteira := StrToInt(varStr);

StrToFloat

Converte uma string para um


double

VarDouble := StrToFloat(varStr);

DateToStr

Converte um Date para uma String

VarStr := DateToStr(varData);

DateTimeToStr

Converte um DateTime (data e


hora) para uma string

VarStr :=
DateTimeToStr(varDataEHora);

TimeToStr

Converte um Time para uma string

VarStr := TimeToStr(varHora);

StrToDate

Converte uma String em um Date

VarData := StrToDate(varStr);

FloatToStrF

Converte um Double para uma


String formatada

VarStr :=
FloatToStrF(varDouble,formato,
precisao, casas decimais);

Delphi e Lgica de Programao para Iniciantes

Exerccios
1. Crie uma constante com uma palavra qualquer e utilizando laos e funes do pascal
apresente uma mensagem com essa palavra escrita ao contrario.
2. Crie uma constante com o texto '133,25' e substitua a virgula por um ponto (. ) em uma
varivel.
1. faa usando pos e copy
2. faa usando o StringReplace
3. Crie uma constante com um nome qualquer e mostre uma mensagem dizendo a quantidade
de caracteres que aquele nome possui.
4. Armazenar uma numero aleatrio (de 0 a 4) em uma varivel, incrementar esse numero a
data atual, apresentar uma mensagem com a data incrementada, gerar outro numero
aleatrio, incrementar na data que j foi incrementada e mostrar uma mensagem com a
quantidade de dias entre a data atual e data incrementada.
5. Refazer o exerccio do salrio anual do funcionrio, apresentando o resultado final
formatado em reais.

Componentes
Uma das vantagens de se utilizar uma ferramente como o Delphi a facilidade em
manipular componentes visuais, tanto suas propriedades como seus eventos, este fato faz com que
muitas vezes confundam o Delphi como uma linguagem orientada a eventos, sendo que o Delphi
como j dito anteriormente baseado em Object Pascal, que uma linguagem orienta a objetos.

Propriedades de componentes
As propriedades de um componente so a parte mais importante do componente, so elas
que determinam a forma como o componente vai ser apresentado, quais informaes so
armazenadas no componente, tamanho, cor, etc. Existem duas formas de manipular as propriedades
de um componente, em tempo de design e em tempo de execuo, sendo a primeira no momento do
design do projeto utilizando a Object Inspector e a segunda totalmente dinmica, de acordo com o
fluxo de execuo da aplicao, exemplo:
componente.propriedade := valor;

21

Delphi e Lgica de Programao para Iniciantes


A maioria das propriedades so comuns entre os componentes facilitando a assimilao de
novos componentes. Esta lista contem algumas das propriedades mais comuns.
Propriedade Propsito
Text

Texto digitado no componente, por


exemplo um texto digitado em uma
caixa de texto.

Caption

Texto de ttulo, por exemplo o texto


de um boto

Name

O nome do componente.

Width

Largura do componente

Height

Altura do componente

Enable

Se o componente est ou no
desabilitado

Visible

Se o componente est ou no visvel.

Eventos dos componentes


Os eventos dos componentes geralmente ditam a forma como a aplicao vai se comportar.
possvel executar rotinas em diversos eventos diferentes de qualquer componente, ao enviar foco,
ao tirar foco, ao pressionar uma tecla, ao clicar, ao passar com o mouse encima, etc. Para verificar
quais eventos um determinado componente disponibiliza e implementar rotinas para estes eventos,
basta selecionar o componente e na Object Inspector mudar para a aba de eventos.

Componentes Bsicos
Componente

Utilizao

TEdit

Caixa de texto

TLabel

Texto fixo

TButton

Boto comum

TBitBtn

Boto que permite imagem

TMaskEdit

Caixa de texto com mascara, utilizado


geralmente para campos de telefone, data, etc.

TMenuItem

Utilizado para fazer Menu em formulrio

TGroupBox

Caixa para agrupamento de componentes,


funciona tambm como um contender

TRadioButton

Opo de seleo, utilizado para selees nicas,


por exemplo Sexo: Masculino / Feminino.

TCheckBox

Opo de checagem, utilizado para mltiplas


selees.

Delphi e Lgica de Programao para Iniciantes


TComboBox

Caixa de seleo nica baseado em texto,


utilizado geralmente quando as opes no so
totalmente definidas.

TImage

Para apresentar imagem.

TListView

Listagem, pode ser utilizado para varias


finalidades possibilitando o uso de colunas,
imagens, etc.

TMemo

Caixa de texto para textos longos que permitam


quebra de linha.

TOpenDialog

Caixa de dialogo padro do windows para


abertura de arquivos

TSaveDialog

Caixa de dialog padro do windows para


gravao de arquivo.

Exerccios
1. Refazer o exerccio do salrio anual, fazendo uma interface com caixas de texto para o
salario mensal, um combo para armazenar as taxas e deixar selecionvel, um label para
apresentar o resultado final e colocar uma caixa de checagem para determinar se devera
calcular o a taxa ou no. Incluir uma caixa de texto para informar o valor de iseno do
imposto de renda e um label para informar se o funcionrio precisa declarar imposto de
renda ou no.
2. Criar uma interface semelhante a um cadastro contendo as seguintes informaes: Nome,
Data de Nascimento, Sexo, Cidade (em um combo com as seguintes opes So Paulo,
Campinas, Piracicaba), se possui dependentes, telefone e ao final atravs de uma rotina
programada no clique de um boto, colocar todas as informaes em um memo, separando o
nome do sobrenome e calculando a idade atravs da data de nascimento. Validar na sada do
campo de data de nascimento se a data digitada uma data valida.
3. Salvar as informaes do exerccio anterior em um arquivo de texto utilizando o
componente SaveDialog para escolher o diretrio e utilizar a funo SaveToFile do
componente memo para salvar o arquivo.

Banco de Dados
DataModule
Uma boa prtica de desenvolvimento quando se esta trabalhando com banco de dados o
uso de DataModules, que consiste em uma especie de formulrio no visual para armazenar
componentes de acesso a dados, centralizando esses componentes e tornando mais fcil o acesso
atravs dos outros formulrios. Para adicionar um datamodule ao projeto atual, basta clicar com o
boto direito encima do projeto no Project Manager e depois ir em Add New -> Other ->
DataModule.
23

Delphi e Lgica de Programao para Iniciantes

BDE
Uma das tecnologias que o Delphi trabalha nativamente para acesso ao banco de dados a
tecnologia BDE, que permite o acesso a vrios bancos de dados diferentes, tendo como principal o
paradox e os arquivos dbf.

TTable
O ttable o componente utilizado para abertura de uma tabela que seja possvel ser aberta
via tecnologia bde. A maioria dos mtodos que veremos para o componente ttable esto disponveis
para outros componentes de acesso a banco de dados, obtendo os mesmos resultados.
Abrindo e fechando um tabela

Para abrir uma tabela e carregar seu contedo na memria, necessrio primeiramente
preencher algumas propriedades do componente ttable como por exemplo:
Propriedade

Finalidade

DatabaseName

Alias (bde ou odbc) ou diretrio onde se


encontra a tabela

TableName

Nome da tabela

Exclusive

Mtodo de abertura da tabela, exclusivo (true)


ou compartilhado (false), por padro esta opo
vem setado como false

Active

Determina se uma tabela vai estar aberta ou no.


Setando como active = true em tempo de design
possvel ver os registros da tabela ainda em
tempo de design.
Obs: Qualquer uma dessas propriedades pode ser alterada em tempo de execuo

Aps preencher as principais propriedades do componente basta executar o mtodo open do


componente, com a seguinte sintaxe:
tabela.open;
Caso no ocorra nenhum erro na abertura da tabela a aplicao continuara com o fluxo
normal. Para fechar a tabela basta utilizar o mtodo Close.
tabela.close;
Lembrando que, utilizando acesso via BDE, cada tabela aberta consome parte da memria
da BDE correndo o risco de ocasionar falhas com um numero grande de tabelas abertas.
Inserindo Registros

Para inserir registros em uma tabela pelos componentes de tabela do delphi, basta utilizar o
mtodo Append, fazendo com que insira uma nova linha em branco na tabela, sendo assim, aps o
append necessrio preencher os valores paras os campos da tabela. Aps preencher as
informaes dos campos, basta utilizar o mtodo post para efetivar as informaes no banco de
dados, ou o mtodo cancel para cancelar as alteraes e remover a nova linha inserida.

Delphi e Lgica de Programao para Iniciantes


Tabela.Append;
Tabela.FieldByName('Nome').value := nome;
Tabela.FieldByName('Fone').value := telefone;
Tabela.post;
Os campos que no forem preenchidos neste processo sero gravados como nulo no banco.
Editando Registros

Para editar um registro ativo em um componente ttable basta utilizar o mtodo Edit, fazendo
com que o registro entre em modo de edio. Aps deixar o registro em modo de edio o mtodo
de gravao o mesmo do append, post para efetivar as alteraes e cancel para cancelar a edio.
Tabela.edit;
Tabela.FieldByName('Nome').value := nome;
Tabela.FieldByName('Fone').value := telefone;
Tabela.post;
Apagando registros

Para apagar o registro ativo em um componente ttable basta utilizar o mtodo Delete.
Tabela.delete;
Navegao entre registros

At agora vimos como abrir e fechar uma tabela, inserir novos registros, editar e deletar o
registro ativo, porem ainda no vimos como navegar entre os registros gravados na tabela, para isso
existe um conjunto de mtodos especficos para isso. A navegao entre registros se d atravs de
um ponteiro, ou seja, o registro ativo na verdade o registro em que esta o ponteiro da tabela.
Mtodo

Finalidade

First

Move o ponteiro para o primeiro registro

Last

Move o ponteiro para o ultimo registro

Next

Move o ponteiro para o prximo ponteiro

Prior

Move o ponteiro para o registro anterior


Para saber se um o ponteiro esta no ultimo registro, basta usar o mtodo EOF, quer retorna
true se o ponteiro j est no ultimo registro.
Procurando registros

Uma das coisas mais comuns buscar um registro em uma tabela e o componente ttable
disponibiliza algumas maneiras de realizar esta busca.

25

Delphi e Lgica de Programao para Iniciantes


Locate

A forma mais comum e mais simples de se procurar um registro em uma tabela uso do
mtodo locate. O mtodo locate uma busca sem uso de ndices e por qualquer campo da tabela.
Retornar true se encontra o registro e move o ponteiro para a primeira ocorrncia desse registro. A
Sintaxe do mtodo a seguinte:
tabela.locate(campo,valor,opcoes);
Um exemplo pratico do uso do locate para procurar um registro uma tabela.

FindKey

O findkey um mtodo de busca atravs do uso de ndices, sendo assim necessrio que a
tabela esteja indexada pelo campo que se deseja fazer a busca. Para alterar o ndice ativo de uma
tabela existem duas propriedades, o indexName que deve ser preenchida com o nome do ndice e a
propriedade indexFieldName que deve ser preenchida com o nome do campo a se indexar.
Lembrando que, em uma banco de dados paradox, para indexar um campo, este deve possuir um
ndice previamente criado. A sintaxe do uso do findKey a seguinte:
tabela.findkey(valor);
Um exemplo prtico do uso do mtodo findkey indexando uma tabela por um campo
determinado.

Assim como o locate o findKey retorna true se acha o registro e move o ponteiro para o
registro encontrado.

Delphi e Lgica de Programao para Iniciantes


FindNeareast

Assim como o findkey o FindNeareast uma pesquisa basada no ndice ativo da tabela, com
uma diferena, enquanto o findkey procura exatamente o termo passado como parmetro, o
findNeareast busca por parte do termo, simulando um like de sql.

Outra diferena entre os dois mtodos que o findnearest no tem retorno, ele simplesmente
move o ponteiro para o registro encontrado.

TQuery
At agora aprendemos a abrir uma tabela e manipular seus registros, porem, algumas vezes
necessrio juntar informaes de varias tabelas em uma nica para conseguir chegar em um
determinado resultado, algo que uma simples query j resolveria. Para essa finalidade existe o
componente TQuery que funciona muito semelhante ao componente ttable mas com algumas
particularidades especificas para o uso de instrues SQL. Para tornar nosso aprendizado mais
dinmico, vamos centrar as particularidades deste componente, aproveitando o que j conhecemos
de navegao do componente ttable.
Carregando / Executando uma query

Existem duas formas de executar uma query com o componente tquery, sendo cada uma
especifica para uma finalidade, mas antes de entrar neste detalhes, primeiro precisamos saber como
especificar qual query ser executada, para isso existe a propriedade sql do componente tquery,
propriedade esta que contem alguns mtodos como por exemplo o mtodo add, que ser o que
usaremos para informar nossa query ao componente.

Sabendo como "informar" nossa query ao componente, precisamos saber agora qual ser a
finalidade da query, se for somente uma query de consulta (select por exemplo) ser necessrio um
ponteiro no resultado para que possamos manipular o registro, para isso usaremos o mtodo OPEN
do componente tquery, caso seja uma query de manipulao de dados (insert, delete, update, ou
mesmo comandos de DDL), um ponteiro no se mostra necessrio, sendo assim usaremos o mtodo
Exec do componente tquery.

27

Delphi e Lgica de Programao para Iniciantes

Aps abrir a query, a navegao dos dados segue o mesmo padro do componente ttable.

Exerccios
1. Criar uma tabela paradox com o nome de pessoa, com o campo id (autoincremento) e o
campo nome (varchar 35), criar uma aplicao para inserir dados nesta tabela (via
componente ttable) e criar uma rotina para preencher um memo com todos as pessoas
cadastradas nesta tabela.
2. Repetir o exerccios anterior usando o componente tquery no lugar do componente ttable

Componentes DataControl
Componentes datacontrol so componentes criados para facilitar a integrao entre
componentes visuais e componentes de acesso a dados.

TDataSource
O componente TDataSource serve como ponte entre os dataSets (ttable, tquery, etc.) e os
componentes DataControl. Portanto, para cada dataset que ser associado a um componente
dataControl necessrio criar o seu componente tdataSource correspondente. A propriedade que
especifica a qual dataset este TdataSource se refere-se a propriedade DataSet, basta preencher
essa propriedade com o nome do dataset. Feito isto, j podemos comear a usar os componentes
datacontrol associados a um tabela.

Delphi e Lgica de Programao para Iniciantes

TDBGrid
O componente tdbGrid um componente que apresenta os dados de uma tabela em um
formato parecido com uma planilha, permitindo ou no edio direta dos dados. Com o TdbGrid
podemos especificar quais campos sero mostrados, cor da linha, fonte, etc. Para integramos um
tdbgrid a uma tabela, basta no object Inspector preencher a propriedade dataSource do dbgrid com
o nome do datasource que est apontando para a tabela que ser exibida no dbgrid e depois
especificarmos pela propriedade columns os campos que sero apresentados.

TDBEdit
O componente TDBEdit se assemelha a um componente tedit com a diferena que este
componente pode estar ligado diretamente a um campo de um dataset. Assim como o componente
TDBGrid, para ligar um um TDBEdit a um campo de um dataset, basta preencher sua propriedade
datasource com o nome do datasource desejado e a propriedade DataField com o nome do campo a
qual esse tdbedit ir se referenciar. Ao editar o contedo deste componente, automaticamente o
contedo do campo est sendo editado, deixando o registro ativo em modo de edio.

TDBText
O componente TDBText se assemelha a um componente tlabel, e funciona exatamente igual
ao componente TDBEdit com a diferena que no proporciona uma forma de editar o contedo da
informao, se limitando a ser um componente somente para visualizao.

Exerccio
1. Criar um cadastro simples de pessoa com os campos Id (autoincremento) nome e e-mail
(varchar 35). Criar a interface com dbgrid, dbedit e dbtext. Usar botes para editar, inserir
ou apagar um registro.

Navegao
TabOrder
O que determina a ordem de foco dos campos quando se pressiona a tecla tab em um
formulrio a propriedade tabOrder dos componentes, basta ordenar os componentes na ordem
desejada de foco. Lembrando que cada continer do formulrio possui sua ordem individual.

VirtualKeys
Algo muito comum determinar aes especificas em componentes de acordo com uma
determinada tecla que for pressionada, existem duas formas de se controlar isto, uma delas (talvez a
mais fcil) atravs do uso de virtualKey, que nada mais do que constantes do Delphi para
auxiliar neste propsito. Basta comparar a tecla pressionada com a virtualKey desejada. Algo
importante a se notar neste momento que o uso de virtualkey s se torna possvel no evento
onKeyDown dos componentes. Um exemplo desta tcnica:

29

Delphi e Lgica de Programao para Iniciantes

note que a varivel Key (que representa a tecla pressionada) na verdade um parmetro da funo
onKeyDown
No exemplo a cima, ao se pressionar a tecla F4, alguma rotina poder ser executada.

Cdigo ASCII na navegao


Outra forma de verificar a tecla pressionada e condicionar a navegao a isto o uso da
verificao do cdigo ascii da tecla. Funciona da mesma forma que os virtualKeys porem, ao invs
de se comparar com uma virtualKey se compara ao cdigo ascii de uma tecla qualquer e o evento
mais comum a se usar esta verificao o evento onKeyPress.

Esta rotina verifica se a tecla pressionada tecla enter (#13 da tabela ascii), caso seja, envia o
foco do formulrio para outro componente.

Exerccio
1. Refaa o exerccio do cadastro simples, melhorando a navegao com as tcnicas passadas
neste tpico.

Formulrios
Os formulrios no Delphi so na verdade objetos que devem ser criados na memria antes
do uso e consequentemente limpados da memria quando seu uso passa a no ser mais necessrio.
Para inserir um novo formulrio ao projeto atual, basta fazer na mesma forma que se adiciona um
DataModule, atravs do Project Manager. O Delphi consegue gerencial quais formulrios sero
criados no momento em que a aplicao ser executada ou os que ser criados dinamicamente, por
padro, sempre que inserimos um novo formulrio ao projeto, este ser setado para ser criado
automaticamente. Para manipular este gerenciamento bastar ir no menu:
Project -> Options -> Forms
A lista da esquerda determina os formulrios que sero criados automaticamente quando a
aplicao for carregada e a lista da direita so os fomulrios disponveis no projeto. Note que ainda
existe a indicao Main Form com um combo contendo o nome dos formulrios do projeto, o

Delphi e Lgica de Programao para Iniciantes


formulrio que for identificado como Main Form passa a ser o formulrio principal da aplicao,
isso significa que ser o primeiro a ser criado e que se por algum motivo for descarregado a
aplicao ser encerrada.

Show e ShowModal
Existem duas forma de abrir um formulrio, o mtodo show e o mtodo ShowModal. A
principal diferena entre os dois mtodos que, com o show o formulrio aberto mas continua a
ser possvel manipular o formulrio anterior, enquanto que, com o ShowModal os formulrios
anteriores passam a ficar desabilitados, permitindo a manipulao somente do ultimo formulrio
aberto.

Criando formulrios em tempo de execuo


Assim como dito anteriormente, quando um formulrio no for setado para ser criado junto
com a aplicao necessrio cria-lo na memria e limpa-lo quando este deixar de ser necessrio.
Existem inmeras formas de se fazer isso, portanto, pode acontecer casos em que voc se depare
com outras forma e questione se esta a mais correta do que a outra, a resposta , depende, mas no
entraremos nesses detalhes. Vamos seguir o seguinte exemplo para criar um formulrio em tempo
de execuo:

Exerccios
1. Refaa o exerccio do cadastro simples adicionando o campo cidade (inteiro) na tabela de
pessoa e criando uma tabela de cidades com id (autoinc) e nome (varchar 35), no cadastro
adicione um campo para inserir o cdigo da cidade e crie um formulrio para pesquisar as
cidades cadastradas.

31

Você também pode gostar