Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila Delphi Iniciantes
Apostila Delphi Iniciantes
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
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.
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
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
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.
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;
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
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.
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:
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
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)
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)
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.
>
0 True (Verdadeiro)
>
False (Falso)
>
False (Falso)
>=
0 True (Verdadeiro)
>=
1 True (Verdadeiro)
>=
False (Falso)
<
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
1 = 3 or
10 >= 15
False (Falso)
11
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)
False (Falso)
Usando o mesmo tema exemplo dado para o ou, vamos mudar um pouco para podermos
demonstrar o uso do E.
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
Subtrao
Diviso
Multiplicao
Resto
mod
Precedncia
A precedncia das operaes matemticas no pascal segue a mesma precedncia da
matemtica:
Primeiro
*, /, mod
Segundo
+, -
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.
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
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.
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
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.
Funes bsicas
O pascal j disponibiliza algumas funes j implementadas, funes essas que so comuns
em qualquer linguagem.
Aplicao
Sintaxe
Length
VarInteira := Length(varTexto);
Copy
StrFinal := copy(varTexto,
posioInicial, quantosCaracteres);
Pos
Recupera a posio de um
determinado caractere (ou
conjunto) dentro de uma string
VarInterira := Pos('A',varTexto);
Trim
StrFinal := Trim(varTexto);
StringReplace
StrFinal := StringReplace(varTexto,
caracterASubstituir, novoCaracter,
outrasOpcoes);
Aplicao
Sintaxe
Inc
Inc(varInteiro);
Random
VarInteira := Random(range);
obs: utilizar sempre a funo
Randomize antes de usar a random.
19
Aplicao
Sintaxe
Date
VarData := Date;
Now
VarDataTempo := now;
IncDay
DaysBetween
VarInteira := DaysBetween(varData,
varProximaData);
Aplicao
Sintaxe
IntToStr
VarStr := IntToStr(varInteira);
FloatToStr
VarStr := FloatToStr(varDouble);
StrToInt
VarInteira := StrToInt(varStr);
StrToFloat
VarDouble := StrToFloat(varStr);
DateToStr
VarStr := DateToStr(varData);
DateTimeToStr
VarStr :=
DateTimeToStr(varDataEHora);
TimeToStr
VarStr := TimeToStr(varHora);
StrToDate
VarData := StrToDate(varStr);
FloatToStrF
VarStr :=
FloatToStrF(varDouble,formato,
precisao, casas decimais);
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
Caption
Name
O nome do componente.
Width
Largura do componente
Height
Altura do componente
Enable
Se o componente est ou no
desabilitado
Visible
Componentes Bsicos
Componente
Utilizao
TEdit
Caixa de texto
TLabel
Texto fixo
TButton
Boto comum
TBitBtn
TMaskEdit
TMenuItem
TGroupBox
TRadioButton
TCheckBox
TImage
TListView
TMemo
TOpenDialog
TSaveDialog
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
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
TableName
Nome da tabela
Exclusive
Active
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.
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
Last
Next
Prior
Uma das coisas mais comuns buscar um registro em uma tabela e o componente ttable
disponibiliza algumas maneiras de realizar esta busca.
25
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.
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
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.
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
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.
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
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.
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