Escolar Documentos
Profissional Documentos
Cultura Documentos
Identificadores podem ser constantes, tipos, variveis, procedures, funes, unidades, programas e campos
de registros.
No existe limite de caracteres para o nome de um identificador mas apenas os 63 primeiros caracteres so
significantes (no podendo ser idntico ao nome das palavras reservadas). O nome de um identificador deve
ser iniciado por Letras ou o carcter underscore ( _ ). O resto formado por Letras, Dgitos, carcter
underscore (ASCII $5F). No permitido a utilizao de espaos para a formao do nome.
Delimita um determinado bloco de declaraes para um identificador especfico evitando a declarao deste
identificador. A sintaxe do comando : WITH {nome do identificador} DO {comandos};. Ex:
Valor de Retorno
Low
Primeiro elemento
High
SizeOf
Tamanho do array
( e-mail: delphiewb@gmail.com )
102
Goto ... ;
Transfere a execuo de um programa para o ponto determinado pelo Label. A sintaxe do comando :
GOTO {Label};. Ex:
( e-mail: delphiewb@gmail.com )
103
Ex:
( e-mail: delphiewb@gmail.com )
104
Break; ou continue...;
O comando break interrompe um bloco de repetio for, while ou repeat saindo do bloco. A sintaxe do
comando : BREAK; enquanto que o comando continue retorna a primeira instruo do bloco de repetio
for, while ou repeat. A sintaxe do comando : CONTINUE;. Ex:
R Animando formulrio
( e-mail: delphiewb@gmail.com )
105
( e-mail: delphiewb@gmail.com )
106
Na barra de titulos clique em View Debug Windows Watches ( Ctrl Alt W ), ser aberta uma
pequena tela onde sero postas as variveis para visualizar seus conteudos.
Marque a varivel Valor1, clique no boto direito, clique na opo Debug, clique em Add Watch at
cursor ( ou pressione Ctrl F5 para adicionar a varivel na caixa Watch List ). Adicione as 3 variaveis na
lista.
Para iniciar a depurao pressione F7, continue pressionando F7, observe que o cursor esta passando
linha por linha ate chegar o boto ( Bitbtn ) onde contem as variveis que definimos no incio do programa,
clique nele, prossiga pressionando F7, observe abaixo a lista ( Watch List ). Veja na tela abaixo, no lado
esquerdo da imagem abaixo, as variaveis Valor1, 2 e 3 com o conteudo de suas variveis.
( e-mail: delphiewb@gmail.com )
107
Alinhamento horizontal
( e-mail: delphiewb@gmail.com )
108
Veja os diferentes
tamanhos dos botes
No grfico da pgina anterior, selecionei a opo Size para definir um tamanho para todos os botes
selecionados. Pode-se definir a largura do boto, comprimento, diminuir de acordo com o tamanho do menor
boto possvel etc.
Agora todos os
botes esto com
o tamanho de
80 caracteres de
largura.
R Abrindo link
Insira um component Label ( aba Standard ), d um clique duplo sobre Label1 e digite o cdigo abaixo:
No incio do programa na linha Uses digite ShellApi.
( e-mail: delphiewb@gmail.com )
109
( e-mail: delphiewb@gmail.com )
110
Cdigo
foi
digitado
no evento
OnKey
Press do
campo
Nome.
Quando o cursor
no campo nome e
for digitado a
letra e ou E
ser mostrada a
caixa de
mensagem.
( e-mail: delphiewb@gmail.com )
111
= $01;
= $02;
= $03;
= $04;
= $08;
= $09;
= $0C;
= $0D;
= $10;
= $11;
= $12;
= $13;
= $14;
= $1B;
= $20;
= $21;
= $22;
vk_End
vk_Home
vk_Left
vk_Up
vk_Right
vk_Down
vk_Select
vk_Print
vk_Execute
vk_SnapShot
vk_Insert
vk_Delete
vk_Help
vk_A at vk_Z
vk_0 at vk_9
= $23;
= $24;
= $25;
= $26;
= $27;
= $28;
= $29;
= $2A;
= $2B;
= $2C;
= $2D;
= $2E;
= $2F;
= tem os mesmos valores ASCII: 'A' at 'Z'
= tem os mesmos valores ASCII: '0' at '9'
vk_NumPad0
vk_NumPad1
vk_NumPad2
vk_NumPad3
vk_NumPad4
vk_NumPad5
vk_NumPad6
vk_NumPad7
vk_NumPad8
vk_NumPad9
vk_Multiply
vk_Add
vk_Subtract
= $6A; // multiplicao
= $6B; // adio
= $6D; // subtrao
vk_NumLock
vk_Scroll
= $90;
= $91;
vk_F1
vk_F2
vk_F3
vk_F4
vk_F5
vk_F6
vk_F7
vk_F8
vk_F9
vk_F10
vk_F11
vk_F12
vk_F13
vk_F14
vk_F15
vk_F16
vk_F17
vk_F18
vk_F19
vk_F20
vk_F21
vk_F22
vk_F23
vk_F24
= $70; ( tecla F1 )
= $71; ( tecla F2 )
= $72; ( tecla F3 )
= $73; ( tecla F4 )
= $74;
= $75;
= $76;
= $77;
= $78;
= $79;
= $7A;
= $7B;
= $7C;
= $7D;
= $7E;
= $7F;
= $80;
= $81;
= $82;
= $83;
= $84;
= $85;
= $86;
= $87;
( e-mail: delphiewb@gmail.com )
112
Propriedades do
TBNavigator.
Apaga o registro.
Altera o registro.
Exemplo: No evento OnClick digite: Clientes_TB.Post ( grava registro corrente na tabela de Clientes )
Delphi Aplicado - by Jurandir A. Pellin
( e-mail: delphiewb@gmail.com )
113
A tela abaixo mostra resultado de como fica aps ter definido cones para o DBNavigator
Definindo cones
para o navegador.
( e-mail: delphiewb@gmail.com )
114
( e-mail: delphiewb@gmail.com )
115
Veja as
descries
sobre os botes
do navegador.
( e-mail: delphiewb@gmail.com )
116
Valor
nbFirst
nbPrior
nbNext
nbLast
nbInsert
nbDelete
nbEdit
nbPost
nbCancel
nbRefresh
Ao
Vai para o primeiro registro.
Vai para o registro anterior.
Vai para o prximo registro.
Vai para o ltimo registro.
Insere um registro em branco.
Apaga o registro atual.
Permite editar o registro atual.
Grava o registro atual.
Cancela a edio corrente.
Atualiza (refresca) os dados no Dataset.
( e-mail: delphiewb@gmail.com )
117
Arraste todos os campos do componente Clientes_TB para dentro do formulrio, isto montar todos os
campos do formulrio juntamente com o relacionamento dos campos na respectiva tabela.
( e-mail: delphiewb@gmail.com )
118
Vamos criar botes para navegar nos registros da tabela. Insira 7 ( sete ) componentes Bitbtn, defina a
propriedade Name do primeiro boto para Bit_Anterior , Name = Bit_Posterior, Name = Bit_Primeiro,
Name = Bit_Ultim... Clique no primeiro boto, na propriedade Glyph defina um cone para o boto
selecionado, proceda desta maneira para os demais botes.
( e-mail: delphiewb@gmail.com )
119
( e-mail: delphiewb@gmail.com )
120
D um clique duplo no boto Soma e no evento OnClick digite as linhas de cdigo abaixo entre o Begin ...
End:
Varivel inteira.
Atribui o contedo do Edit1.Text para armazenar na varivel do tipo inteira Total1.
Converte texto para valor inteiro
um objeto texto.
( e-mail: delphiewb@gmail.com )
121
( e-mail: delphiewb@gmail.com )
122
( e-mail: delphiewb@gmail.com )
123
R Funo copy
Insira 3
componentes Edit
e um Bitbtin.
( e-mail: delphiewb@gmail.com )
124
R Funo pos
Procura uma string na frase.
( e-mail: delphiewb@gmail.com )
125
Exemplo:
( e-mail: delphiewb@gmail.com )
126
( e-mail: delphiewb@gmail.com )
127
( e-mail: delphiewb@gmail.com )
128
( e-mail: delphiewb@gmail.com )
129
( e-mail: delphiewb@gmail.com )
130
131
Clique no ComoboBox,
clique na propriedade Items,
clique Strings, ser aberta
uma tela, digite as 3 cidades.
Delphi Aplicado - by Jurandir A. Pellin
( e-mail: delphiewb@gmail.com )
132
( e-mail: delphiewb@gmail.com )
133
Exemplos de Formatos
DIA
ShortDateFormat
ShortDateFormat
ShortDateFormat
ShortDateFormat
:= 'd'
:= 'ddd';
:= 'dddd';
:= 'dddddd';
1d
3 ds
4 ds
6 ds
Dia 23
Dia da semana abreviado "Dom"
Dia da semana "Domingo"
Data: domingo, 23 de janeiro de 2000
MES
ShortDateFormat
ShortDateFormat
ShortDateFormat
ShortDateFormat
:= 'm';
:= 'mm';
:= 'mmm';
:= 'mmmm';
1m
2 ms
3 ms
4 ms
Dia do ms "1"
Dia do ms com o zero diante do "01"
Ms abreviado "Jan"
Ms por extenso "Janeiro"
ANO
ShortDateFormat
ShortDateFormat
:= 'yy';
:= 'yyy';
Formato "23/01/2000"
Ano "2000
HORA
ShortDateFormat
ShortDateFormat
ShortDateFormat
ShortDateFormat
ShortDateFormat
:= 'n';
:= 'ss';
:= 't';
:= 'tt';
:= 'am/pm';
Insira um boto do tipo BitBtn e um Label, d um clique duplo sobre o boto Bitbtn e no evento OnClick
digite as duas linhas abaixo:
( e-mail: delphiewb@gmail.com )
134
Digite o cdigo
abaixo no evento
OnClick do Bitbtn.
( e-mail: delphiewb@gmail.com )
135
InputQuery
InputBox
( e-mail: delphiewb@gmail.com )
136
Insira um formulrio, um
radiogroup, na propriedade
Columns digite o valor 2 para
fazer duas colunas dentro do
RadioGroup, um Edit e um
Label.
( e-mail: delphiewb@gmail.com )
137
( e-mail: delphiewb@gmail.com )
138
( e-mail: delphiewb@gmail.com )
139
R Abre Outlook
Adicione um boto do tipo Bitbtn no formulrio, d um clique neste boto e digite o cdigo abaixo:
( e-mail: delphiewb@gmail.com )
140
R Mostra IP atual
( e-mail: delphiewb@gmail.com )
141
Tabela criada
Insira um componente
Bitbtn, clique duplo
neste boto e digite as
linhas de cdigo ao
lado no evento
OnClick.
( e-mail: delphiewb@gmail.com )
142
Se voc tiver alguma dvida sobre alguma funo, basta posicionar o cursor sobre a funo desejada (neste
exemplo: Message ) e pressione F1. O Delphi explicar detalhadamente sobre cada funo, porm, a ajuda
est em ingls J ... no problem J
The MessageBox function creates, displays, and operates a message box. The message box contains an
application-defined message and title, plus any combination of predefined icons and push buttons.
int MessageBox(
HWND
hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT
uType
Parameters
hWnd
Identifies the owner window of the message box to be created. If this parameter is NULL, the message box
has no owner window.
lpText
Points to a null-terminated string containing the message to be displayed.
lpCaption
Points to a null-terminated string used for the dialog box title. If this parameter is NULL, the default title
Error is used.
uType
Specifies a set of bit flags that determine the contents and behavior of the dialog box. This parameter can be
a combination of flags from the following groups of flags.
Specify one of the following flags to indicate the buttons contained in the message box:
Flag
MB_ABORTRETRYIGNORE
Ignore.
MB_OK
MB_OKCANCEL
MB_RETRYCANCEL
MB_YESNO
MB_YESNOCANCEL
Meaning
The message box contains three push buttons: Abort, Retry, and
The message box contains one push button: OK. This is the default.
The message box contains two push buttons: OK and Cancel.
The message box contains two push buttons: Retry and Cancel.
The message box contains two push buttons: Yes and No.
The message box contains three push buttons: Yes, No, and Cancel.
( e-mail: delphiewb@gmail.com )
143
Flag Meaning
MB_ICONEXCLAMATION, MB_ICONWARNING An exclamation-point icon appears in the message box.
MB_ICONINFORMATION, MB_ICONASTERISK
An icon consisting of a lowercase letter i in a circle appears in the message box.
MB_ICONQUESTION
A question-mark icon appears in the message box.
MB_ICONSTOP,
MB_ICONERROR,
MB_ICONHAND
A stop-sign icon appears in the message box.
Specify one of the following flags to indicate the default button:
Flag
Meaning
MB_DEFBUTTON1
The first button is the default button. MB_DEFBUTTON1 is the default unless
MB_DEFBUTTON2, MB_DEFBUTTON3, or MB_DEFBUTTON4 is specified.
MB_DEFBUTTON2
The second button is the default button.
MB_DEFBUTTON3
The third button is the default button.
MB_DEFBUTTON4
The fourth button is the default button.
Specify one of the following flags to indicate the modality of the dialog box:
Flag
Meaning
MB_APPLMODAL
The user must respond to the message box before continuing work in the
window identified by the hWnd parameter. However, the user can move to the
windows of other applications and work in those windows. Depending on the
hierarchy of windows in the application, the user may be able to move to other
windows within the application. All child windows of the parent of the message
box
are
automatically
disabled,
but
popup
windows
are
not.MB_APPLMODAL is the default if neither MB_SYSTEMMODAL nor
MB_TASKMODAL is specified.
MB_SYSTEMMODAL
MB_TASKMODAL
( e-mail: delphiewb@gmail.com )
144
MB_HELP
Adds a Help button to the message box. Choosing the Help button or pressing F1 generates a Help event.
MB_RIGHT
The text is right-justified.
MB_RTLREADING
Displays message and caption text using right-to-left reading order on Hebrew and Arabic systems.
MB_SETFOREGROUND
The message box becomes the foreground window. Internally, Windows calls the SetForegroundWindow
function for the message box.
MB_TOPMOST
The message box is created with the WS_EX_TOPMOST window style.
MB_SERVICE_NOTIFICATION
Windows NT only: The caller is a service notifying the user of an event. The function displays a message
box on the current active desktop, even if there is no user logged on to the computer. If this flag is set, the
hWnd parameter must be NULL. This is so the message box can appear on a desktop other than the desktop
corresponding to the hWnd.
For Windows NT version 4.0, the value of MB_SERVICE_NOTIFICATION has changed. See
WINUSER.H for the old and new values. Windows NT 4.0 provides backward compatibility for pre-existing
services by mapping the old value to the new value in the implementation of MessageBox and
MessageBoxEx. This mapping is only done for executables that have a version number, as set by the linker,
less than 4.0.
To build a service that uses MB_SERVICE_NOTIFICATION, and can run on both Windows NT 3.x and
Windows NT 4.0, you have two choices.
1.
At link-time, specify a version number less than 4.0; or
2.
At link-time, specify version 4.0. At run-time, use the GetVersionEx function to check the system
version. Then when running on Windows NT 3.x, use MB_SERVICE_NOTIFICATION_NT3X; and on
Windows NT 4.0, use MB_SERVICE_NOTIFICATION.
MB_SERVICE_NOTIFICATION_NT3X
Windows NT only: This value corresponds to the value defined for MB_SERVICE_NOTIFICATION for
Windows NT version 3.51.
Return Values
The return value is zero if there is not enough memory to create the message box.
If the function succeeds, the return value is one of the following menu-item values returned by the dialog
box:
Value
Meaning
IDABORT
Abort button was selected.
IDCANCEL Cancel button was selected.
IDIGNORE Ignore button was selected.
Delphi Aplicado - by Jurandir A. Pellin
( e-mail: delphiewb@gmail.com )
145
IDNO
No button was selected.
IDOK
OK button was selected.
IDRETRY
Retry button was selected.
IDYES
Yes button was selected.
If a message box has a Cancel button, the function returns the IDCANCEL value if either the ESC key is
pressed or the Cancel button is selected. If the message box has no Cancel button, pressing ESC has no
effect.
MessageBox
uma Funo
Mb_IconWarning + Mb_Ok
Constante - Caption.
Caption = Erro
Constante Texto,
ou seja,
Erro
Cliente no existe
Ao invs de usar o
componente Edit
usaremos a
varivel Clientes.
( e-mail: delphiewb@gmail.com )
146
No exemplo da pgina acima usamos a varivel Cliente, no exemplo abaixo usaremos um edit:
Podemos otimizar cdigo fonte com With ... do, compare com cdigo da pgina anterior:
Compare o cdigo nmero com . No repito vrias vezes Clintes_TB, no cdigo usei With ... do
para evitar esta repetio. uma maneira de deixar seu cdigo mais enxuto
( e-mail: delphiewb@gmail.com )
147
Filter
( e-mail: delphiewb@gmail.com )
148
Interpretando: If Cliente <> then ( se o contedo da varivel Cliente for diferente de branco ... ), ou
seja, se for digitado algo na caixa de dilogo.
R O que SQL ?
( e-mail: delphiewb@gmail.com )
149
ASC classifica os
registros em ordem
ASCendente.
DESC classificar
registros em ordem
DESCendente.
( e-mail: delphiewb@gmail.com )
150
( e-mail: delphiewb@gmail.com )
151
Upper fora
maisculas.
UpperCase
fora entrar
dados em
maisculas no
InputBox.
( e-mail: delphiewb@gmail.com )
152
= dia
= ms
= ano
No podemos voltar atrs e fazer um novo comeo, mas podemos recomear e fazer um novo fim.
Ayrton Senna
( e-mail: delphiewb@gmail.com )
153
Clique em Query1,
clique no boto direito,
clique em
SQL Builder, ser aberta
a tela abaixo:
Insira um Edit e
um Bitbtn.
Selecione o
Alias que esta sendo
usado no seu projeto.
Selecione os
campos desejados
que sero listados
clicando nos
quadradinhos.
Escolha a
tabela
Clientes.DB.
( e-mail: delphiewb@gmail.com )
154
Clique no raio
Usaremos o Sorting para ordenar os registros ( ordem alfabtica ). Na aba Sorting clique no campo
Clientes.Clie_Nome, clique no boto Add, o campo ser posicionado no lado direito da tela, indicando que
foi selecionado, feche o SQL Builder clicando no x e para finalizar clique yes.
Clique no componente Query1, pressione F11 para ir para as propriedades, clique nos trs pontinhos da
propriedade SQL ( ... ), ser aberta uma caixa mostrando a SQL que foi gerada pelo SQL Builder, o que j
fizemos anteriormente com a tela grfica no item , organize a disposio da SQL para melhor visualizar e
para finalizar clique OK.
SQL gerada pelo SQL Builder:
SELECT Clie_Codigo, Clie_Nome, Clie_Cidade
FROM "Clientes.DB" Clientes
ORDER BY Clie_Nome
Delphi Aplicado - by Jurandir A. Pellin
( e-mail: delphiewb@gmail.com )
155
SELECT
Clie_Codigo,
Upper : fora
Clie_Nome,
digitao letras
Clie_Cidade
maisculas.
FROM
"Clientes.DB" Clientes
WHERE
Upper(Clie_Nome) LIKE Upper(:Xnome)
ORDER BY
Clie_Nome
Clique em Query1, clique na propriedade Params, clique em Xnome, ser aberta a tela abaixo:
Defina a propriedade
DataType para ftString, visto
que o nome a ser armazenado
neste parmetro ser uma
string. Defina o tipo de
parmetro ParmType para
ptInput.
No evento OnClick do boto Procura 1 que um componente Bitbtn, digite o cdigo abaixo:
A linha de cdigo acima filtrar qualquer letra que for digitada no Edit.
( e-mail: delphiewb@gmail.com )
156
Insira um Form.
Insira um DBGrid.
Insira um DataSource.
Insira um Query, na propriedade DatabaseName defina o Alias ( ou, caminho onde as tabelas esto
armazenadas ), propriedade SQL ( ... ) clique nos trs pontinhos e digite o cdigo sql abaixo:
SELECT
Clie_Codigo,
Clie_Nome,
Clie_Data_Nas
FROM
"Clientes.DB" Clientes
WHERE
Clie_Nome
LIKE :NomeX
AND
( Clie_Data_Nas >=
:Dta_Inicial ) AND
( Clie_Data_Nas <=
:Dta_Final )
ORDER BY
Clie_Nome
( e-mail: delphiewb@gmail.com )
157
Implementando cdigo
If Query1.RecordCount =
0 then
Application.MessageBox('
NADA foi encontrado!',
'ATTENO',
+ Mb_ok +
Mb_IconWarning)
else
ShowMessage('Total
registros encontrados : '
+
IntToStr(Query1.RecordC
ount));
( e-mail: delphiewb@gmail.com )
158
Digite os campos da
tabela e o nome da
tabela.
( e-mail: delphiewb@gmail.com )
159
COUNT
Retorna o nmero de ocorrncias da expresso, ou coluna. Usando *, retorna todas as ocorrncias das linhas
incluindo, duplicadas e nulas.
Exemplo: Obtenha o nmero de empregados da empresa
SELCT COUNT(*) FROM emp;
Exemplo: Obtenha o nmero de empregados do departamento 10
SELECT COUNT(*) WHERE deptno = 10;
SUM
Retorna a soma dos valores da coluna, ignorando valores nulos.
Exemplo: Obtenha a soma de todos os salrios dos empregados.
SELECT SUM(sal) FROM emp;
Exemplo: Obtenha a soma de todos os salrios do departamento 10.
SELECT SUM(sal) FROM emp WHERE deptno = 10;
MAX
Retorna o valor mximo de uma coluna.
Exemplo: Obtenha o maior salrio dos empregados.
SELECT MAX(sal) FROM emp;
Exemplo: Obtenha o maior salrio do departamento 20.
SELECT MAX(sal) FROM emp WHERE deptno = 20;
MIN
Retorna o valor mnimo de uma coluna.
Exemplo: Obtenha o menor salrio dos empregados.
SELECT MIN(sal) FROM emp;
Exemplo: Obtenha o menor salrio do departamento 10.
SELECT MIN(sal) FROM emp WHERE deptno = 10;
CLUSULA GROUP BY
A clusula GROUP BY referencia uma coluna especificada da tabela relacionada na clusula FROM e
agrupa as linhas com base nos valores iguais dessa coluna.
O resultado da clusula GROUP BY particiona a tabela em um conjunto de grupos, no efetuando qualquer
tipo de ordenao.
Exemplo: Obtenha o maior salrio de cada profisso.
SELECT job, MAX(sal ) FROM emp GROUP BY job;
Delphi Aplicado - by Jurandir A. Pellin
( e-mail: delphiewb@gmail.com )
160
( e-mail: delphiewb@gmail.com )
161
( e-mail: delphiewb@gmail.com )
162
ALL
Compara um valor com todos os valores da lista de valores retornados pela subquery.
Exemplo: Obtenha o nome, salrio, profisso e nmero do departamento de todos os empregados que
recebem um salrio maior, que todos os salrios dos empregados do departamento 30.
SELECT DISTINCT sal FROM emp WHERE deptno = 30;
SELECT ename, sal, job, deptno FROM emp WHERE sal > ALL (SELECT DISTINCT sal FROM
emp WHERE deptno = 30);
OPERADOR NOT
O operador NOT tambm pode utilizado com os operadores IN, ALL e ANY.
Utilizao do ORDER BY
No possvel utilizar o ORDER BY em um SELECT interno, a regra utilizar somente um ORDER BY
em uma subquery e este deve ser o ltimo comando do SELECT, ou seja no SELECT mais externo.
Aninhamento de subqueries
Tambm possvel aninhar (encadear) vrias queries uma dentro da outra, no existindo limites.
CLUSULA HAVING COM SUBQUERIES ANINHADAS
A clusula WHERE refere-se a uma linha da tabela e o HAVING a um grupo de linhas especificadas na
clusula GROUP BY.
Exemplo: Obtenha o nmero dos departamentos, onde os empregados recebem um salrio mdio maior que
a mdia salarial do departamento 30.
SELECT AVG(sal) FROM emp WHERE deptno = 30;
SELECT deptno, AVG(sal) FROM emp HAVING AVG(sal) > (SELECT AVG(sal) FROM emp
WHERE deptno = 30) GROUP BY deptno;
Exemplo: Obtenha a profisso dos empregados que recebem a mais alta mdia salarial.
SELECT MAX(AVG(sal)) FROM emp GROUP BY job;
SELECT job, AVG(sal) FROM emp GROUP BY job HAVING AVG(sal) = (SELECT
MAX(AVG(sal)) FROM emp GROUP BY job);
Observao: O SELECT interno encontra a mdia salarial par aos grupos de profisses, e a funo MAX
encontra a maior mdia salarial dos grupos, que o valor (5000), este utilizado pela clusula HAVING. A
clusula GROUP BY necessria no SELECT principal para agrupar as profisses.
Recuperao simples
SELECT * FROM emp;
ou
SELECT empno, ename, job, mgr, hiredate, sal, comm, depto FROM emp;
Delphi Aplicado - by Jurandir A. Pellin
( e-mail: delphiewb@gmail.com )
163
(+)
(-)
(*)
(/)
Observao:
Caso a expresso aritmtica contenha mais de um operador, a prioridade *, / e depois +, -, sempre da
esquerda para a direita quando existir vrios operadores com a mesma prioridade. Tambm podem ser
utilizados parnteses para especificar a ordem de execuo dos operadores.
Apelidos de colunas
Para criar um apelido para uma coluna, entre com o apelido depois do nome da coluna no comando
SELECT.
SELECT ename, sal * 12 SAL_ANUAL, comm FROM emp;
Operador de concatenao
O operador de concatenao permite ligar uma coluna a outra.
SELECT empno||ename EMPREGADO FROM emp;
CLUSULA DISTINTICT
A clusula distinct utilizada para eliminar os valores duplicados na sada (no resultado).
Recuperao no utilizando a clusula DISTINCT:
Obtenha todos os nmeros dos departamentos da tabela EMP.
Delphi Aplicado - by Jurandir A. Pellin
( e-mail: delphiewb@gmail.com )
164
CLUSULA ORDER BY
A clusula ORDER BY utilizada para ordenar (classificar) as linhas da tabela .
A ordem do resultado pode aparecer em ordem decrescente (DESC) ou ascendente (ASC) que default.
A clusula order by sempre deve aparecer por ltimo no comando select.
Obtenha o nome, a profisso, o solrio de todos os empregados em ordem ascendente de nome do
empregado.
SELECT ename, job, sal FROM emp ORDER BY ename;
Obtenha o nome, a profisso e o salrio de todos os empregados em ordem decrescente de nome do
empregado.
SELECT ename, job, sal FROM emp ORDER BY ename DESC;
Obtenha o nome, a profisso e o salrio de todos os empregados em ordem decrescente de profisso e
crescente de salrio.
SELECT ename, job, sal FROM emp ORDER BY job DESC, SAL
Obtenha o nome, a profisso e o salrio de todos os empregados em ordem decrescente de profisso e
salrio.
SELECT ename, job, sal FROM emp ORDER BY job DESC, sal DESC;
CLUSULA WHERE
A clusula WHERE utilizada para especificar a condio ou condies que as linhas selecionadas devem
satisfazer. As condies da clusula WHERE podem ser valores de colunas, valores literais (seqncia de
caracteres), expresses aritmticas ou funes. Seqncia de caracteres e datas devem ser englobadas entre
aspas simples. WHERE especifica a condio desejada, que pode assumir os operadores =, !=, >, >=, <, <=;
operadores booleanos AND, OR e NOT; e parnteses para indicar uma ordem desejada.
OPERADORES LGICOS
A clusula WHERE pode assumir os seguintes operadores lgicos:
Igual
Maior
Maior ou Igual
Menor
Menor ou Igual
(=)
(>)
( >= )
(<)
( <= )
( e-mail: delphiewb@gmail.com )
165
Operadores booleanos
A clusula WHERE pode assumir os seguintes operadores booleanos:
AND;
OR;
NOT.
AND - As duas condies devem ser satisfeitas para que a consulta retorne uma ou mais linhas da tabela.
Sintaxe:
SELECT colunas FROM nome-da-tabela WHERE condio1 AND condio2;
Recuperao Qualificada:
Obtenha os nmeros dos empregados do departamento 20 com salrio maior 1500.
SELECT ename, sal, depto FROM emp WHERE deptno = 20 AND sal > 1500;
OPERADORES SQL
Operador BETWEEN ...AND ...
O operador BETWEEN..AND... testa os valores da coluna, e recupera os valores que esto entre um valor
mnimo e um valor mximo inclusive especificados no BETWEEN.
Obtenha os nomes e salrios dos empregados que possurem salrios entre os valores 1000 e 2000.
Delphi Aplicado - by Jurandir A. Pellin
( e-mail: delphiewb@gmail.com )
166
SELECT ename, sal FROM emp WHERE sal BETWEEN 1000 AND 2000;
Operador IN
O operador IN testa os valores da coluna, e recupera somente os valores que esto na lista de valores
especificados pelo operador IN.
Obtenha os nmeros, os salrios e os gerentes dos empregados que possurem os gerentes com os nmeros
7902, 7566, 7788.
SELECT empno, sal, mgr FROM emp WHERE mgr IN (7902, 7566, 7788);
Observao
Caso forem usados caracteres ou data na lista, especific-los entre aspas simples.
Operador LIKE
O operador LIKE permite recuperar linha da tabela sem saber exatamente o valor que est sendo procurado,
utilizando para isso os smbolos (%) e ( _ ). O smbolo de sublinhado ( _ ) usado para representar um nico
caractere. O smbolo de percentagem (%) usado para representar uma cadeia de caracteres de qualquer
tamanho (inclusive zero).
Obtenha os nomes dos empregados que iniciam seu nome com S.
SELECT ename FROM emp WHERE ename LIKE 'S%';
Observao
O LIKE s pode ser usado com cadeia de caracteres ou com dados grficos, e no com dados numricos.
Operador IS NULL
O operador IS NULL testa os valores da coluna, e recupera somente as linhas da tabela que possurem o
valor null.
Obtenha os nmeros dos empregados que no possurem gerente, ou seja o campo nmero do gerente (mgr)
igual a nulo.
SELECT ename, mgr FROM emp WHERE mgr IS NULL;
Significado
no entre dois valores especificados
no entre uma lista de valores
no entre um padro especificado
no igual ao valor null
( e-mail: delphiewb@gmail.com )
167
Descrio
Um dos seguintes predicados: ALL, DISTINCT, DISTINCTROW ou TOP.
Voc usa o predicado para restringir o nmero de registros que retornam. Se
nenhum for especificado, o padro ser ALL.
Especifica que todos os campos da tabela ou tabelas especificadas so
selecionados.
O nome da tabela que contm os campos dos quais os registros so
selecionados.
*
tabela
campo1, campo2
Os nomes dos campos dos quais os dados sero recuperados. Se voc incluir
mais de um campo, eles sero recuperados na ordem listada.
alias1, alias2
Os nomes que sero usados como ttulos de colunas em vez dos nomes
originais das colunas na tabela.
expressotabela
O nome da tabela ou tabelas contendo os dados que voc quer recuperar.
Bancodedadosexterno O Nome do banco de dados que contm as tabelas em expressotabela se no estiver
no banco de dados atual.
Comentrios
Para executar esta operao, o programa principal de banco de dados procura a tabela ou tabelas
especificadas, extrai as colunas escolhidas, seleciona as linhas que satisfazem o critrio e classifica ou
agrupa as linhas resultantes na ordem especificada. A instruo SELECT no muda os dados no banco de
dados.
SELECT normalmente a primeira palavra em uma instruo SQL. A maior parte das instrues SQL so
instrues SELECT. A sintaxe mnima da instruo SELECT :
SELECT campos FROM tabela
Voc pode usar um asterisco (*) para selecionar todos os campos na tabela. O exemplo abaixo seleciona
todos os campos na tabela Funcionrios: SELECT * FROM Funcionrios;
Se o nome de um campo estiver includo em mais de uma tabela na clusula FROM, preceda-o com o nome
da tabela e o operador . (ponto). No exemplo abaixo, o campo Departamento est nas tabelas Funcionrios e
Supervisores. A instruo SQL seleciona Departamento da tabela Funcionrios e NomeSupv da tabela
Supervisores:
SELECT Funcionrios.Departamento, Supervisores.NomeSupv
FROM
( e-mail: delphiewb@gmail.com )
168
Ao criar um objeto Recordset, o programa principal de banco de dados do Jet usa o nome do campo da
tabela como o nome do objeto Field no objeto Recordset.
Se voc quiser um nome de campo diferente ou um nome que no esteja implcito na expresso usada para
gerar o campo, use a palavra reservada AS. O exemplo abaixo usa o ttulo Nasc para nomear o objeto Field
retornado no objeto Recordset resultante:
SELECT DataNasc AS Nasc FROM Funcionrios;
Sempre que voc usar funes aggregate ou consultas que retornem nomes de objetos Field ambguos ou
duplicados, voc precisar usar a clusula AS para fornecer um nome alternativo para o objeto Field.
O exemplo abaixo usa o ttulo Contagem para nomear o objeto Field retornado no objeto Recordset
resultante:
SELECT COUNT(FuncionrioID) AS Contagem FROM Funcionrios;
Voc pode usar outras clusulas na instruo SELECT para restringir e organizar posteriormente os seus
dados retornados.
Clusula GROUP BY
GROUP BY opcional. Valores de resumo so omitidos se no houver qualquer funo aggregate SQL na
instruo SELECT. Os valores Null nos campos GROUP BY so agrupados e no omitidos. No entanto, os
valores Null no so avaliados em qualquer funo aggregate SQL. Use a clusula WHERE para excluir
linhas que voc no quer agrupadas e use a clusula HAVING para filtrar os registros aps eles terem sido
agrupados.
A no ser que contenha dados Memo ou OLE Object, um campo na lista de campos GROUP BY pode fazer
referncia a qualquer campo em qualquer tabela listada na clusula FROM. Mesmo que o campo no esteja
includo na instruo SELECT, fornecida a instruo SELECT, inclua pelo menos uma funo SQL. O
programa principal de banco de dados do Jet no pode agrupar campos Memo ou OLE Objects.
Todos os campos na lista de campos SELECT devem ser includos na clusula GROUP BY ou includos
como argumentos em uma funo aggregate SQL.
Clusula HAVING
HAVING opcional. HAVING semelhante a WHERE, que determina quais registros so selecionados.
Depois que os registros so agrupados com GROUP BY, HAVING determina quais registros so exibidos:
SELECT
HAVING
Uma clusula HAVING pode conter at 40 expresses vinculadas por operadores lgicos, como And ou Or.
( e-mail: delphiewb@gmail.com )
169
Clusula ORDER BY
ORDER BY opcional. Entretanto, se voc quiser exibir seus dados na ordem classificada, voc deve
utilizar ORDER BY. O padro ordem de classificao ascendente (A a Z, 0 a 9). Os dois exemplos abaixo
classificam os nomes dos funcionrios pelo sobrenome.
SELECT Sobrenome, Nome FROM Funcionrios ORDER BY Sobrenome;
SELECT Sobrenome, Nome FROM Funcionrios ORDER BY Sobrenome ASC;
Para classificar em ordem descendente (Z a A, 9 a 0), adicione a palavra reservada DESC ao final de cada
campo que voc quiser classificar em ordem descendente. O exemplo abaixo seleciona salrios e os
classifica em ordem descendente
SELECT Sobrenome, Salrio FROM Funcionrios ORDER BY Salrio DESC, Sobrenome;
Se voc especificar um campo que contm dados Memo ou OLE Objects na clusula ORDER BY, um erro
ocorrer. O programa principal de banco de dados do Jet no classifica campos deste tipo. ORDER BY
normalmente o ltimo item em uma instruo SQL.
Voc pode incluir campos adicionais na clusula ORDER BY. Os registros so classificados primeiro pelo
primeiro campo listado depois de ORDER BY. Os registros que tiverem valores iguais naquele campo so
classificados pelo valor no segundo campo listado e assim por diante.
BY Sobrenome WITH
Se, por outro lado, um usurio for impedido de criar ou anexar a uma tabela, voc poder usar WITH
OWNERACCESS OPTION para habilit-lo a executar uma consulta construo de tabela ou consulta
anexao. Se voc quiser reforar as configuraes de segurana do grupo de trabalho e as permisses dos
usurios, no inclua a declarao WITH OWNERACCESS OPTION. Esta opo exige que voc tenha
acesso ao arquivo System.mda associado ao banco de dados. realmente til em implementaes de
multiusurios seguras.
Count([Departamento])
AS Tbc
Para cada ttulo de funo nico, calcula o nmero de funcionrios do departamento de Vendas que tm este
ttulo.
SELECT Ttulo, Count(Ttulo) AS Tbc FROM Funcionrios WHERE Departamento = 'Vendas'
GROUP BY Ttulo;
Esse exemplo calcula o nmero de itens em estoque para cada combinao de nmero e cor do item.
SELECT
( e-mail: delphiewb@gmail.com )
171
Sintaxe
Consulta anexao de vrios registros:
INSERT INTO destino [IN bancodedadosexterno] [(campo1[, campo2[, ...]])]
SELECT [origem.]campo1[, campo2[, ...]
FROM expressodetabela
Consulta anexao de um nico registro:
INSERT INTO destino [(campo1[, campo2[, ...]])]
VALUES (valor1[, valor2[, ...])
A instruo INSERT INTO tem as partes abaixo:
Parte
destino
bancodedadosexterno
origem
campo1, campo2
expressodetabela
valor1, valor2
Descrio
O nome da tabela ou consulta em que os registros devem ser anexados.
O caminho para um banco de dados externo. Para uma descrio do
caminho, consulte a clusula IN.
O nome da tabela ou consulta de onde os dados devem ser copiados.
Os nomes dos campos aos quais os dados devem ser anexados, se
estiverem aps um argumento destino ou os nomes dos campos dos quais
se deve obter os dados, se estiverem aps um argumento origem.
O nome da tabela ou tabelas das quais registros so inseridos. Este
argumento pode ser um nico nome de tabela ou uma combinao
resultante de uma operao INNER JOIN, LEFT JOIN ou RIGHT JOIN ou de
uma consulta gravada.
Os valores para inserir em campos especficos do novo registro. Cada valor
inserido no campo que corresponde posio do valor na lista: Valor1
inserido no campo1 do novo registro, valor2 no campo2 e assim por diante.
Voc deve separar os valores com uma vrgula e colocar os campos de textos
entre aspas (" ").
Comentrios
Voc pode usar a instruo INSERT INTO para adicionar um nico registro a uma tabela usando a sintaxe
de consulta anexao de um nico registro como mostrado acima. Neste caso, seu cdigo especifica o nome
e o valor de cada campo do registro. Voc precisa especificar cada um dos campos do registro para os quais
um valor deve ser designado e um valor para este campo. Quando voc no especifica cada campo, o valor
padro ou Null inserido nas colunas omitidas. Os registros so adicionados no final da tabela.
Delphi Aplicado - by Jurandir A. Pellin
( e-mail: delphiewb@gmail.com )
172
Voc tambm pode usar INSERT INTO para anexar um conjunto de registros de outra tabela ou consulta
usando a clusula SELECT ... FROM como mostrado acima na sintaxe consulta anexao de vrios
registros. Neste caso, a clusula SELECT especifica os campos para acrescentar tabela destino
especificada. A tabela de origem ou de destino pode especificar uma tabela ou uma consulta. Se uma
consulta for especificada, o programa principal de banco de dados do Microsoft anexa a qualquer e a todas
as tabelas especificadas pela consulta.
INSERT INTO opcional, mas quando includa, precede a instruo SELECT.
Se sua tabela de destino contm uma chave primria, voc deve acrescentar valores nicos, no Null ao
campo ou campos da chave primria. Caso contrrio, o programa principal de banco de dados do Jet no
anexar os registros. Se voc anexar registros a uma tabela com um campo Counter e quiser numerar
novamente os registros anexados, no inclua o campo Counter em sua consulta. Inclua o campo Counter na
consulta se quiser manter os valores originais do campo. Use a clusula IN para anexar registros a uma
tabela de outro banco de dados. Para achar quais registros sero anexados, antes de voc executar a consulta
anexao, primeiro execute e veja os resultados de uma consulta seleo que use o mesmo critrio de
seleo. Uma operao de consulta anexao copia os registros de uma ou mais tabelas em outra. As tabelas
que contm os registros que voc anexa no so afetadas pela operao de consulta anexao. Em lugar de
acrescentar registros existentes de outra tabela, voc pode especificar o valor de cada campo em um nico
registro novo usando a clusula VALUES. Se voc omitir a lista de campo, a clusula VALUES deve
incluir um valor para cada campo na tabela; caso contrrio, um erro ocorrer em INSERT. Use uma
instruo adicional INSERT INTO com uma clusula VALUES para cada registro adicional que voc
quiser criar.
Declarao UPDATE
Cria uma consulta atualizao que altera os valores dos campos em uma tabela especificada com base em
critrios especficos.
Sintaxe: UPDATE tabela SET valornovo WHERE critrio;
A instruo UPDATE tem as partes abaixo:
Parte
Descrio
tabela
O nome da tabela cujos os dados voc quer modificar.
valornovo
Uma expresso que determina o valor a ser inserido em um campo especfico nos
registros atualizados.
critrio
Uma expresso que determina quais registros devem ser atualizados. S os registros
que satisfazem a expresso so atualizados.
Delphi Aplicado - by Jurandir A. Pellin
( e-mail: delphiewb@gmail.com )
173
Comentrios
UPDATE especialmente til quando voc quer alterar muitos registros ou quando os registros que voc
quer alterar esto em vrias tabelas. Voc pode alterar vrios campos ao mesmo tempo. O exemplo abaixo
aumenta o Valor do Pedido em 10 por cento e o valor do Frete em 3 por cento para embarques do Reino
Unido:
UPDATE Pedidos SET ValorPedido = ValorPedido * 1.1, Frete = Frete * 1.03 WHERE PasEmbarque =
'RU';
UPDATE no gera um conjunto de resultados. Se voc quiser saber quais resultados sero alterados,
examine primeiro os resultados da consulta seleo que use os mesmos critrios e ento execute a consulta
atualizao.
Instruo DELETE
Cria uma consulta excluso que remove registros de uma ou mais tabelas listadas na clusula FROM que
satisfaz a clusula WHERE.
Sintaxe: DELETE [tabela.*] FROM tabela WHERE critrio
A instruo DELETE tem as partes abaixo:
Parte
tabela.*
tabela
critrio
Descrio
O nome opcional da tabela da qual os registros so excludos.
O nome da tabela da qual os registros so excludos.
Uma expresso que determina qual registro deve ser excludo.
Comentrios
DELETE especialmente til quando voc quer excluir muitos registros. Para eliminar uma tabela inteira do
banco de dados, voc pode usar o mtodo Execute com uma instruo DROP.
Entretanto, se voc eliminar a tabela, a estrutura perdida. Por outro lado, quando voc usa DELETE,
apenas os dados so excludos. A estrutura da tabela e todas as propriedades da tabela, como atributos de
campo e ndices, permanecem intactos.
Voc pode usar DELETE para remover registros de tabelas que esto em uma relao um por vrios com
outras tabelas. Operaes de excluso em cascata fazem com que os registros das tabelas que esto no lado
"vrios" da relao sejam excludos quando os registros correspondentes do lado "um" da relao so
excludos na consulta.
Por exemplo, nas relaes entre as tabelas Clientes e Pedidos, a tabela Clientes est do lado "um" e a tabela
Pedidos est no lado "vrios" da relao. Excluir um registro em Clientes faz com que os registros
correspondentes em Pedidos sejam excludos se a opo de excluso em cascata for especificada.
Delphi Aplicado - by Jurandir A. Pellin
( e-mail: delphiewb@gmail.com )
174
JOIN FolhaDePagamento ON
WHERE Funcionrios.Ttulo =
Insira 3 componentes SQL e 3 DataSource, clique em cada componente SQL, defina o Alias na
propriedade DatabaseName que apontar para as tabelas ( ou digite o caminho onde esto as tabelas ), e
defina a propriedade Name de cada componente, veja na tela grfica abaixo ( Funcinarios_QRY,
Cidades_QRY e UF_QRY ), defina as propriedades DataSet de cada _QRY de cada DataSource.
Insira um DBGrid ( aba DataControls ).
( e-mail: delphiewb@gmail.com )
175
( e-mail: delphiewb@gmail.com )
176
( e-mail: delphiewb@gmail.com )
177
Clique em Descr_UF_Sql, na
propriedade SQL ( Tstrings ...) digite:
SELECT Descr_UF FROM
"Estados.db" Estados
( e-mail: delphiewb@gmail.com )
178
( e-mail: delphiewb@gmail.com )
179
Aps clicar no boto Pesquisa ser aberta caixa para digitar um salrio.
Componentes utilizados:
Um Edit, DBGrid, Query,
DataSource e 4 botes
Bitbtn.
Defina a propriedade
DatabaseName do Query e
DataSource, clique no
DBGrid e na propriedade
DataSource defina
DataSource1.
Clique no Query1 e na
propriedade Active defina
True
( e-mail: delphiewb@gmail.com )
180
( e-mail: delphiewb@gmail.com )
181
Adicione os campos no
Query,
Clique no boto direito
Fields Editor, boto
direito Add fields e
adicione os campos
( veja ao lado )
ComboBox
( e-mail: delphiewb@gmail.com )
182
( e-mail: delphiewb@gmail.com )
183
Insira um componete
DBGrid
( aba DataControls ), na
propriedade DataSource
defina DataSource1.
Clique no componente
DataSource1 e na
propriedade DataSet defina
Query1.
Clique na propriedade Name = Data_Inicial, ser exibida uma telinha, estes dois
parmetros j foram definidos na propriedade SQL , clique em (Tstrings) ... d um clique
duplo em Params, ser aberta a tela acima, defina a propriedade DataType deve ser do tipo
ftDate porque o parmetro do tipo data.
( e-mail: delphiewb@gmail.com )
184
SELECT
FROM
WHERE
( e-mail: delphiewb@gmail.com )
185
( e-mail: delphiewb@gmail.com )
186
Clique no componente Query1, clique na propriedade SQL ( Tstrings ... ) e digite a SQL que esta sendo
mostrada em String List Editor.
( e-mail: delphiewb@gmail.com )
187
( e-mail: delphiewb@gmail.com )
188
( e-mail: delphiewb@gmail.com )
189
Pega data do
sistema, ou seja,
data atual.
( e-mail: delphiewb@gmail.com )
190
( e-mail: delphiewb@gmail.com )
191
Todos os registros:
Soma_Total uma
varivel, poderia ser
qualquer nome para
armazenar o total.
( e-mail: delphiewb@gmail.com )
192
Campos
da tabela
Digitge as 3
ltimas linhas
Digite a(s) letra(s) deseja(s) e clique no boto Ok. Um nome inicia com a letra m .
( e-mail: delphiewb@gmail.com )
193
R Totalizando valores
( e-mail: delphiewb@gmail.com )
194
R Formulrio MDI
Uma interface MDI (Multiple Document Interface) possibilita a visualizao de mais de um documento ou
objeto simultaneamente.
Aplicaes MDI so constituidas geralmente de dois ou mais formulrios: o formulrio principal (MDIform)
que geralmente constitui a janela principal do programa e seus filhos (MDIchild) localizados dentro de sua
rea de trabalho.
Em aplicaes MDI, voc geralmente precisa mostrar mltiplas instncias de um classe de formulrio. Um
formulrio filho de MDI deve ser criado para ser exibido e deve ser destrudo para no mais exib-lo.
Com uma nova aplicao vamos iniciar uma aplicao MDI que possa abrir vrios arquivos de figuras
selecionados pelo usurio.
fsMDIChild
fsMDIChild
fsMDIChild
Delphi Aplicado - by Jurandir A. Pellin
( e-mail: delphiewb@gmail.com )
195
( e-mail: delphiewb@gmail.com )
196
( e-mail: delphiewb@gmail.com )
197
No primeiro formulrio, ou seja, no formulrio do Menu defina a propriedade FormStyle para fsMDIForm
( e-mail: delphiewb@gmail.com )
198
Cadastro de Clientes
No formulrio Clientes mude a propriedade do formulrio FormStyle para fsMDIChild
( e-mail: delphiewb@gmail.com )
199
Cadastro de Fornecedores
No formulrio Fornecedores mude a propriedade do formulrio FormStyle para fsMDIChild
Cadastro de Transportadoras
No formulrio Transportadoras mude a propriedade do formulrio FormStyle para fsMDIChild
( e-mail: delphiewb@gmail.com )
200
Digite a procedure
Apaga_Todos_Regs
( e-mail: delphiewb@gmail.com )
201
Digite a funo
Seleciona
( e-mail: delphiewb@gmail.com )
202
Selecione o campo
que deseja procurar
( e-mail: delphiewb@gmail.com )
203
( e-mail: delphiewb@gmail.com )
204
Insira um
componente
Memo
Digite Constantes e
as Varveis.
( e-mail: delphiewb@gmail.com )
205
( e-mail: delphiewb@gmail.com )
206
( e-mail: delphiewb@gmail.com )
207
( e-mail: delphiewb@gmail.com )
208
Identificadores.......................................................................................................................................... 102
With ... do................................................................................................................................................. 102
Array [ ... ] of ........................................................................................................................................... 102
Begin ... end; ............................................................................................................................................ 103
If ... then ... else ... .................................................................................................................................... 103
Goto ... ; ................................................................................................................................................... 103
Case ... of ... else ... end; ........................................................................................................................... 104
Repeat ... until; ......................................................................................................................................... 104
For ... to (downto) ... do ... ; ...................................................................................................................... 104
While ... do ... ;......................................................................................................................................... 105
Break; ou continue...;................................................................................................................................ 105
R Animando formulrio........................................................................................................................... 105
R Como depurar ( encontrar ) possveis erros no programa ?.................................................................... 106
R Depurando erros com Watch List ......................................................................................................... 106
R Como alinhar botes ?.......................................................................................................................... 108
R Como definir tamanho / altura para todos os botes ? .......................................................................... 109
R Abrindo link......................................................................................................................................... 109
R Como programar teclas de funo F1, F2, F3 ... ? .............................................................................. 110
R Atalho ao pressionar Ctrl A .................................................................................................................. 110
R Toca arquivo de som ............................................................................................................................ 110
R Como programar letras, nmeros, teclas de funo ? ............................................................................ 111
R Como por zeros no lado esquerdo de um nmero ?............................................................................... 111
R Como forar abertura do formulrio maximizado ?............................................................................... 111
R Cdigos do teclado em hexadecimal..................................................................................................... 112
R Quais so as propriedades do navegador de dados ?.............................................................................. 113
R Como definir cones para o DBNavegator ?......................................................................................... 114
R Definindo caption, descrio para o navegador de dados ............................................................... 116
R Programando os botes do navegador de registros................................................................................ 117
R Como criar botes para navegar nos registros da tabela ? ..................................................................... 118
R Como calcular percentual em um edit ?............................................................................................. 120
R Como converter textos para nmeros ? ................................................................................................. 121
R Como somar valor flutuante ?............................................................................................................... 122
R Como formatar um nmero em um edit ? .......................................................................................... 122
R Como somar e dividir ? ................................................................................................................. 122
R Como remover ponto decimal ?............................................................................................................ 123
R Como arredondar valor ? ( 1 )............................................................................................................... 123
R Como arredondar valor ? ( 2 ).............................................................................................................. 123
R Como formatar zeros no lado esquerdo do nmero ? ......................................................................... 124
R Como formatar valor ? ......................................................................................................................... 124
R Funo copy ..................................................................................................................................... 124
R Funo pos ....................................................................................................................................... 125
R Como aceitar somente letras em um edit ? ..................................................................................... 125
R Como fazer deciso composta ( variveis ) ? ........................................................................................ 125
R Como usar Case of else end ? ( 1 )..................................................................................... 126
R Case of else end ( 1 )........................................................................................................... 126
Delphi Aplicado - by Jurandir A. Pellin
( e-mail: delphiewb@gmail.com )
209
( e-mail: delphiewb@gmail.com )
211