Académique Documents
Professionnel Documents
Culture Documents
Lionardo@base.com.br
Passo a Passo
1 Edio
Lionardo@base.com.br
Editor:
Lionardo Fonseca Paiva
Autor:
Lionardo Fonseca Paiva
lionardo@base.com.br
Capa:
Departamento de Arte Final
Sumrio
1
OS CONTROLES BSICOS...............................................................................27
2.1
FORMULRIO E SUAS PROPRIEDADES..................................................29
2.1.1
Propriedades Principais do Form ..........................................................29
2.1.2
As Propriedades Principais do CommandButton ...................................34
2.1.3
Propriedades Principais do Label ..........................................................38
2.1.4
Propriedades Principais do TextBox ......................................................39
2.1.5
Eventos relacionados ao Objeto TextBox ...............................................42
2.1.6
Caixa de Texto para vrias linhas ..........................................................48
2.1.7
Propriedades Principais do CheckBox ...................................................49
2.1.8
Propriedades Principais do OptionButton .............................................51
2.1.9
Propriedades Principais do Frame ........................................................54
O FOCO ................................................................................................................77
4.1
O FOCO............................................................................................................79
4.1.1
Propriedades TabIndex e TabStop .........................................................79
5
Lionardo@base.com.br
4.1.2
4.1.3
4.1.4
4.1.5
5
A Tecla Enter.......................................................................................... 80
Mtodo SetFocus .................................................................................... 82
Eventos GotFocus e LostFocus .............................................................. 83
Mnemnico (Tecla de Acesso)................................................................ 87
MASKEDBOX .................................................................................................. 90
COMMONDIALOG ............................................................................................ 94
9.2
10
COMANDOS DE LAO.....................................................................................146
FUNES DE AUXILIO ..............................................................................152
Lionardo@base.com.br
14.1
14.2
1 APRESENTAO DO
VISUAL BASIC 5
Lionardo@base.com.br
10
Controles Bsicos
11
Lionardo@base.com.br
Nesta verso, quando abrimos o Visual Basic, ele nos d uma sria de
opes sobre o que desejamos criar: um executvel, uma DLL, um ActiveX,
etc. Por padro usaremos somente "standard EXE" que o usual para criao
de programas executveis.
Controles Bsicos
Sempre use teclas de atalho para o usurio cortar caminho.
Lembre-se que nem todos usurios gostam de usar o mouse
intensivamente. Alguns preferem, sempre que podem, usar o
teclado. Ento d esta opo.
Sempre d a possibilidade ao usurio de cancelar uma alterao
feita em uma determinada janela. O boto Cancelar existe nos
melhores programas existente no mercado.
Quando um usurio escolhe uma aplicao para Windows para sua
empresa e diverso, ele sabe que no vai encontrar dificuldades na
operao do programa, pois todos so semelhantes em vrios
aspectos, ento mantenha essa semelhana.
13
Lionardo@base.com.br
14
Controles Bsicos
dos controles, pode-se marcar ou desmarcar quais controles necessitamos.
Para termos acesso a todos os controles padro do Visual Basic,
selecionamos todos que possuem a extenso OCX. Confira no campo Active
Setup Control Library o nome do arquivo que possui o controle.
15
Lionardo@base.com.br
Vamos por ora ressalvar duas propriedades que a maioria absoluta dos
objetos possuem: Caption e Name.
A propriedade Caption responsvel pela legenda (ttulo) que o objeto
ter quando aparecer em nosso formulrio. Por exemplo, num objeto
CommandButton (Boto de Comando), o Caption quem coloca o ttulo que
ir aparecer dentro do boto.
A propriedade Name nomeia um objeto, e sempre que formos nos
referenciar a este objeto em qualquer etapa de nosso projeto, usamos o nome
dado na propriedade Name dele. Se um boto Cancelar termos o nome de
16
Controles Bsicos
cmdCancelar, este o nome que vamos usar na codificao deste objeto. Este
nome fica atribudo ao objeto.
Para se dar nomes ao alguns objetos algumas regras tem que serem
seguidas, como por exemplo, no pode conter espaos em branco, no se
pode usar sinais como #$&+-^ . Como padro acostuma-se a usar as trs
primeiras letras do nome para abreviar o tipo do Objeto, para durante a
codificao do programa facilitar na identificao de qual objeto estamos
usando. Por exemplo: Um boto de comando do tipo CommandButton, e
abreviamos como cmd, um formulrio do tipo Form, e abreviamos como
frm, uma mscara de edio do tipo MaskEdBox, e abreviamos como
msk. Essas abreviaes ficam a critrio do programador.
17
Lionardo@base.com.br
18
Controles Bsicos
Boto Fechar
Boto Maximizar
Boto Minimizar
rea de titulo.
Caption do
formulrio.
Menu de Controle.
rea onde sero inseridos os objetos para
criao de nosso formulrio.
Chamamos de
Control Box a unio
dos botes minimizar,
maximizar, fechar e o
menu de controle
+
+
Criando o objeto, com
boto
do
mouse
apertado.
Soltando o boto do
mouse, o objeto criado
na posio e dimenso
escolhida.
escolha o
objeto do
tipo
CommandButt
om e
coloque-o
dentro do
formulrio.
19
Lionardo@base.com.br
Ao selecionar o formulrio
pretendido, aperte este boto e
o formulrio ir aparecer no
centro da tela. Caso o
componente no seja um
formulrio, este boto estar
desabilitado.
20
Controles Bsicos
bom lembrarmos que cada objeto possui vrios eventos diferentes, e
nossa tarefa bsica codificar cada evento que nosso programa necessitar.
Somente ocorre eventos durante a execuo do programa. Por exemplo, existe
um evento chamado Click, que para quando damos um click com o mouse
no objeto. Evento MouseMove para quando o mouse se movimentar dentro do
objeto. Evento KeyPress para quando um tecla for pressionada dentro do
objeto. Estudaremos mais detalhado esses eventos. Por ora importante
entender a utilidade deles, e qual a finalidade deles em nossa codificao.
Objeto
a
ser
codificado. Quando
damos dois clickes
em um objeto, o
nome dele j vem
para este campo.
Lionardo@base.com.br
22
Controles Bsicos
Quando precisarmos criar uma codificao dentro de nosso formulrio
mas que tenha seu alcance estendido para todos os procedimentos e eventos
do formulrio, e no para algum determinado, escolhemos o Object General,
que significa Geral (na caixa de eventos aparecer o nome declaration). Se
declararmos ali uma varivel ela ter validade para todo o formulrio. Veremos
isto melhor no Captulo sobre variveis.
Nome do arquivo do
Projeto. Por
Default aparece o
nome Project1, mas
sempre bom
modificar para um
nome que sinalize
melhor o nome que
nosso projeto
(programa) ter.
23
Lionardo@base.com.br
24
Controles Bsicos
EXERCCIOS PROPOSTOS
1 - Descreva 5 botes da barra de botes que voc acha mais importante:
Nome
Descrio
Objetos:
Propriedades:
Formulrio:
Janela de Projetos:
Codificao:
25
Lionardo@base.com.br
26
2 OS CONTROLES BSICOS
(A interface)
Form
CommandButton
Label
TextBox
CheckBox
OptionButton
Frame
Lionardo@base.com.br
28
Controles Bsicos
Lionardo@base.com.br
Controles Bsicos
janela, poder responder a eventos gerados pelo usurio, como clicar do
mouse, pressionamento de teclas, etc.
Font: Escolhe a fonte de letra padro que ser usada para todos objetos
inseridos neste formulrio.
Icon: Nesta propriedade escolhemos um arquivo de cone para associar a esse
formulrio. Esse cone o que vai aparecer quando a janela for minimizada e
no lado esquerda da barra de ttulo ( Menu de Controle ).
KeyPreview: determina se os eventos do teclado no formulrio sero
executados antes dos eventos correspondentes aos Objetos inseridos no
formulrio.
MaxButton: Habilita ou no o boto de maximizao.
MDIChild: Determina se a janela ser uma janela filha. Ou seja, ter uma outra
janela mestre que agrupara o Form que se esta criando.
MinButton: Habilita ou no o boto de minimizar.
MouseIcon: Sempre que o mouse for movido em cima do formulrio, o cone
associado a esta propriedade aparecer (desde que a propriedade
MousePointer esteja customizada).
MousePointer: Nesta propriedade especificamos o tipo de ponteiro que o
mouse ter quando se mover sobre o formulrio. Veja os tipos existentes:
Lionardo@base.com.br
Seleo de escrita
4
5
cone
Seleo de Mover Objetos
Redimensionamento na diagonal
Redimensionamento na vertical
Redimensionamento na diagonal
Redimensionamento na horizontal
10
Seleo alternada
11
Sinal de ocupado.
12
No disponvel ( Ocupado )
13
14
15
99
Controles Bsicos
Caption = Lanamentos dos Exames
Name = frmLanamentoExames
Configure a janela para no aparecer o boto de
Maximizar. Para isto mude a Propriedade MaxButton para
False.
Faa com que o ponteiro do mouse mude para o desenho de
um sinaleiro
com a luz vermelha acesa toda vez que o
mouse mover no formulrio. Para isto a propriedade
MousePointer deve ser Custom e na propriedade MouseIcon
identificamos a pasta (diretrio) onde esta o arquivo de
cone que contm o sinaleiro. Veja a figura:
O arquivo
correspondente
esta na pasta
Icons/Traffic e
chama
Trffc10c.ico
33
Lionardo@base.com.br
o que acontece.
34
Controles Bsicos
Cancel: Se esta opo for ajustada como
verdadeira, o boto ser associado a tecla
ESC, e sempre que pressionarmos esta
tecla ser como se tivssemos apertado o
boto.
Caption: O ttulo que ser exibido dentro
do boto.
Default: Estando o boto com essa
propriedade como True indica que este
boto ser o Padro da janela, e sempre
que apertarmos a tecla Enter ser como se
tivssemos apertado o boto.
Enabled: Determina se o boto ser
habilitado para pressionamento por parte do
usurio ou no.
Font: Escolhe a fonte de letra que o
Caption ter.
Name: O nome que daremos para o Objeto
boto de comando.
Visible: Determina se o boto ser visvel
para o usurio quando o programa estiver
em execuo.
35
Lionardo@base.com.br
boto1
Boto2
Explicao
Caption
OK
Cancelar
Name
cmdOk
cmdCancelar
nomear o boto
Cancel
False
True
habilitar ESC
Default
True
False
habilitar ENTER
Controles Bsicos
Estando ainda na janela de codificao, leve o ponteiro
do mouse at o topo desta janela onde esta o nome: Object.
Na frente estar o nome do boto que estvamos trabalhando
na codificao. Aperte o boto. Ir aparecer o nome dos
objetos que temos: cmdCancelar, cmdOk, Form, e General.
37
Lionardo@base.com.br
2.1.3
apertarmos o boto
Controles Bsicos
BorderStyle: Escolhe entre colocar uma moldura envolvendo o label ou no.
Caption: A propriedade principal do label. Determina o texto que ser exibido
dentro do Objeto.
Enabled: Habilita ou desabilita o objeto. Quando esta em False fica com a cor
de seu contedo acinzentada.
Font: Escolhe a fonte de letra que ter o texto digitado na propriedade Caption.
ForeColor: Escolhe a cor da fonte de letra
Name: Nomeia o Objeto label. Como j foi dito importante que todos os
objetos seja nomeado. A inicial do label lbl.
Visible: Indica se o objeto ser visvel ou no para o usurio.
WordWrap: Quando o AutoSize esta em true, no possvel expandir o texto
digitado na propriedade Caption em outras linhas. Mas se passarmos essa
propriedade WordWrap para True isto poder ser feito, bastando para isto
dimensionarmos o label.
39
Lionardo@base.com.br
40
Controles Bsicos
Coloque 3 caixa de texto em nosso formulrio, de forma
que a disposio das mesmas fiquem como na figura abaixo.
TxtNome
txtSexo
TxtExame
Text
deixar vazio
deixar vazio
MaxLength
30
deixar
vazio
9
ForeColor
Vermelho
Preto
Preto
15
Propriedade
Label1
Label2
Label3
Name
lblNomePaciente
lblSexo
LblExame
Caption
Nome do Paciente
Sexo
Lionardo@base.com.br
AutoSize
True
True
True
Appearance
3D
3D
3D
Controles Bsicos
Click: Ocorre quando o usurio pressiona o boto esquerdo do mouse sobre a
caixa de texto.
DlbClick: Se o usurio apertar duas vezes o boto esquerdo do mouse sobre a
caixa de texto
KeyDown: Ocorre quando o usurio aperta uma tecla no teclado.
KeyUp: Ocorre quando o usurio solta a tecla apertada.
KeyPress: Ocorre quando uma tecla pressionada e solta. Como argumento
possui uma varivel cujo contedo a tecla pressionada (cdigo
correspondente na tabela ASCII).
Cod.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Backspace
Tab
Enter
Esc
Cod.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Espao
!
"
#
$
%
&
'
(
)
*
+
,
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
Cod.
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
Cod.
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
43
Lionardo@base.com.br
31
63
?
95
_
127
Estes caracteres no so aceitos pelo Microsoft Windows.
Conhecendo os eventos e
vamos comear a us-los. No
que j criamos posicione o
txtNome e d dois clickes
janela assim:
Controles Bsicos
de evento chamado Private Sub txtNome_KeyPress(KeyAscii
As Integer). Vamos usar esse evento no objeto txtNome
para no aceitar o usurio digitar nmeros nesta caixa de
texto. A linha de comando ficar assim:
Lionardo@base.com.br
a propriedade
txtSexo.Enabled
46
Controles Bsicos
Como
foi explicado acima, esse evento
acionado
sempre que o usurio altera um valor digitado na caixa de
texto. Mas isto no significa que na
caixa de texto
obrigatoriamente tem que existir um valor para ser
alterado. Na verdade quando est vazia e digitamos algo
ali estamos alterando seu contedo.
Com isto, conclumos que sempre que digitarmos algo ali
(letra, nmero, barra de espao, delete, Backspace, etc.)
o evento Change ser acionado.
Digite
aberta:
seguinte
cdigo
na
janela
de
codificao
Lionardo@base.com.br
caso contrario
habilitadas.
Else
),
essas
propriedades
sero
True
Text
Vazio
ScrollBars
2 - Vertical
48
Controles Bsicos
49
Lionardo@base.com.br
chkRaioX
chkSangue
chkGravidez
chkEspermo
grama
Caption
Raio X
Sangue
Gravidez
Espermogr
ama
Controles Bsicos
processado no computador porque pelo menos um exame ele
vai fazer. Depois vamos fazer uma rotina que verifica
isto.
Algumas outras alterao teremos que fazer tambm, como
por exemplo no deixar o programa aceitar que um paciente
do sexo masculino faa exame de Gravidez, ou do sexo
feminino fazer Espermograma. Mas antes de trabalharmos
nisto necessrio conhecermos mais um objeto importante.
51
Lionardo@base.com.br
Option1
Name
optMasculino
OptFeminino
Masculino
Feminino
Caption
Option2
Os Botes de Opo
quando so
inseridos no
formulrio
automaticamente
so conjugados, de
maneira que
quando
selecionamos um o
outro
desmarcado. No
importa quantos
sejam.
Controles Bsicos
Chame
a
janela
de
Codificao
e
na
rotina
txtNome_Change() altere para ter as seguintes linhas de
comando:
53
Lionardo@base.com.br
Controles Bsicos
Enabled: Determina se todos todos os objetos colocados no interior da
moldura estar ou no disponvel para o usurio.
Name: Nome dado ao objeto. A inicial abreviada fra. Cuidado para no
colocar frm a abreviatura do Objeto Form.
55
Lionardo@base.com.br
EXERCCIOS PROPOSTOS
1 - Explique a finalidade dos Objetos:
Form:
CommandButton:
Label:
TextBox:
CheckBox:
OptionButton
Frame:
2 - Explique:
Controles Bsicos
4 - Pela aparncia descreva que tipo de Borda possui os formulrios abaixo:
8 - O que um Evento?
57
Lionardo@base.com.br
58
Controles Bsicos
59
Lionardo@base.com.br
60
Controles Bsicos
3 SELECIONANDO ITENS
ListBox
ComboBox
61
Lionardo@base.com.br
62
Selecionando Itens
Caixa de Lista
Vazia,
sem
nenhum
texto
digitado em seu
interior.
Caixa de Lista
Vazia
com
vrios nomes
inseridos na
propriedade
List
Este tipo de objeto muito til para mostrarmos uma relao de nomes
ou cdigos para se um (ou vrios) seja selecionado, e sempre que a
quantidade desses itens superar o tamanho do ListBox um ScroolBar Vertical
automaticamente ir aparecer.
bom ressalvar que este objeto, internamente, cria um ndice
comeando com 0 (zero) at na quantidade existente de itens. Exemplo: se
temos 4 nomes dentro do ListBox, Maria, Jos, Cornlios, Pedro e Peter,
ento o ndice criado ser 0 para Maria, 1 para Jos, e assim sucessivamente.
Este ndice ser usado sempre que for referenciar aos nomes contido dentro
do ListBox.
Lionardo@base.com.br
Style: CheckBox
Style: Standard
Selecionando Itens
CheckBox, onde os itens existentes no ListBox so acompanhados de um
quadradinho do lado esquerdo para se fazer a seleo dos itens. Para multiplas
selees esse tipo de ListBox mais intuitivo para o usurio.
65
Lionardo@base.com.br
cmdQuantidade
Cmdndice
Vamos
Colocar
3
objetos
Label
no
disposio do formulrio ficaria assim:
Propriedadades
cmdText
formulrio.
AutoSize
Label1
True
Label2
True
Label3
True
Caption
deixar vazio
deixar vazio
deixar vazio
Name
lblQuantidade
Lblndice
lblText
Selecionando Itens
ndice
mostrar
o
ndice
correspondente
ao
item
selecionado. O boto Texto ir mostrar o texto selecionado
dentro do ListBox. Veja os Cdigos a serem usados:
67
Lionardo@base.com.br
Boto1
Boto2
Boto3
Caption
Adicionar
Remover
Limpa Tudo
Name
CmdAdicionar
cmdRemover
CmdLimpaTudo
Propriedadades
Caixa de Lista
Caixa de Texto
Name
LstNomes
txtNome
Text
Deixar Vazio
As propriedades
do formulrio
ser Relao de
Nomes para o
Caption e
frmRelaoDeNomes
para o Name.
Veja ao lado como
ficar a janela.
68
Selecionando Itens
O mtodo AddItem requer na
sua sintaxe o texto que ser
adicionado
ao
ListBox.
Chamamos ento o objeto
txtNome e sua propriedade Text
que contm o texto.
O mtodo RemoveItem necessita
do nmero do ndice que o item
existente dentro ListBox possui.
Para se obter este ndice usamos
a propriedade ListIndex.
Quantos
problemas.
Mas
vamos
ento
resolver
O Objeto txtNome
tem sua propriedade
Text adicionada ao
lstNomes,
e
em
seguida igualada a
um contedo vazio.
Resolvemos o primeiro problema. Rode o programa
comprove isto! Agora temos que desabilitar o boto
Adicionar e somente deix-lo habilitado quando o usurio
digitar algo na caixa de texto (objeto txtNome). Sendo
assim no corremos o risco de algo vazio ser inserido na
caixa de lista.
69
Lionardo@base.com.br
solicitado
ao
programa
para
habilitar
o
boto
remover.
Depois,
quando
o
usurio
aperto o boto e
remover
o
item
pretendido,
colocamos
o
boto
remover
novamente
desabilitado.
70
Selecionando Itens
Rode o programa e veja o que acontece.
Para o usurio que esta digitando desconfortaste ter
que digitar um nome e ter que usar o mouse (tirar a mo do
teclado) para inserir um nome e depois clicar novamente na
caixa de texto para digitar outro nome. Para resolver esse
problema simples. Selecione o boto Adicionar e mude a
propriedade Default dele para True. Assim sempre que o
usurio digitar um nome e teclar ENTER ser como se
tivesse apertado o boto Adicionar.
Agora o programa est pronto! Pode vend-lo!
71
Lionardo@base.com.br
Selecionando Itens
3.2.2 Os Mtodos
Usamos para o ComboBox os mesmos mtodos usados para o
ListBox: AddItem, RemoveItem e Clear. O modo de manipul-los na janela de
codificao tambm o mesmo.
um
evento
Load
para
formulrio
da
seguinte
73
Lionardo@base.com.br
74
Selecionando Itens
EXERCCIOS PROPOSTOS
1 - Descreva as seguintes propriedades do ListBox:
List:
Sorted:
MultiSelect:
Selected:
ListCount
ListIndex:
75
Lionardo@base.com.br
76
Selecionando Itens
4 O FOCO
TabIndex
GotFocus e LostFocus
SetFocus
Mnemnico
77
Lionardo@base.com.br
78
Selecionando Itens
4.1 O FOCO
Foco o termo usado para descrever o objeto que esta em destaque
no momento. O objeto que esta sendo usado pelo usurio. Um objeto pode
perder ou ganhar o foco. Quando estamos manipulando-o ele ganha o foco, se
apertamos a tecla TAB ou clicarmos com o mouse em outro objeto o foco
transferido para outro objeto, ou seja, um ganha o foco e outro perde o foco.
A seqncia que a tecla TAB usa para dar foco aos objetos no
formulrio a ordem que eles foram inseridos no formulrio. Se voc inseri um
boto de comando e depois insere uma caixa de texto, ento quando
executarmos o programa o primeiro a receber o foco ser o boto de comando.
Quando apertar a tecla TAB o foco ser ento transferido para a caixa de texto.
Podemos tambm passar o foco para um determinado objeto usando o mouse.
79
Lionardo@base.com.br
4.1.2
A Tecla Enter
80
Selecionando Itens
propriedade
KeyPreview
do
formulrio
para
Lionardo@base.com.br
82
Selecionando Itens
NomeDoObjeto: Um objeto Form que representa um formulrio, ou um
objeto Control que representa um controle no formulrio ou folha de dados
ativo
Use o mtodo SetFocus quando voc quiser que um determinado
campo ou controle tenha o foco, para que toda a entrada do usurio seja
direcionada para esse objeto. De modo a ler algumas das propriedades de um
controle, voc precisa assegurar que o controle tenha o foco. Algumas
propriedades s podem ser definidas quando o controle no tem o foco. Por
exemplo, voc no pode definir as propriedades Visible ou Locked de um
controle como False quando esse controle tem o foco.
Voc no pode mover o foco para um controle se sua propriedade
Enabled estiver definida como False. Voc precisa definir a propriedade
Enabled de um controle como True antes de poder mover o foco para esse
controle. Voc pode, porm, mover o foco para um controle se sua propriedade
Locked estiver definida como True.
Lionardo@base.com.br
84
Selecionando Itens
Label 2:
Caption:Cargo
Label 3:
Caption:
Nome
do
Cnjuge
Enabled: False
Name: lblNomeConjuge
Frame 1:
Caption:Estado Civil
Frame 2:
Caption: Setor
Lionardo@base.com.br
esta desabilitada, e
o estado civil do
seguinte codificao
feito:
86
Selecionando Itens
Lionardo@base.com.br
letra n, ento sempre que este boto aparecer em outras janelas tente repetir
a tecla de acesso usada.
Outra dica: No use tecla de acesso para opes perigosas, como por
exemplo um boto Apaga Tudo. Se colocarmos uma tecla de acesso ALT+P
nele corremos o risco de do usurio apertar esta combinao por engano e
limpar tudo. Estas opes delicadas sempre bom obrigar o usurio a usar o
mouse ou a tecla TAB para ele ter certeza do que esta fazendo.
Usando o exemplo
acesso nos objetos:
anterior,
vamos
colocar
teclas
de
88
5 CONTROLES ESPECIAIS
MaskEdBox
CommonDialog
Lionardo@base.com.br
5.1
MASKEDBOX
90
Selecionando Itens
Format : Determina o formato que os dados sero exibidos. Seque os
mesmos padres estabelecidos para a funo Format (veja no captulo
Funes Auxiliares)
Use a propriedade Format para exibir dados em um formato
consistente, ou seja, os dados sero exibidos neste formato, mesmo que o
usurio digite os dados diferentemente do formato. Por exemplo, se voc
definir a propriedade Format para dd/mmm/yyyy, todas as datas digitadas
sero exibidas no formato 18/Set/1995. Se o usurio digitar a data como
18/09/95 (ou qualquer outro formato de data vlido), o Visual Basic converter
a exibio para o formato estabelecido, que dia / ms-por-extenso-abreviado
/ ano-com-4-digitos.
A propriedade Format afeta apenas a maneira como um valor exibido
e no como ele armazenado. Da mesma forma, um formato de exibio no
aplicado at que o usurio termine a digitao e o controle perca o foco.
Nada exibido no campo para sugerir ou controlar o formato no qual
os dados so inseridos.
Se voc precisar controlar a maneira como os dados so digitados, use uma
mscara de entrada alm de ou ao invs de um formato de exibio de dados.
Se voc quiser que os dados sejam exibidos exatamente como foram
inseridos, no defina a propriedade Format.
* FormattedText : Retorna o texto digitado, incluindo os caracteres que
compem a mscara.
Mask : Mscara que moldar o controle.
O Visual Basic fornece duas propriedades que produzem resultados
parecidos: a propriedade Format e o Mask.
Use a propriedade Mask para exibir caracteres de exibio literais no
campo com espaos em branco a serem preenchidos. Por exemplo, se todos
os nmeros de telefones que inserir em um campo tiverem o mesmo formato,
voc poder criar uma mscara de entrada:
(###) ###-####
(062) 621-3862
Lionardo@base.com.br
0
9
#
&
, . : ; - /
<
>
92
Selecionando Itens
e 3 labels:
93
Lionardo@base.com.br
5.2 COMMONDIALOG
O Visual Basic traz algumas caixas de dilogos prontas para Abrir
arquivo, Salvar, Imprimir, escolher Cor, ou escolher fontes de letra. Sua
utilizao simples e basta inserirmos o objeto CommonDialog no formulrio
para ativarmos os dilogos. Na codificao do programa usamos a propriedade
Action para o Visual Basic abrir o dilogo pretendido:
* Action : Determina o tipo de dilogo que ser exibido:
0
Nenhum dilogo.
1
Mostra caixa de dilogo Abrir Arquivo
2
Mostra caixa de dilogo Salvar Arquivo
3
Mostra caixa de dilogo Escolher Cor
4
Mostra caixa de dilogo Escolher Fonte de Letra
5
Mostra caixa de dilogo de Impresso.
6
Executa o WINHELP.EXE.
As principais propriedades deste objeto podem ser acessadas
selecionando (Custom) ou clicando no boto direito do mouse e selecionando
Propriedades no menu:
94
Selecionando Itens
95
Lionardo@base.com.br
96
Selecionando Itens
Lionardo@base.com.br
Selecionando Itens
NomeDoObjeto.ShowOpen
NomeDoObjeto.ShowSave
arquivo.
arquivo.
NomeDoObjeto.ShowPrinter
impresso.
janela
com
opes
de
Nomeie os objetos:
Tipo de Objeto
Label
Command1
Command2
CommonDialog
Exibe
Name
LblTeste
CmdCorLetra
cmdFonte
Dialogo
99
Lionardo@base.com.br
100
Selecionando Itens
6 MENUS
Criando Menus
Menus Instantneos
101
Lionardo@base.com.br
102
Selecionando Itens
6.1 MENUS
Lionardo@base.com.br
104
Selecionando Itens
Num projeto novo vamos criar um menu para um programa de
controle de estoque. Vamos primeiramente definir as opes
mestre que vo ficar no topo do menu.
105
Lionardo@base.com.br
106
Selecionando Itens
107
Lionardo@base.com.br
108
Selecionando Itens
Lionardo@base.com.br
Na
aplicao
anterior
coloque
no
formulrio
um
CommandButton e crie um evento MouseUp para ele com a
seguinte codificao:
110
Selecionando Itens
7 VARIVEIS E MATRIZES
Numrica
Texto
Data
Byte
Boolean
Object
Variant
Matrizes
111
Lionardo@base.com.br
112
Variveis e Matrizes
Lionardo@base.com.br
114
Variveis e Matrizes
No menu options, janela
Environment, habilite a
opo
Require
Variable Declaration
(Requer
Varivel
Declarada).
Assim
sempre que usar uma
varivel que no foi
declarada
pelo
comando Dim e no tem
seu tipo definido o
Visual
Basic
apresentar uma janela
de alerta. Faa isto
agora!
Usando isto, o Visual Basic ir exigir a declarao das variveis, e no
corremos o risco de, quando digitarmos o nome de alguma varivel errada, ele
aceitar. Exemplo: Criamos uma varivel de nome: ClienteCadastrado. E em
algum canto de nossa codificao digitamos: ClienteCadastado. Faltou a letra
r. Se a opo Require Variable Declaration estiver habilitada o Visual Basic
nos avisar que este nome no existe como varivel. Caso contrrio, o Visual
Basic ir imagin-la como uma nova varivel e aceitar o erro. No corra risco!
Descrio
Abrangncia
Integer
Long
Byte
Single
Numrico Inteiro
Numrico Inteiro
Numrico Inteiro
Numrico real
Double
Numrico real
Currency
-32.768 a 32.767
-2.147.483.648 a 2.147.483.648
0 a 255
-3,402823E38 a -1,401298E-45
1,401298E-45 a 3,402823E38
-1,79769313486232E308 a 4,94065645841247E324
4,94065645841247E-324 a
1,79769313486232E308
-922.337.203.685.477,5808 a
922.337.203.685.477,5807
2.147.483.648 de caracteres nos sistemas 32
bits
65.536 de caracteres nos sistemas 16 bits
entre 01/01/100 a 31/12/9999
True (verdadeiro) False (falso)
String
Date
Boolean
Data e Hora
115
Lionardo@base.com.br
Object
Variant
Contm um objeto
Pode ser numrico, string, objeto ou valor nulo.
Variveis e Matrizes
Quando criamos uma varivel do tipo String podemos delimitar
previamente o tamanho que ela ter. Veja a sintaxe:
Dim NomeEscola as String * 30
Criamos uma varivel de nome NomeEscola do tipo String (texto) e
que ter no mximo 30 caracteres. Se colocarmos mais que isto em seu
contedo o excedente ser ignorado. Se colocarmos menos que isto ser
preenchido com espaos em branco.
Lionardo@base.com.br
7.1.9 Null
Quando o contedo da varivel um dado invlido ela retorna a
palavra-chave Null.
Variveis e Matrizes
Private Sub Command2_Click()
Command2.Caption = NomeTeste
End Sub
Repare, a varivel NomeTeste foi criada dentro da rotina Private Sub
Command1 e na outra rotina Private Sub Command2 fazemos referencia a ela.
Como ela foi criada dentro da Private Sub Command1 ela tem validade
somente l. Este exemplo nosso retornar um erro, pois NomeTeste no existe
para Private Sub Command2.
Entretanto, se queremos que uma varivel tenha uma abrangncia em
todas as rotinas criadas dentro do formulrio, ento na janela de cdigo do
formulrio na parte superior mude o Object para General e o Proc para
declarations). As variveis que forem criadas ali valer para todas as rotinas
criadas para o formulrio e seus objetos anexados a ele.
Exemplo:
Option Explicit
Dim teste As String
Private Sub Command1_Click()
teste = "Testando a Variavel"
Print teste
End Sub
Veja que a varivel teste foi criada fora da rotina Private Sub, mas
possui abrangncia dentro dela.
Se criarmos um outro formulrio e pedirmos para imprimir a varivel
teste ir ocasionar um erro, pois a validade desta varivel somente dentro do
formulrio em que ela foi criada.
Caso precisamos de uma varivel de carter publico, que tenha
validade Global, em todos os formulrios e rotinas de nossa aplicao, ser
necessrio inserir um mdulo (Menu Insert opo Module) e dentro dele criar a
varivel com o comando PUBLIC no lugar de DIM. Veja exemplo:
Public Teste as String
119
Lionardo@base.com.br
Menu
Project
Janela de
codificao do
mdulo criado
Resumindo:
Veja ento as formas de se declarar uma varivel:
Varivel pblica todo o programa: podemos declarar uma varivel
pblica, especificando-a com o comando Public na seo
Declarations de qualquer mdulo.
Varivel pblica ao mdulo: atravs do comando de declarao Dim
na seo Declarations do mdulo desejado, especificamos que
uma varivel ser pblica apenas ao mdulo onde fora declarada.
varivel local rotina (Sub ou Function): declarando uma varivel
com o comando Dim dentro de qualquer procedimento Sub ou
Function a mesma ser reconhecida apenas pelo procedimento.
120
Variveis e Matrizes
Foi
criado
uma
varivel de nome Teste,
e seu contedo
Modelo Informtica.
Assim, sempre que
fizermos referencia a
Teste ir aparecer o
valor contido nela.
Nesta codificao
do segundo boto
apenas mandamos
inserir o contedo
da varivel Teste
para
o
Label
Lionardo@base.com.br
Rode
o
programa
e
aperte
o
segundo
boto
cmdSegundoTeste e veja o que acontece: A mensagem de
erro que aparecia antes no aparece mais, pois agora a
varivel abrange esta rotina tambm.
Mas no existe nenhum contedo para a varivel Teste at
o
momento
em
que
o
boto
cmdTesteVarivel
seja
pressionado. A varivel Teste ter um contedo somente
quando o boto cmdTesteVarivel for pressionado. At
ento, a varivel existe mas seu contedo vazio.
122
Variveis e Matrizes
Para entender melhor,
cmdSegundoTeste para:
mude
codificao
do
boto
123
Lionardo@base.com.br
7.3 MATRIZES
Nas matrizes podemos armazenar vrios dados (seja texto, nmeros
ou datas) em uma nica varivel. O que diferencia essencialmente uma matriz
de uma varivel que a primeira possui nveis dentro de si, e em cada nvel
podemos armazenar dados. Veja o exemplo de uma declarao e inicializao
de uma matriz:
Dim NomeCliente(3) as String
NomeCliente(0) = Fernando Henrique
NomeCliente(1) = Fernando Collor
NomeCliente(2) = Jos Sarney
Criamos um matriz de nome NomeCliente e definimos como sendo
uma String. Entretanto, definimos tambm que essa matriz ter 3 nveis
somente. Em cada nvel podemos colocar um elemento (um contedo) dentro
dele.
Todos os elementos da matriz precisam ser do mesmo tipo
estabelecido no comando Dim. Porm, se declararmos um matriz do tipo
Variant, cada elemento poder ser de um tipo de dado diferente.
Para acessarmos um determinado contedo temos que especificar o
nmero que acompanha o nome da matriz. Chamamos esses nmeros de
ndice, e so estes ndices que localiza os elementos dentro da matriz.
Exemplo: Se desejamos imprimir a matriz que contm o nome Jos Sarney
temos que digitar:
Print NomeCliente(2)
Se digitar somente NomeCliente o Visual Basic no ir retornar um erro
em tempo de execuo:
Este erro acontece porque uma vez definido NomeCliente como matriz,
ela poder somente ser chamada como uma matriz (com seu ndice).
A abrangncia e tempo de vida de uma matriz segue as mesmas
regras estabelecida para as variveis.
As regras de nomeao de uma matriz tambm so as mesmas
aplicadas as variveis.
124
Variveis e Matrizes
Lionardo@base.com.br
Coluna 2
Linha 1
Janeiro
(1,1)
Venda Ruim
(1,2)
Linha 2
Fevereiro
(2,1)
Venda Regular
(2,2)
Linha 3
Maro
(3,1)
Venda Boa
(3,2)
126
Variveis e Matrizes
Usamos o comando ReDim para fazer esse Redimensionamento da
matriz. Exemplo: Se precisarmos incluir mais 1 elemento na matriz
NomeCliente usariamos o comando:
ReDim NomeCliente(1)
NomeCliente(1) = Joo Figueiredo
Se depois precisarmos colocar mais 2 elementos usariamos:
ReDim NomeCliente(3)
NomeCliente(1) = Joo Figueiredo
NomeCliente(2) = Jos Sarney
NomeCliente(3) = Fernando Collor
Neste exemplo quando redimensionamos pela segunda vez tivemos
que colocar um contedo novamente para o NomeCliente(1) pois o comando
ReDim sempre apaga os dados armazenados anteriormente.
Quando no queremos que isto acontea usamos a clusula Preserve
Juntamento com o ReDim. Assim os contedos anteriores so preservados.
Veja:
ReDim NomeCliente(1)
NomeCliente(1) = Joo Figueiredo
Se depois precisarmos colocar mais 2 elementos usaramos:
ReDim Preserve NomeCliente(3)
NomeCliente(2) = Jos Sarney
NomeCliente(3) = Fernando Collor
127
Lionardo@base.com.br
128
Variveis e Matrizes
Por exemplo, vamos colocar dois Labels no formulrio e mudar sua
propriedade Name para lblTestaMatriz. No primeiro o Visual Basic aceitar o
nome sem problemas, no segundo Label quando tentarmos colocar o mesmo
nome j usado anteriormente por outro Label, o Visual Basic avisar que o
nome j existe e pergunta se no queremos usar uma matriz:
Se optarmos pelo sim ele criar uma matriz e renomear o objeto para
lblTestaMatriz(0) e lblTestaMatriz(1). A propriedade index de cada um possuir
os nmeros 0 e 1 respectivamente.
Usando uma matriz o nosso objeto agora ter que ser referenciada
com o seu ndice para podermos saber qual objeto estamos querendo usar:
Se formos fazer alguma codificao para este objeto, teramos que
sempre colocar o ndice correspondente ao objeto que estamos trabalhando.
Lionardo@base.com.br
Figueiredo
Jos Sarney
Collor
Objetos
Check4
chkNome
FHC
130
Variveis e Matrizes
EXERCCIOS PROPOSTOS
1 - Cite trs regra que temos que respeitar na criao de uma varivel:
Lionardo@base.com.br
132
8 OPERADORES
Matemtico
Relacional
Lgico
String
Lionardo@base.com.br
8.1 OPERADORES
A finalidade bsica dos operadores so para comparar, calcular,
igualar, concatenar... enfim, fazer operaes envolvendo variveis ou campos
de Banco de Dados.
134
Operadores
Descrio
Menor
Maior
Menor ou Igual
Maior ou Igual
Igual
Diferente
Exemplo
3<5
5>3
3 <= 5
5 >= 3
5=5
3 <> 5
135
Lionardo@base.com.br
Operadores
abrangncia maior, convertendo expresses de outros formatos para o string
para forar a concatenao.
de
texto
para
txtValor,
137
Lionardo@base.com.br
138
Operadores
EXERCCIOS PROPOSTOS
1 - Qual a diferena entre o operador / e o operador \ ?
139
9 COMANDOS CONDICIONAIS
E DE LAO
Condicionais
Lao
141
Lionardo@base.com.br
9.1
COMANDOS CONDICIONAIS
Lionardo@base.com.br
ELSEIF Contador = 20
Print Contador igual a 20
ELSE
Print Contador maior que 20
End If
Print Fim do Programa
O programa verifica se o contador menor que 20. Se no for verifica
se ento igual a 20, seno ir imprimir que contador maior que 20.
Veja outro exemplo:
SELECT CASE
Significa Seleo de Casos. Ou seja, colocamos vrias possibilidades
(varios casos) para o Visual Basic e ele escolhe um.
Veja a estrutura do comando:
Opo = 3
Select Case Opo
Case 1
Print Opo 1 acionada
Case 2
144
145
Lionardo@base.com.br
para
9.2
146
COMANDOS DE LAO
no
147
Lionardo@base.com.br
148
Lionardo@base.com.br
Loop
Print Fim da execuo
Exit For: Fora a sada de um FOR..NEXT, mesmo que o nmero
final no tenha sido alcanado.
Contador = 0
For Contador = 1 to 10
Print A varivel Contador agora vale &Contador
If Contador = 6
Exit For
end if
Next
Print Fim da execuo
expresses de outros formatos para o string para forar a concatenao.
150
EXERCCIOS PROPOSTOS
1 - Cite duas diferenas entre um lao DO WHILE e um lao DO - LOOP
WHILE?
2 - Qual intruo que verifica sua condio antes da execuo das rotinas que
fazem parte do lao?
151
10 FUNES DE AUXILIO
Data e Hora
Converso
String
Matemtica
Entrada de Dados
Identificao
Manipulao de Matriz
153
Lionardo@base.com.br
10.1 FUNES
Funes nada mais que rotinas prontas para executar determinadas
aes.
Existem no Visual Basic diversos tipos de funes que nos auxiliam na
programao em todos os aspectos. So funes que fazem clculos, funes
que exibem resultados, funes para todos os gostos. Vamos comear a ver
algumas dessas funes e com isto descobriremos o poder que elas exercem
dentro da linguagem e sua utilidade.
Existem funes que precisam de um argumento para executar uma
tarefa, outras somente retorna algum valor sem necessidade do argumento,
como visto nos exemplos abaixo:
10.1.1
Funes matemticas
155
Lionardo@base.com.br
10.1.2
Funes de Converso
Lionardo@base.com.br
Print CInt(45.40)
Valor Impresso: 45
Print CInt(45.60)
Valor Impresso: 46
CLNG: Converte uma expresso numrica em um nmero inteiro
longo.
VarivelNumrica = CLng(<expresso>)
VarivelNumrica = CLng(<expresso numrica>)
Print Clng(45.40)
Valor Impresso: 45
Print Clng(45.60)
Valor Impresso: 46
A diferena entre a funo CINT e CLNG a abrangncia da prpria
varivel.
CSNG: Converte uma expresso numrica em um nmero de ponto
flutuante de preciso simples.
VarivelNumrica = CSng(<expresso >)
CSTR: Converte uma expresso numrica, data ou outra em uma
string (texto).
VarivelString = CStr(<expresso>)
Print Cstr(452)
Valor Impresso: 452
CVAR: Converte uma expresso de qualquer tipo para o tipo variante.
VarivelVariant = Cvar(<expresso>)
STR: Converte um valor numrico para o tipo String (texto). Valido
somente para argumentos numricos.
VarivelString = Str(<expressoNumrica>)
Print Str(452)
Valor Impresso: 452
STRCONV: Retorna uma string convertida de acordo com o tipo de
converso especificado.
VarivelString = Strconv(<ExpressoString>, <TipoDeConverso>)
Tipos de converso que podemos usar:
vbUpperCase Converte toda a expresso em letras maisculas.
vbLowerCase Converte toda a expresso em letras minsculas.
158
10.1.3
Lionardo@base.com.br
yyyy
q
m
y
d
w
ww
h
n
s
Ano
Trimestre
Ms
Dia do ano
Dia
Dia da semana
Semana
Hora
Minuto
Segundo
Ms
Dia do ano
Dia
Dia da semana
Semana
Hora
Minuto
Segundo
Lionardo@base.com.br
Lionardo@base.com.br
a seguinte codificao:
164
10.1.4
Funes de String
Lionardo@base.com.br
166
Lionardo@base.com.br
10.1.5
10.1.6
Funes Lgicas
IIF: Analisa uma expresso lgica, e retorna valores para quando for
falso ou verdadeiro.
ExpressoDeRetorno = IIF (<ExpressoLgica>,
<ExpressoParaVerdadeiro>, <ExpressoParaFalso>)
Print iif(10 > 2,10 maior que 2, 2 maior que 10)
Valor Impresso: 10 maior que 2
Print iif(10= 5,Igual, Diferente)
Valor Impresso: Diferente
SWITCH: Avalia uma lista de expresses e retorna o valor associado
quela primeiro avaliada como verdadeira.
Switch(Expr-1, Valor-1[, Expr-2, Valor-2 , Expr-etc, Valor-etc])
Expr : Expresso variant que voc quer avaliar.
Valor : Valor ou expresso que retornado se a expresso
correspondente for True.
A lista de argumentos da funo Switch consiste de pares de
expresses e valores. As expresses so avaliadas medida que aparecem na
169
Lionardo@base.com.br
10.1.7
Funes de Disco
170
vbNormal
vbReadOnly
vbHidden
vbSystem
vbDirectory
vbArchive
Normal.
Somente Leitura.
Oculto.
Arquivo de sistema
Diretrio ou pasta.
O arquivo foi modificado desde o ltimo
backup.
Print GetAttr("C:\WINDOWS\SYSTEM.INI")
Valor Impresso: 32
171
Lionardo@base.com.br
10.1.8
Funes de Teste
vlido.
VarivelBoolean = IsObject(<Expresso>)
VARTYPE: Retorna o tipo de varivel especificada como argumento:
VarivelNumrica = VarType(<Varivel>)
Retorna os valores abaixo:
172
10.1.9
Funes de Escolha
173
Lionardo@base.com.br
Constante
Valor
Descrio
vbOKOnly
VbOKCancel
VbAbortRetryIgnore
VbYesNoCancel
VbYesNo
VbRetryCancel
VbCritical
VbQuestion
0
1
2
3
4
5
16
32
Lionardo@base.com.br
VbExclamation
VbInformation
VbDefaultButton1
VbDefaultButton2
VbDefaultButton3
VbApplicationModal
48
64
0
256
512
0
VbSystemModal
4096
Constante
Valor de Retorno
Boto escolhido
vbOK
"OK"
vbCancel
"Cancelar"
vbAbort
"Anular"
vbRetry
"Repetir"
vbIgnore
"Ignorar"
vbYes
"Sim"
vbNo
"No"
176
("Deseja
Continuar?",VbYesNoCancel,
"Ativar
Bomba
177
Lionardo@base.com.br
178
Lionardo@base.com.br
Lionardo@base.com.br
formato
Muitos caracteres da expresso de formato tm um significado
especial e no podem ser exibidos como caracteres literais a menos que sejam
precedidos por uma barra invertida. A barra propriamente no exibida. Sua
utilizao equivale a colocar o caractere seguinte entre aspas. Para exibir uma
barra invertida, use duas barras invertidas (\\).
Exemplos de caracteres que no podem ser exibidos como caracteres
literais so caracteres de formatao de data e hora (a, c, d, h, m, n, p, q, s, t,
w, y e /:), caracteres de formatao numrica (#, 0, %, E, e, vrgula e ponto) e
os caracteres de formatao de seqncias de caracteres (@, &, <, >, e !).
"ABC" Exibe a seqncia de caracteres que est entre aspas.
Para incluir uma seqncia de caracteres em Format a partir do
cdigo, voc deve usar Chr(34) para delimitar o texto (34 cdigo de caractere
para aspas).
Usamos tambm como argumento na formatao de expresses
numricas algumas palavras-chave que correspondem a algum tipo de formato
padro.
General Number : Exibe o nmero na forma em que se encontra, sem
separadores de milhar.
Print Format(123456.7, "General Number")
Valor Impresso: 123456,7
Currency : Exibe o nmero com o separador de milhar, se apropriado;
exibe dois dgitos direita do separador de casa decimal. Note que a sada
baseada nas configuraes do Painel de Controle.
Print Format(123456.7, "Currency")
Valor Impresso: R$123.456,70
Fixed : Exibe pelo menos um dgito esquerda e dois dgitos direita
do separador de casa decimal.
182
183
Lionardo@base.com.br
184
185
Lionardo@base.com.br
w
Exibe o dia da semana como um nmero (1 para domingo at
7 para sbado).
ww
Exibe a semana do ano como um nmero.
Print Format("01/08/96","ww")
Valor Impresso: 31
m
Exibe o ms como um nmero sem zeros esquerda. Se m
vier imediatamente depois de h ou hh, exibido o minuto em lugar do ms.
Print Format("01/08/96","m")
Valor Impresso: 8
mm
Exibe o ms como um nmero com zeros esquerda. Se m
vier imediatamente depois de h ou hh, exibido o minuto em lugar do ms.
Print Format("01/08/96","mm")
Valor Impresso: 08
mmm Exibe o ms como uma abreviado em trs letras.
Print Format("01/08/96","mmm")
Valor Impresso: Ago
mmmm Exibe o ms como um nome completo.
Print Format("01/08/96","mmmm")
Valor Impresso: Agosto
q
Exibe o trimestre do ano como um nmero.
Print Format("01/08/96","q")
Valor Impresso: 3
y
Exibe o dia do ano como um nmero.
Print Format("01/08/96","y")
Valor Impresso: 214
yy
Exibe o ano como um nmero de dois dgitos.
Print Format("01/08/96","yy")
Valor Impresso: 96
yyyy Exibe o ano como um nmero de quatro dgitos.
Print Format("01/08/96","yy")
Valor Impresso: 1996
186
Lionardo@base.com.br
188
Lionardo@base.com.br
&
Exibe um caractere ou nada. Se a seqncia de caracteres
tem um caractere na posio em que & aparece, ele ser exibido; caso
contrrio, nada ser exibido. Os espaos reservados so preenchidos da direita
para a esquerda a menos que exista um caractere ! na seqncia de
caracteres de formato. Veja abaixo.
!
Fora preenchimento da esquerda para a direita dos espaos
reservados. O preenchimento padro feito da direita para a esquerda.
190
<
>
EXERCCIOS PROPOSTOS
1 - Mostre a diferena entre as funes matemticas FIX e INT:
2 - Para converter uma varivel para o tipo Data usamos qual funo?
Lionardo@base.com.br
11 - Considerando que:
A = Editora
B = Grfica
C = Editora
D = IIF(A=B, Igual, Diferente)
E = IIF(A=C, Igual, Diferente)
F = IIF(C=B, Igual, Diferente)
QuaL o contedo das variveis D, E e F?
192
MSGBOX:
Data e Hora:
String:
193
11 CRIAO DO BANCO DE
DADOS
Caracteristicas
Visual Data Manager
ndices
195
Lionardo@base.com.br
196
11.1.1
Caractersticas
TABELA:
Fornecedor
TABELA:
Cliente
CAMPO:
Descrio
Quantidade
Valor
CAMPO:
Nome
Endereo
Telefone
CAMPO:
Nome
ValorCompra
DADOS:
Calo de Banho
12
R$ 12,00
DADOS:
Solaris Ind. e Com.
Rua 12, 300 - RJ
(021) 451-7854
DADOS:
Joaquim Pereira
R$ 42,00
197
Lionardo@base.com.br
11.1.2
198
199
Lionardo@base.com.br
200
Lionardo@base.com.br
FixedField:Campo Fixo
VariableField: Campo Varivel, que o padro.
AllowZeroLength: Permitir comprimento zero, ou seja, quando esta
opo esta selecionada o campo aceita (""). Se esta opo no tiver habilitada
e o usurio tentar gravar um campo que no tenha nada digitado (como um
daado no-obrigatrio no programa) ocorrer um erro em tempo de execuo.
Required: Quando esta opo esta marcada o campo se torna
obrigatrio, ou seja, necessrio informar valores para o campo, seno ocorre
erro em tempo de execuo.
DefaultValue: Quando temos um campo que no pode ficar vazio,
sempre interessante digitar algo aqui nesta opo, pois os valores que
202
Data Type
Integer
Currency
Text
Size
N/A
N/A
3
Aperte o boto Build The Table para que a tabela seja gravada e
inserida no banco de dados.
203
Lionardo@base.com.br
Data Type
Text
Text
Currency
Size
3
30
N/A
Tabela: Vendas
Field Name
Cdigo
CdCliente
ValorVenda
QuantidadeVendida
Data Type
Text
Text
Currency
Integer
Size
3
3
N/A
N/A
204
Criamos uma tabela Vendas onde ser lanado o cdigo do cliente que
efetuou a compra, o codigo da mercadoria que este cliente comprou, o valor
total de sua compra e a quantidade de mercadoria que ele levou. Este exemplo
simples mas vai servir para nosso aprendizado.
11.1.3
Criando indices
Lionardo@base.com.br
207
Lionardo@base.com.br
12 MANIPULAO DO BANCO
DE DADOS
208
209
Lionardo@base.com.br
210
Lionardo@base.com.br
212
12.1.1
Uma vez que vamos trabalhar com manipulao de dados, temos que
verificar se o Visual Basic est apto para fazer esta manipulao. Os servios
necessrios para executar essas funes esto em uma DLL do Microsoft DAO
3.5 Object Library. Para que nosso programa leia essa DLL temos que ir at o
menu Project/References e selecionar esta DLL:
213
Lionardo@base.com.br
215
Lionardo@base.com.br
12.1.2
Abrindo um indice
Prximo passo abrir o ndice que esta tabela ir trabalhar. Este ndice
necessrio para ordenar os dados que forem digitados num determinada
ordem (no nosso caso a ordem por cdigo) e fazer uma procura rpida pela
chave de indexao.
O ndice da tabela Mercadoria o IndCdigo e possui como chave de
indexao o campo Cdigo.
12.1.3
12.1.4
Cuidados especiais
Lionardo@base.com.br
219
Lionardo@base.com.br
12.1.5
Funes de apoio
220
Lionardo@base.com.br
Lionardo@base.com.br
Veja o que foi feito: Sempre que o usurio clicar neste boto o
programa limpa o formulrio para deixar as caixas de texto vazias para serem
preenchidas com novos dados. O Frame habilitado para que as caixas de
texto possam ser manipuladas. Em seguida o foco passado para o caixa de
texto txtCdigo pois a primeira que deve ser digitada pelo usurio
Ainda no aplicamos o mtodo AddNew pois ainda no sabemos se o
usurio vai incluir um cdigo vlido. Primeito o programa tem que analizar o
cdigo que ele digitou, verificar se ele realmente no existe para depois usar o
mtodo AddNew. Fazemos isto no evento LostFocus da Caixa de Texto
txtCdigo.
Neste evento verificamos primeiramente se o boto CmdGravar esta
habilitado. Se estiver porque a incluso foi acionada.
O programa procura o cdigo digitado. Se ele existir sera dado um
aviso ao usuario e o processo de incluso ser cancelado, caso contrrio (ou
seja, se o cdigo no existir dentro da tabela) o mtodo AddNew chamado a
fim de preparar a tabela para receber um novo registro.
225
Lionardo@base.com.br
Pronto, a janela j esta preparada para receber os dados. Mas agora falta fazer
a codificao para o boto Gravar.
226
227
Lionardo@base.com.br
12.4 ALTERAO
12.5 CONSULTA
Para consulta vamos usar a funo INPUTBOX. Aprendemos a us-la
nos captulos anteriores. Ela solicita ao usurio a digitao de algum dado e
armazena numa determinada varivel.
Ento criamos uma varivel de nome ProcuraCdigo e usamos ela
para receber o que o usurio digitar.
Feito isto, usamos o mtodo Seek para efetuar uma procura dentro da
tabela.
Seek: Localiza o registro de um objeto Recordset tipo table indexado
que satisfaa os critrios especificados para o ndice atual e torna esse registro
o registro atual.
Aps o Seek colocamos um sinal de comparao para determinar o
tipo de procura que este mtodo fara. Podemos usar = ,<, >, <=, >=, etc
O mtodo Seek pesquisa os campos-chave especificados e localiza o
primeiro registro que satisfaa os critrios especificados na comparao dentro
da chave de ndice. Uma vez encontrado, esse registro torna-se o registro atual
e a propriedade NoMatch definida como False. Se o mtodo Seek falhar em
localizar um registro correspondente, a propriedade NoMatch configurada
como True e o registro atual indefinido.
229
Lionardo@base.com.br
Se comparao for igual (=), maior ou igual a (>=) ou maior do que (>),
o Seek comea a pesquisa no incio do ndice. Se comparao for maior do
que (<) ou maior ou igual a (<=), o Seek comea a pesquisa no final do ndice e
continua em direo ao incio a menos que existam entradas de ndice
duplicadas no final. Neste caso, Seek comea por uma entrada arbitrria entre
as entradas de ndice duplicadas no final do ndice.
Quando informamos uma chave para o mtodo Seek procurar, esta
chave deve ser no mesmo formato que o estabelecido no ndice do arquivo
(index). Por exemplo: no TBMercadoria a chave do ndice o Cdigo, ento o
Seek somente faz a procura pelo cdigo. No podemos pedir para procurar
pela Descrio da mercadoria, pois para isto deveria existir um ndice para
descrio.
Em nosso exemplo se NoMatch for True (ou seja, se no encontrou
nenhum registro que seja igual ao contedo da varivel ProcuraCdigo)
movemos para o registro anterior e depois o formulrio atualizado. Fazemos
isto pois quando uma procura no bem sucedida a tabela posicionada no
fim de arquivo, e como no existe nenhum registro nesta posio,
movimentamos para um registro antes, onde o ultimo registro includo se
encontra.
Quando clicarmos no boto Consultar uma janela como a que esta
abaixo aparecer no video:
12.6 EXCLUSO
230
231
Lionardo@base.com.br
Option Explicit
Dim BancoDeDados As Database
Dim TBCliente As Recordset
Private Sub cmdAlterar_Click()
cmdIncluir.Enabled = False
cmdAlterar.Enabled = False
cmdConsultar.Enabled = False
cmdExcluir.Enabled = False
cmdAnterior.Enabled = False
cmdProximo.Enabled = False
cmdGravar.Enabled = True
cmdSair.Enabled = True
Frame1.Enabled = True
txtCdCliente.Enabled = False
txtNome.SetFocus
TBCliente.Edit
End Sub
Private Sub cmdAnterior_Click()
TBCliente.MovePrevious
If TBCliente.BOF = True Then
232
Cdigo
do
End Sub
Private Sub cmdExcluir_Click()
If MsgBox("Confirma Excluso?", vbYesNo) = vbYes Then
TBCliente.Delete
cmdAnterior_Click
End If
End Sub
Private Sub cmdGravar_Click()
cmdIncluir.Enabled = True
cmdAlterar.Enabled = True
cmdConsultar.Enabled = True
cmdExcluir.Enabled = True
cmdAnterior.Enabled = True
cmdProximo.Enabled = True
cmdGravar.Enabled = False
cmdSair.Enabled = True
Frame1.Enabled = False
233
Lionardo@base.com.br
txtCdCliente.Enabled = True
AtualizaCampos
TBCliente.Update
End Sub
Private Sub cmdIncluir_Click()
cmdIncluir.Enabled = False
cmdAlterar.Enabled = False
cmdConsultar.Enabled = False
cmdExcluir.Enabled = False
cmdAnterior.Enabled = False
cmdProximo.Enabled = False
cmdGravar.Enabled = True
cmdSair.Enabled = True
LimpaFormulrio
Frame1.Enabled = True
txtCdCliente.SetFocus
End Sub
Private Sub cmdProximo_Click()
TBCliente.MoveNext
If TBCliente.EOF = True Then
TBCliente.MovePrevious
End If
AtualizaFormulrio
End Sub
Private Sub cmdSair_Click()
Unload frmCadClientes
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
SendKeys ("{TAB}")
234
Lionardo@base.com.br
cmdProximo.Enabled = True
cmdGravar.Enabled = False
cmdSair.Enabled = True
Frame1.Enabled = False
Else
TBCliente.AddNew
End If
End Sub
Private Sub txtValor_LostFocus()
txtLimiteCrdito.Text
=
Format(txtLimiteCrdito.Text,
"Standard")
End Sub
236
237
Lionardo@base.com.br
238
Criamos uma varivel para cada tabela que ser aberta. Precisamos
agora criar um evento Form_Load para abrir todas essas tabelas.
Veja que abrimos todas as trs tabelas que sero usadas neste
formulrio, e abrimos tambm todos os ndices relativo a cada uma.
As nossas funes auxiliares sofrero alguma mudana pois
acrescentamos em nosso formulrio dois labels, e um conter a descrio da
mercadoria e outro o nome do cliente.
239
Lionardo@base.com.br
240
A incluso para esta tabela segue o estilo que usamos para os outros
formulrios. Existe somente uma diferena fundamental que o aparecimento
do nome do cliente e a descrio da mercadoria quando o usurio digitar o
241
Lionardo@base.com.br
242
243
Lionardo@base.com.br
Lionardo@base.com.br
Option Explicit
Dim
Dim
Dim
Dim
BancoDeDados As Database
TBVendas As Recordset
TBMercadoria As Recordset
TBCliente As Recordset
Lionardo@base.com.br
TBVendas.MovePrevious
End If
AtualizaFormulrio
End Sub
Private Sub cmdSair_Click()
Unload frmLanamentoVendas
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
SendKeys ("{TAB}")
KeyAscii = 0
End If
End Sub
Private Sub Form_Load()
Set BancoDeDados=OpenDatabase(App.Path & "\Estoque.MDB")
SetTBMercadoria=BancoDeDados.OpenRecordset"Mercadoria",
dbOpenTable)
Set TBCliente=BancoDeDados.OpenRecordset("Cliente",
dbOpenTable)
Set TBVendas=BancoDeDados.OpenRecordset("Vendas",
dbOpenTable)
TBMercadoria.Index = "IndCdigo"
TBCliente.Index = "IndCdigo"
TBVendas.Index = "indClienteMercadoria"
cmdGravar.Enabled = False
Frame1.Enabled = False
If TBVendas.EOF = False Then
AtualizaFormulrio
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
248
TBVendas.Close
TBMercadoria.Clone
TBCliente.Close
BancoDeDados.Close
End Sub
Private Function AtualizaCampos()
TBVendas("Cdigo") = txtCdigo
TBVendas("CdCliente") = txtCdCliente
TBVendas("ValorVenda") = txtValorVenda
TBVendas("QuantidadeVendida") = txtQuantidadeVendida
End Function
Lionardo@base.com.br
End Sub
Private Sub txtCdCliente_LostFocus()
txtCdCliente.Text = Format(txtCdCliente.Text, "000")
TBCliente.Seek "=", txtCdCliente
If TBCliente.NoMatch = True Then
MsgBox "Cliente no cadastrada. Operao
Cancelada"
CancelaDigitao
Exit Sub
End If
lblNomeCliente = TBCliente("Nome")
TBVendas.Seek "=", txtCdCliente.Text, txtCdigo.Text
If TBVendas.NoMatch = False Then
MsgBox "Vendas j existente. Tente outro cdigo"
CancelaDigitao
Else
TBVendas.AddNew
End If
End Sub
Private Sub txtValorVenda_LostFocus()
txtValorVenda.Text = Format(txtValorVenda.Text,
"Standard")
End Sub
Private Function AtualizaFormulrio()
txtCdigo = TBVendas("Cdigo")
txtCdCliente = TBVendas("CdCliente")
txtValorVenda = Format(TBVendas("ValorVenda"),
"Standard")
txtQuantidadeVendida = TBVendas("QuantidadeVendida")
TBMercadoria.Seek "=", txtCdigo
TBCliente.Seek "=", txtCdCliente
250
251
Lionardo@base.com.br
252
13 USANDO O CONTROLE
DATA
Data
DBGrid
253
Lionardo@base.com.br
254
255
Lionardo@base.com.br
256
13.2 DBGRID
No projeto desenvolvido no captulo anterior, deixamos de codificar o
boto de Consulta. Vamos fazer isto agora usando um DBGrid para auxiliar na
consulta. Adicione um novo formulrio e mude a propriedade Name para
257
Lionardo@base.com.br
frmConsulta. Neste formulrio vamos criar todas as rotinas de consulta que iro
aparecer para o usurio.
Insira um CommandButton no formulrio, um objeto do tipo Data e
um objeto do tipo DBGrid:
DBGrid
Data
Estes Controles sero inseridos na seguinte disposio:
Lionardo@base.com.br
260
261
Lionardo@base.com.br
262
263
Lionardo@base.com.br
264
14 IMPRESSO
Printer
Crystal Reports
Lionardo@base.com.br
266
14.1 PRINTER
Em nosso programa vamos acrescentar um item no menu principal
chamado impresso do Estoque e com isto vamos imprimir o contedo da
tabela mercadoria.
Lionardo@base.com.br
32
33
34
35
36
37
38
39
40
41
256
-1
-2
-3
-4
Resoluo Draft
Baixa Resoluo
Mdia Resoluo
Alta Resoluo
Os mtodos:
EndDoc: Finaliza a impresso de um relatrio
KillDoc: Termina imediatamente a impresso
NewPage: Fora a impresso passar para a prxima pgina.
Print <expresso> : Imprime uma expresso ou varivel especificada.
O Objeto Printer no aparece na caixa de ferramentas, nem possui um
cone como outros objetos. Ele interno que no possui formato visual.
Para desenvolver nossa rotina de impresso, d um click na opo
Impresso Estoque no menu e vamos codificar o programa:
269
Lionardo@base.com.br
Lionardo@base.com.br
272
Printer.CurrentX = 300
Printer.Print Tab(3); TBMercadoria("Cdigo");
Printer.Print Tab(10); TBMercadoria("Descrio");
Printer.Print Tab(50); Format(TBMercadoria
("Quantidade"), "##,###");
Printer.Print Tab(70); Format(TBMercadoria("Valor"),
"Currency")
273
Lionardo@base.com.br
Linha = Linha + 1
TBMercadoria.MoveNext
If Linha >= 50 Then
Printer.NewPage
Linha = 1
End If
Loop
Printer.EndDoc
TBMercadoria.Close
BancoDeDados.Close
End Sub
Private Function Cabealho()
Printer.Print
Printer.Print
Printer.Print
Printer.Print
Printer.Print
Printer.Print
Tab(3); "Cd";
Tab(10); "Descrio";
Tab(50); "Quantidade";
Tab(70); "Valor"
String(100, "-")
End Function
274
Lionardo@base.com.br
Aperte o boto Data File para escolher o banco de dados que sera
usado no relatrio. Depois de escolhido ir aparecer a relao de todas as
tabelas existentes no Banco de Dados. Escolha o Arquivo "Estoque.MDB".
276
277
Lionardo@base.com.br
279
Lionardo@base.com.br
Nesta tela pode-se fazer um filtro dos registros que iro compr o
relatrio. No faremos nenhum tipo de filtro.
280
Lionardo@base.com.br
Uma vez feito tudo isto, nosso relatrio esta pronto. Vamos agora
salvar o arquivo e mandar executar em nosso programa.
Va no menu "File", opo "Save" e grave este relatrio com o nome de
"Mercadoria".
Feche o Cristal Reports e volte para o nosso programa.
Crie mais um formulrio para o projeto, e d o nome de
"frmRelatrios". Abra uma opo no menu principal do programa e acrescenteo nele.
282
Lionardo@base.com.br
284