Escolar Documentos
Profissional Documentos
Cultura Documentos
326ap Vbasic
326ap Vbasic
0 1
Módulo 1
Criando Aplicações
Visual Basic
Por exemplo, você pode escrever uma rotina para avançar para o
próximo registro de uma tabela de dados assim que o botão identificado pela
legenda Avança de um formulário for pressionado. Você então atribui o nome
dessa rotina ao evento Click do botão. Assim, toda vez que o botão for
pressionado através de um clique do mouse, a rotina será chamada. Após o
término de sua execução, haverá o retorno automático ao formulário.
Prática :
Adicionar no formulário :
Exemplos:
1.4 Métodos
Exemplos :
1.5 Eventos
Exemplos :
Microsoft Visual Basic 4.0 5
click
dblclick
keypress
load
gotfocus
lostfocus
Formulários
O usuário interage com os controles no formulário para obter resultados
hide Þ esconde
nome Þ movimenta o formulário
print Þ imprime
setfocus Þ ativa o formulário
show Þ mostra na tela o formulário ( semelhante
chamada de rotina ).
click Þ 1 click
dblclick Þ 2 clicks
gotfocus Þ quando ele ganha o foco
load Þ carrega
mousedown Þ 1 click para baixo
mouseup Þ 1 click para cima ( larga o botão )
unload Þ descarrega
Microsoft Visual Basic 4.0 6
Controle Label
Nome
label textbox
Algumas Propriedades
caption Þ rótulo
font Þ tipo de letra
autosize Þ tamanho automático
appearance Þ aparência (2D,3D)
click
dblclick
Controle Textbox
Usado para obter informação do usuário.
Algumas Propriedades
Microsoft Visual Basic 4.0 7
Alguns Eventos
Controle Commandbutton
É utilizado para invocar uma ação. A maioria dos formulários possuem
os controles OK e CANCEL
Algumas Propriedades
Controle Combobox
Permite que você selecione uma opção existente em uma lista pre-
determinada, digitando-os em uma caixa de texto associada a esta lista
Data
Permite acessar dados armazenados em um arquivo de Banco de
Dados.
Microsoft Visual Basic 4.0 8
Algumas Propriedades
editmode
readonly
top
database
Menu
Permite a criação de menus personalizados para a sua aplicação,
deixando-a com uma aparência mais profissional.
Algumas Propriedades
appearance
name
caption
index
Evento ( único )
click
Ole Container
Insere no formulário outros aplicativos ( som, .doc, planilha excel, etc).
Picture Box
O controle picture box é utilizado para exibir imagens de arquivos
bitmap, icon e metafile.
Timer
Permite a você executar certas partes de seu código a intervalos de
tempo. ( Background )
Prática 1
Vamos simular um pequeno editor de texto para que você entenda como
o controle Timer vai realizando tarefas em segundo plano (background).
tempo = now
Prática 2
End Sub
Prática 3
Fillcolor = qbcolor (int (rnd * 15)) ‘ sortea-se uma cor para o fundo da
‘circunferência
Fillstyle = int(rnd * 8) ‘ sortea-se um grid para a circunf.
Circle (x,y), 250 ‘ desenha um círculo
Prática 4
Inserir Código :
Microsoft Visual Basic 4.0 12
cmdcancela_click()
msgbox “Esse botão cancela a aplicação”
end
cmdok_click()
txtsenha_change()
If txtnome.text<> “ ” and txtsenha.text<> “ “
then cmdok.enable = true
endif
txtnome_change()
If txtnome.text <> “ “ and txtsenha.text <> “ “
then cmdok.enable= true
endif
Prática 5
Form1
Label1 Text1
Label2 Text2
Comand1 Comand2
Microsoft Visual Basic 4.0 13
Label3
Label4
btnOK_click()
Microsoft Visual Basic 4.0 14
btnCancela_click()
end
Para executar :
1. 4
2. Criando um .EXE
· Selecione opção Make EXE File do menu File.
· Escolha Options.
Clique OK duas vezes depois execute o programa através da pasta onde foi
gerado o executável.
KeyAscii = 0
KeyAscii = KeyAscii - 32
End If
Módulo 2
Trabalhando com
Formulários
Ambiente (Environment)
Project
Editor
Microsoft Visual Basic 4.0 17
Sintaxe :
256 2° Botão
512 3° Botão
Botão Valor(constantes)
OK vbok(1)
Cancela vbcancel(2)
Aborta vbabort(3)
Retorna vbretry(4)
Ignore vbignore(5)
Yes vbyes(6)
No vbno(7)
Exemplo :
Clique Aqui
Exemplos:
End Sub
formulário
Exemplo :
Frmform1.show Frmform1.hide
Load Frmform1 Unload Frmform1
Exemplo:
Prática 6
AX2 + BX + C = 0
Microsoft Visual Basic 4.0 21
Relembrando :
Resolução:
Passos :
Name - Frmmain
Caption - Equação do 2° grau
Microsoft Visual Basic 4.0 22
Objetos :
Label
1 - Name lblDados
Caption Dados da Equação
2 - Name lblA
Caption Coeficientes A=
3 - Name lblB
Caption B=
4 - Name lblC
Caption Termo independente C=
Command
1 - Name cmdcalcular
Caption &Calcular
Default TRUE
2 - Name cmdsair
Caption &Sair
Textbox
1 - Name TXTA
Text <vazio>
Maxlength 5
2 - Name TXTB
Text <vazio>
Maxlength 5
3 - Name TXTC
Text <vazio>
Microsoft Visual Basic 4.0 23
Maxlength 5
Código
CmdCalcular_click()
EndSub
CmdSair_click()
End
EndSub
Name FrmResultado
Caption Resultado
Microsoft Visual Basic 4.0 24
Label
1 - Name lblX1
Caption X1 =
2 - Name lblX2
Caption X2 =
Command
1 - Name Cmdvoltar
Caption &Voltar
Default TRUE
Textbox
1 - Name txtx1
text <vazio>
2 - Name txtx2
text <vazio>
FrmMain.txta.text = “ “
FrmMain.txtb.text = “ “
FrmMain.txtc.text = “ “
Frmresultado.Hide
FrmMain.Show
Módulo 3
Aspectos de Programação
Visual Basic
3.3 Variáveis
Þ No Visual Basic 4.0, os nomes podem ter até 255 caracteres de comprimento.
Isso significa que podemos ter nomes de variáveis bem descritivos, como
por exemplo, PrimeiroNomedoCliente.
Microsoft Visual Basic 4.0 26
Þ Não podem coincidir com uma palavra reservada do Visual Basic, como
nomes de funções ou procedimentos.
Þ Precisam ser únicos dentro do escopo atual, ou seja, não podemos ter duas
variáveis com o mesmo nome dentro de uma rotina, porém, entre rotinas
diferentes, isso é perfeitamente possível.
(Val. Positivos)
Currency 8 Bytes - 922.337.203.685.477,5808 a
922.337.203.685.477,5807
String 1 Byte por caractere De zero a 65.500 caracteres
Em sistemas de 32 bits,máximo de 2E32
caracteres.
Byte 1 Byte 0 a 255
Boolean 2 Bytes True (verdadeiro) ou False (falso)
Date 4 Bytes Qualquer referência a objeto
Variant 16 bytes + 1 byte para Qualquer valor numérico, caractere, objeto ou
cada caractere valor nulo.
Por exemplo, você não pode entrar com uma expressão caractere numa
variável do tipo numérico, nem tampouco digitar um número numa variável
lógica.
Tipo Currency
Tipo String
Tipo Byte
Tipo Boolean
Uma variável do tipo Boolean pode conter apenas dois tipos de valores:
True (verdadeiro) ou False (falso). São muito utilizadas como sinalizadores, ou
seja, variáveis que indicam se uma determinada condição lógica retornou ou
resultou num desses dois valores. Veja o pequeno exemplo a seguir :
blnrepete = True
While blnrepete
.
.
Wend
Microsoft Visual Basic 4.0 30
Tipo Date
dtDataVencimento = #05/06/95#
dthora = #05:25#
dtDataHoje = Now
dtDataAmanha = dtDataHoje + 1
dtDataOntem = dtDataHoje - 1
Tipo Object
Tipo Variant
O dado Variant é um tipo especial, já que ele permite que qualquer valor
seja armazenado. Se você declara uma variável mas não especifica seu tipo de
dado, o Visual Basic automaticamente atribui a ela o tipo Variant. Assim, o dado
que você armazenar na variável é que definirá o seu tipo naquele momento.
3.6 Constantes
3.7 Matrizes
Exemplo:
Dim idade(30) As integer
Dim nota( 60,4) As double
Definir um novo tipo de dado pode ser muito útil quando precisamos
agrupar vários tipos de dados diferentes mas correlacionados numa única
variável, facilitando assim seu tratamento. Você poderia pensar que as
matrizes resolveriam esse problema, mas nesse caso não são tão
convenientes.
Microsoft Visual Basic 4.0 32
Para criar uma variável com um novo tipo de dado você utiliza o
comando Type, colocado na seção Declarations do módulo. Vejamos um
exemplo prático, onde criaremos uma variável tipada chamada tpcliente,
contendo outras variáveis para armazenamento do código do cliente, do
endereço do cliente, nome da firma, cidade onde reside, salário e departamento
onde trabalha.
Type tpcliente
intCodigoCliente As Integer
strendereco As String * 50
strcidade As String * 25
strempresa As String * 40
strdepto As String * 20
sglsalario As Single
End Type
tpCliente
intCodigoCiiente
strendereco
strcidade
strempresa
strdepto
sglsalario
Após ter sido criado o tipo de dado definido pelo usuário, você deverá
ainda declarar a(s) variável(eis) desse tipo específico, como ocorre com as
demais variáveis:
ContaBanco2 = Contabancol
Você pode também ter campos numa variável tipada que é uma matriz de
dados. Por exemplo:
Type ConsumoMensal
strmes(12) AS String * 15
intconsumo(12) As Integer
End Type
Aqui nós temos um novo tipo de dado que nos permite entrar com os
consumos mensais de energia elétrica, e quem sabe desenvolver um sistema
aplicativo que nos auxiliará a economizar energia.
Type DadosPessoais
strNome AS String * 20
strSobreNome As String * 40
btIdade As Byte btEstadoCivil As Byte
End Type
Type DadosEndereco
strrua As String * 50
strBairro As String * 30
strCidade As String * 30
strEstado AS String * 2
End Type
Type Funcionário
DadosFuncionario As DadosPessoais
DadosResidencia As DadosEndereco
btCodigoEmpresa As Byte
btCodigoCargo As Byte
End Type
Microsoft Visual Basic 4.0 34
Type Empresa
strNomeEmpresa As String * 50
EnderecoComercial As DadosEndereco
End Type
3.9 Operadores
Aritméticos
Operador Descrição
+ Efetua a soma entre dois ou mais números
- Efetua a subtração entre dois ou mais números
* Efetua a multiplicação entre dois ou mais números
/ Efetua a divisão entre dois números e resulta num número de
ponto-flutuante
\ Efetua a divisão entre dois números e resulta num número
inteiro
^ Efetua a exponênciação
Mod Retorna o resto de uma divisão não exata entre dois números
Lógicos
Operador Descrição
And Efetua a operação lógica E. Se ambas as expressões forem
verdadeiras, então o resultado será verdadeiro
Or Efetua a operação lógica OU. Se uma das expressões (ou
ambas) for verdadeira, então o resultado será verdadeiro
Not Efetua a operação lógica NÃO. Inverte o estado lógico de uma
expressão, se ela for verdadeira, torna-a falsa e vice-versa
Xor Efetua a operação OU EXCLUSIVO. Se uma das expressões for
verdadeira, o resultado será verdadeiro, porém se ambas forem
verdadeiras, o resultado será falso
Eqv Efetua a operação de equivalência de expressões. O resultado
será verdadeiro somente se ambas as expressões forem
equivalentes.
Imp Efetua a operação de implicação lógica. Retorna verdadeira se
uma expressão implica em outra
Operadores Relacionais
Operador Descrição
< Menor que
> Maior que
<= Menor que ou igual a
>= Maior que ou igual a
= Igual a
<> Diferente de
String
Prática 7
Vamos fazer uma aplicação que some dois vetores com 8 elementos do
tipo inteiro cada um. Lembre-se que os vetores na linguagem Visual Basic
inicia-se com índice zero (0).
cmdok
cmdok2
Entrada do vetor A Ok
lblentrada
Entrada do Vetor B Ok
Resultado
txtentrada txtentrada2
Calcular
cmdcalcular
Resolução:
End Sub
If i <= 8 Then
vetorA(i) = Val(txtentrada.Text)
i=1+i
txtentrada.Text = ""
txtentrada.SetFocus
If i = 8 Then
txtentrada.Enabled = False
txtentrada.Text = ""
cmdok.Enabled = False
cmdok2.Enabled = True
txtentrada2.SetFocus
i=0
End If
End If
If i <= 8 Then
vetorB(i) = Val(txtentrada2.Text)
i=i+1
txtentrada2.Text = ""
Microsoft Visual Basic 4.0 39
txtentrada2.SetFocus
If i = 8 Then
txtentrada2.Enabled = False
txtentrada2.Text = ""
cmdok2.Enabled = False
End If
End If
End Sub
End Sub
Microsoft Visual Basic 4.0 40
Prática 8
+ soma
- subtração
/ divisão com resto
Mod resto
\ divisão com inteiro
^ exponenciação
* multiplicação
frm (formulário)
caption = calculadora
icon = <escolhe um ícone>
name = frm calculadora
lbl
1. name = lblresultado
captiom = resultado
2. name = lblanuncio
caption = operações : + - / mod ^ \ *
3. name = lbloperação
caption = operação
4. name = lbloperador2
caption = operador2
5. name = lbloperador1
caption = operador1
6. name = lbligual
caption ==
cmdcalcular_click( )
dim op1 as double, op2 as double, opção as string
op1 = val (txtop1.text)
op2 = val (txtop2.text)
opção = txtop.text
select case opção ‘nós ainda não vimos esta estrutura mas ela já nos é
‘ familiar
cmdlimpar_click( )
txtop1.text = “ “
txtop2.text = “ “
txtop.text = “ “
txtop1.setfocus
cmdsair_click( )
end
end sub
Microsoft Visual Basic 4.0 43
Módulo 4
Estruturas de
Controle
O Visual Basic coloca à sua disposição uma série de comandos com esta
finalidade, permitindo-lhe uma grande flexibilidade no desenvolvimento de suas
aplicações.
Como você já deve estar imaginando, a melhor maneira de aprender
como estas estruturas operam é na prática, através de um novo aplicativo que
iremos desenvolver.
Prática 9
Imagem
ESTRUTURAS DE CONTROLE
Text
4
Valor Atual de Início: (label 6)
(Text 5)
Iniciar (command)
Propriedade Valor
Caption Estrutura de Controle
Name frmEstruturas
Microsoft Visual Basic 4.0 45
Propriedade Valor
Alignment 2 - Center
Caption FOR NEXT
Font MS Sans Serif - Negrito - 14*
Name LblTítulo
Propriedade Valor
Alignment 1 - Right Justify
Caption Início:
Name LblÍnicio
Propriedade Valor
Name TxtÍnicio
Text <apagar o valor atual>
Propriedade Valor
Alignment 1 - Right Justify
Caption Limite:
Name LblLimite
Propriedade Valor
Name TxtLimite
Text <apagar o valor atual>
Propriedade Valor
Alignment 1 - Right Justify
Caption Passo:
Name LblPasso
Propriedade Valor
Name TxtPasso
Text <apagar o valor atual>
Propriedade Valor
Alignment 2 - Center
Caption <apagar o valor atual>
Name LblMsg
Propriedade Valor
Alignment 1 - Right justify
Caption <apagar o valor atual>
Name Lblação
Calma, agora falta pouco. Pode parecer cansativo, mas seja sincero:
Quanto tempo você gastou para criar este aplicativo ? Uns poucos minutos não
foi ? Pode ter certeza de que os minutos que você empenhou na criação deste
aplicativo renderão bons conhecimentos sobre as estruturas de controle que
estamos estudando agora.
Propriedade Valor
Name TxtValorAtual
TabStop False
Text <apagar o valor atual>
Propriedade Valor
Name TxtAção
TabStop False
Text <apagar o valor atual>
Propriedade Valor
BorderStyle 1 - FixedSingle
Enabled False
Microsoft Visual Basic 4.0 48
Propriedade Valor
BorderStyle 1 - FixedSingle
Enabled False
Propriedade Valor
Caption &Iniciar
Default True
Name BtnIniciar
A única coisa que falta agora é definirmos o código que será associado
ao botão "Iniciar" de nosso formulário, mas isto dependerá dos próximos
assuntos que iremos aprender em seguida.
Agora que você já está ficando com mais prática na utilização do Visual
Basic e pouco a pouco está desenvolvendo aplicativos cada vez mais
sofisticados, está na hora de começar a documentar as suas rotinas.
Talvez você até ache desnecessário fazer isto devido à simplicidade dos
códigos que estamos criando, mas não custa nada documentar desde o início,
pois é uma boa prática ir se acostumando a documentar as rotinas criadas por
voce.
Lembre-se de que uma rotina que é óbvia hoje pode não ser tão óbvia
quando você voltar a estudá-la daqui há seis meses ou um ano.
Imagine também que talvez outra pessoa irá analisar sua rotina no futuro,
e que poderá ter grandes dificuldades para entender o que você fez.
tornar seu código mais legível não só para você, mas também
para as outras pessoas que irão analisá-lo mais tarde.
Adotar este hábito saudável irá poupar seu tempo
no futuro, quando será necessário relembrar por que
você adotou determinadas soluções técnicas
e , não outras aparentemente mais simples.
A Instrução REM
Note que este caso somente se aplica à utilização de REM em uma linha
que já contém comandos.
If Condição Then
[Bloco de Código]
Microsoft Visual Basic 4.0 51
[Else
[Bloco de Código]]
End lf
Detalhes:
· Condlção-n - É uma outra condição lógica que pode ser avaliada pelo VB.
O índice n indica que você pode inserir quantas condições lógicas quiser,
bastando para isso repetir a instrução Elself.
Descrição
A instrução lf ... Then (Se ... Então) sempre está associada a uma
comparação lógica qualquer, como A > 10, por exemplo .
Se a condição for verdadeira (True), o VB executa o bloco de código
imediatamente abaixo desta linha até encontrar uma outra instrução Elself, Else
Microsoft Visual Basic 4.0 52
lf Inicio > Limite Then ' Se Inicio > Limite executa esta opção
Endif
Execute o seu aplicativo mais uma vez e entre com os valor 12 e 10 para
ver o que ocorre:
A explicação para este fato serve de alerta para quando você for criar
seus próprios aplicativos utilizando as estruturas de controle lfThen.
Observe seu código com cuidado e note que o segundo Elself que
inserimos na estrutura somente será executado quando o valor Início for igual a
12 e o valor Limite for maior que 12, caso contrário a instrução IF será
executada em primeiro lugar, pois sempre que 12 for maior do que o valor
Limite, a primeira condição lógica será satisfeita e o VB não analisará nenhuma
outra condição do lf. O mesmo acontecerá se você utilizar os valores 12 e 12,
pois também neste caso o VB executará o primeiro Elseif da estrutura onde a
condição estabelecida é valor Início = Limite, ignorando todas as demais
condições.
[Case condição-n
[Bloco de Código1]...
[Case Else
[Bloco de Códígon]
End Seíect
Detalhes:
Descrição:
Microsoft Visual Basic 4.0 57
A partir daí o Visual Basic compara o valor desta expressão com a primeira
instrução Case existente na estrutura de controle. Se os valores de ambas
forem iguais, o Visual Basic executará o bloco de código associado à condição
Case avaliada, e ao final desta passará o controle do programa para a primeira
linha de código logo abaixo da instrução End Seiect.
Prática 11
End Select I
Case i To j
Prática 12
End Select
Execute seu aplicativo novamente e entre com alguns valores entre 1 e
10 e veja como o VB interpreta seus dados.
Case ls >= 20
Case ls > 20
TxtAção.TEXT = "Você escolheu um número maior que 20 "
Execute o seu aplicativo e entre com qualquer valor acima de 20 para ver
o que acontece.
End Select
Vamos estudar agora a estrutura For Next, que é uma outra instrução
muito utilizada na programação em Visual Basic.
Detalhes:
Descrição
Prática 13
Vezes = Vezes +1
TxtValorAtual. TEXT = Contador
TxtValorAtual.Refresh 'Atualiza o controle
TxtAção.TEXT = "Executando o bloco de código pela " & Vezes & @
“ a. vez”
TxtAção.Refresh 'Atualiza o controle
Next
TxtAção.Text = "0 bloco de código foí executado " & Vezes & " vezes!"
Microsoft Visual Basic 4.0 64
Para facilitar a sua vida vamos fazer uma pequena alteração em nosso
aplicativo, incluindo mais algumas linhas de código a fim de "desacelerarmos" nosso
computador.
Acrescente as seguintes instruções logo abaixo da linha TxtAção.Refresh, de
modo a deixar sua rotina com a seguinte aparência:
For n = 1 To 100000
REM Este loop não faz nada!
Next
Na verdade, o que fizemos foi nada mais do que acrescentar um outro loop
dentro do já existente, para fazer com que o Visual Basic gaste um determinado tempo
entre uma atualização de tela e outra, e assim podermos ver o conteúdo das variáveis
envolvidas no loop.
Vezes = Vezes + 1
TxtValorAtual.TEXT = Contador
For n = 1 To 100000
Rem Este loop não faz nada!
Next
Next
Até que olhando desta forma não há muitas dúvidas sobre que instrução
Next está relacionada à primeira instrução For, mas e quando suas rotinas
forem ficando cada vez maiores complexas?
Ao analisar seu código, você pode ser levado a concluir erroneamente que um
determinado Next está associado a uma instrução For, quando na verdade
ambas não têm nada a ver uma com a outra, o que fatalmente o levará a
cometer um erro de avaliação de sua rotina.
Outro ponto importante é que se por um erro seu, uma instrução Next for
encontrada antes da instrução For correspondente, o VB apresentará um erro
em tempo de execução, paralisando a execução de seu aplicativo.
Este tipo de erro bastante comum pode ser evitado, bastando para isso declarar
junto à instrução Next o nome da variável de memória que é utilizada como
contador pelo Visual Basic, como no exemplo a seguir:
Vezes = Vezes + 1
TxtValorAtual.TEXT = Contador
For n = 1 To 100000
Rem Este loop não faz nada!
Só para ter uma idéia do que queremos dizer, imagine que seu aplicativo
faça uso do seguinte bloco de código:
For Contador = 1 To 10
Next Contador
TxtAção. TEXT = "0 bloco de código foí executado ". & Vezes & " vezes!"
End Sub
Note que o ponto crítico é a linha que analisa o valor atual da fórmula. Em nosso
exemplo, sabemos que num determinado momento o valor da fórmula será maior que 120,
fazendo com que o loop deixe de ser executado.
Mas e quando os valores são definidos no decorrer do programa com valores
entrados pelo usuário? Dependendo dos dados entrados pelo usuário, pode ser bastante
complicado estimar se uma determinada condição irá ocorrer ou não, comprometendo o
funcionamento de seu aplicativo.
Aliás, se você executar o aplicativo acima, verá que o valor limite para o
encerramento do loop será atingido após 28 execuções, isto é, o contador mesmo foi
reiniciado duas vezes após a execução inicial.
Do
[Bloco de Código]
[Exit Do]
[Bloco de Código]
Loop [{While I Until} Expressão]
Detalhes:
Descrição:
Prática 14
LblMsg.Caption = "Enquanto Inicio for menor ou igual a " & Limite & " o
bloco de código será executado!”
For n = 1 To 100000
Rem Este loop não faz nada!
Next
Loop
TxtAção.TEXT = "0 bloco de código foi executado " & Vezes & "
vezes!"
mesmo bloco até que uma determinada condição seja atingida ou enquanto
determinada situação for verdadeira.
De:
LblMsg.Caption = "Enquanto Inicio for menor ou igual a " & Limite & " o
bloco de código será executado!"
Para:
LblMsg. Caption = "Enquanto Inicio for maior que " & Limite & " o bloco
de código será executado!"
De:
Para:
Do
Inicio = Inicio - 2 'Decrementa a variável inicio
Vezes = Vezes + 1 ‘Incrementa a variável Vezes
TxtValorAtual.TEXT = Inicio
TxtValorAtual.Refresh 'Atualiza o controle
TxtAção. TEXT = "Executando o bloco de código pela " & Vezes &
"a. vez’
TxtAção.Refresh ‘Atualiza o controle
For n = 1 To 100000
Rem Este loop não faz nada!
Next
Note que desta vez o bloco de código foi executado pelo menos uma vez
antes que o Visual Basic avaliasse a expressão lógica definida por nós. Após a
avaliação da expressão (que resultará em False), o Visual Basic não mais
executará o loop, passando para a próxima instrução da rotina.
Prática 15
LblMsg.Caption = “Enquanto Início for menor que “ & Limite &” o bloco de
código será executado!”
TxtAção.TEXT = "Executando o bloco de código pela " & Vezes & "
a .vez"
TxtAção.Refresh 'Atualiza o controle
For n = 1 To 100000
Rem Este loop não faz nada!
Next
Loop
TxtAção. TEXT = "0 bloco de código foi executado " & Vezes & " vezes! "
End Sub
Ponha seu programa para rodar e entre com os valores 1 e 10. Note que o
resultado da expressão Inicio > Limite com estes valores será False, já que 10 é
menor que 20. Mesmo assim o VB executará o bloco de código, sendo que só
deixará de fazê-lo quando a expressão tornar-se verdadeira, ou seja, quando o
valor de início for igual a 21, que por sua vez tornará a expressão avaliada
verdadeira (21 > 20).
Se você entrar com os valores 25 e 20, por exemplo, o Visual Basic não
executará uma vez sequer o bloco de código, pois desde o início a avaliação da
expressão associada ao Do Until resulta em Verdadeiro.
Para garantir que seu bloco de código será executado pelo menos uma vez,
faça as seguintes alterações no Código de seu aplicativo:
Do
Início = Início + 1 'lncrementa a varíável início
Vezes = Vezes + 1 'lncrementa a variável vezes
TxtValorAtual.TEXT = Início
TxtValorAtual.Refresh 'Atualíza o controle
For n = 1 To 100000
Rem Este loop não faz nada!
Next
if Início = 15 Then
Exit Do
End íf
Note que não existe um número limite para o uso de instruções Exlt Do,
ou seja, você pode utilizar esta declaração quantas vezes necessitar, como por
exemplo no código abaixo:
Do
Inicio = Inicio +1 'lncrementa a variável Início
Vezes = Vezes + 1 'lncrementa a variável Vezes
lf Início = 15 Then
Exit Do
Elseif Início = 1 And seleção = False Then
Exlt Do
Elseif Início = 1 And Teste = 20 Then
Exit Do
End lf
While condição
[Bloco de Código]
Wend
Detalhes:
Microsoft Visual Basic 4.0 77
Descrição:
LblMsg.Caption = "Enquanto Início for menor que " & Limite & ", o bloco
de código será executado!"
TxtAção.TEXT = "Executando o bloco de código pela " & Vezes & "
a .vez"
TxtAção.Refresh 'Atualiza o controle
For n = 1 To 100000
Rem Este loop não faz nada!
Next
Wend
TxtAção.TEXT = "0 bloco de código foi executado " & Vezes & "
tezes! "
End Sub
· Funções definidas pelo usuário, que são as rotinas desenvolvidas por você
de acordo com as suas necessidades.
· Funções internas do Visual Basic, que foram criadas pela própria equipe de
desenvolvimento do Software na Microsoft.
Isto evita que o seu aplicativo fique enorme devido à repetição de várias
linhas de código sem necessidade, bem como diminuir a possibilidade de
ocorrerem erros, já que com menos linhas seu código ficará mais fácil de ler e
de depurar. Além disso, se uma função foi criada e testada adequadamente, as
Microsoft Visual Basic 4.0 80
Valor = Date
Neste caso, Valor é uma variável que receberá uma resposta vinda da
função Date.
Argumentos de Funções
Valor = Cos(0,785)
Valores de Retorno
Funções Matemáticas
4.11 Procedimentos
End Sub
Isto ocorre pois quando você atribui uma procedure a uma variável de
memória como em
NovoValor = Calculaldade(“12/03/65")
Microsoft Visual Basic 4.0 86
você está indicando ao Visual Basic que CalculaIdade é uma procedure do tipo
Function, e que o valor de retorno gerado pela mesma será armazenado na
variável de memória NovoValor.
Agora que você já sabe a diferença básica entre estes dois tipos de
procedimento, vamos relembrar um pouco quais as vantagens de utilizarmos
estes componentes em nossos aplicativos:
Uma solução bastante prática seria criar uma função que recebesse os
dois valores a serem calculados como argumentos, e que a mesma retomasse o
valor resultante do cálculo da média dos dois números. Desta forma você não
precisaria perder tempo definindo variáveis ou tipo de dados, simplificando
bastante o seu trabalho. Um exemplo de como esta função seria utilizada em
seus futuros aplicativos poderia ser a seguinte linha de código:
ValorMedio = CalculaMedia(12,5)
Prática 16
Funções
Entrada
Resultado
Executar Limpar
Enabled = False
CmdExecutar_click( )
Dim Valor as date
Valor = Txtentrada.Text
TxtResultado.Text = Month(Valor) ‘esta função
retorna a ‘parte da data que diz respeito ao mês
CmdExecutar.Enabled = False
CmdLimpar.Enabled = True
TxtEntrada.Text = “”
TxtResultado.Text = “ “
CmdLimpar.Enabled = False
CmdExecutar.Enabled = True
Prática 17
Microsoft Visual Basic 4.0 89
Valor = TxtEntrada.Text
Retorno = Datediff (“d”, #1/1/95#, Valor) ‘Valor - 1/1/95
TxtResultado.Text = Retorno
CmdExecutar.Enabled = False
CmdLimpar.Enabled = True
Sub limpar
TxtEntrada.Text = “”
TxtResultado.Text = “ “
CmdLimpar.Enabled = False
CmdExecutar.Enabled = True
End Sub
Sub cdmlimpar_click()
End sub
Prática 18
Microsoft Visual Basic 4.0 90
Cálculo de áreas
Termina
Forneça :
Base Resultado
Altura
Calcular Voltar
Fórmulas :
Prática 19
Microsoft Visual Basic 4.0 92
PROGRESSBAR
Utilizando PROGRESSBAR
Inicio Fim
Controle
Progressbar
Command
CmdInicio_Click( )
Dim I as Integer
For I = 1 to 1000
Progressbar.Value = i / 10
Next I
Cmd_Fim( )
End
Prática 20
Microsoft Visual Basic 4.0 93
Visualização de Figuras
Visualizar
Encerrar
Formulário:
Name FrmLista
Caption visualização de Figuras
Microsoft Visual Basic 4.0 94
Command:
Name CmdEncerrar
Caption Encerrar
Name CmdVisualizar
Caption &Visualizar
Default True
Enabled False
Driver:
Name DrvDrives
Diretório :
Name DirDiretórios
FileListBox :
Name Filarquivos
Pattern *.bmp (ou Icon)
Insira o código:
CmdEncerrar_Click( )
End
CmdVisualizar_Click( )
DirDiretórios_change( )
Filarquivos.path = disdiretorios.path
CmdVisualizar.Enable = false
Drvdrives_change( )
Dirdiretorios.path = Drvdrives.drive
Cmdvisualizar.enable = false
Filarquivos_click( )
Cmdvisualizar.enabled = true
Image
Retorna
Command
Propriedades:
Formulário:
Microsoft Visual Basic 4.0 96
Name FrmVisualização
Image :
Name ImgFigura
Command:
Name Cmdretorna
Caption &Retorna
Default True
FrmVisualização.WindowState = 0
Unload FrmVisualização
Microsoft Visual Basic 4.0 97
Prática 21
Animação
Controle Image
(Situar na
Posição 1800,600)
Controle
Barras
Verticais
Controle
Barras
Horizontais
Propriedades:
Formulário :
Name FrmBarras
BackColor &H00FFFFFF&
Caption Animação(demonstração scrollBar)
Microsoft Visual Basic 4.0 98
ScrollBar Vertical:
Name VscrEixoY
LargeChange 500
Max 2000(tamanho do eixo)
SmallChange 100(grid)
ScrollBar Horizontal:
Name HscrEixoX
LargeChange 500
Max 2000
SmallChange 100
Image:
Name ImgFigura
Picture (Sugestão : Arquivos de
programa1\MicrosoftVisualBasic\Bitmap
s\Assorted\Beany
HscrEixoX_Change( )
ImgFigura.Left = 1300 + HscrEixoX.Value
End Sub
VscrEixoY_Change( )
ImgFigura.Top = 600 + VscrEixoy_value
End Sub
Módulo 5
Criando Menus
Personalizados
O Menu Editor
O primeiro passo para criarmos urn menu é definirmos onde ele será
incluído. Vamos abrir um novo projeto e deixar um formulário como a janela
ativa do VB.
O próximo passo a ser dado é definir o nome que o nosso menu terá, ou
seja, o nome que será exibido na barra de menu de nosso aplicativo. Em nosso
exemplo, queremos que o primeiro menu a ser exibido tenha o nome de Arquivo.
Este nome deverá ser incluído na caixa de texto Caption do Menu Editor.
Lembre-se de que sempre que você inclui o símbolo “&” antes de uma
letra, ela é exibida no menu (ou controle) sublinhada, indicando que você pode
acessá-la através da combinação de teclas ALT mais a letra destacada.
Você também pode definir um nome para este menu. Da mesma forma
como você faz com os controles de seu aplicativo, também é possível
ajustarmos propriedades dos menus durante a execução de seu programa,
habilitando e desabilitando opções, modificando nomes, etc.
Este nome não aparece na tela, serve apenas para ser utilizado pelo seu
código. Da mesma forma como já fizemos com vários controles de seu
aplicativo, procure utilizar-se das letras mnu antes do nome do controle, a fim
de facilitar o seu trabalho de codificação.
Dê o nome de mnuArquivo para este controle e pronto, nosso menu já
está criado, só que sem nenhum comando ainda. Por enquanto você só criou a
palavra Arquivo no alto de sua tela.
Clique sobre o botão "OK" para fechar o Menu Editor e veja que o menu
já foi incorporado ao seu formulário.
Vamos incluir mais um ítem no menu Arquivo, desta vez o comando Sair,
que encerrará a execução de nosso aplicativo.
Abra novamente o Editor de Menus e clique sobre a opção Abrir. A
seguir, clique novamente sobre o botão "Next" para iniciar uma nova opção de
menu e digite o comando &Sair.
Passe para a caixa de texto Name e dê o nome de MnuArquivoSair para
este comando. Note que desta vez não é necessário dar um nível para a direita
ao comando Sair, pois o VB assume que você está indo na seqüência de
criação do menu Arquivo.
Feche a janela com o botão “OK” e dê uma olhada com está ficando o
seu menu. Realmente está ficando muito bom!
Só para você ter uma idéia melhor de como funcionam os níveis, abra
novamente o Editor de Menus e dê mais um nível para a direita no item Sair.
Utilize agora o botão com a seta para a esquerda para retomar a opção
Sair à sua Posição original.
Caption: &Ferramentas
Name: MnuArquivoTools
Você também pode incluir este recurso em seus menus bastando para isso
digitar na caixa de texto Caption um hífen (-).
Neste caso, você pode comunicar ao VB que está criando outro menu,
simplesmente utilizando-se da tecla com a seta para a esquerda, aumentando o
nível do menu. Então é só complementar as informações que você deseja.
Caption: A&juda
Name: MnuAjuda
Microsoft Visual Basic 4.0 104
Inclua logo abaixo deste item (porém num nível inferior) o comando
Sobre com as seguintes especificações:
Caption: S&obre
Name: MnuAjudaSobre
Você já viu que basta utilizarmos o sinal “& antes de uma letra de um
nome ou comando para criar uma tecla de atalho. Só que esta combinação de
teclas que criamos refere-se somente ao acionamento da barra de menus. Você
também pode utilizar o Menu Editor para definir teclas de atalho que executem
tarefas, sem a necessidade de acionamento dos comandos via menu.
Note que não é necessário efetuar nenhum outro ajuste em seu aplicativo
para que as teclas de atalho entrem em operação. Basta definir a procedure que
está associada ao comando do seu menu e sempre que você acionar as teclas
combinadas, o VB chamará automaticamente o procedimento correto. Perceba
Microsoft Visual Basic 4.0 105
que a sua escolha passou a ser exibida no menu Arquivo, orientando o usuário
sobre a nova possibilidade.
End
End Sub
Módulo 6
Quadros de Diálogo e
Uso de Arquivos
Você usa quadros de lista quando tem uma série de escolhas para
apresentar ao usuário e deseja limitar as escolhas. Ao contrário, um quadro
combo é usado mais para escolhas sugeridas; ou seja, os usuários podem
entrar com sua própria escolha no quadro de texto de um quadro combo, se
quiserem.
Digamos, por exemplo, que você tenha uma lista personalizada de
aplicações do Windows, às quais o seu programa consegue iniciar; as escolhas
poderão aparecer em um quadro de lista. Ou então, você pode apresentar as
várias opções de atributo de arquivo (arquivo simples, leitura, escondido etc.)
quando gravar em um arquivo.
Em geral, os quadros de lista podem ser úteis em qualquer lugar onde
existe uma série de escolhas. E como esses quadros de lista podem ter barras
de paginação, o número dessas escolhas pode ser muito maior do que você
pode apresentar em um menu (o que os torna usuais em quadros de diálogo).
Nome do produto
Quantidade do produto
Comentários
Para projetar essa aplicação, inicie o Visual Basic, chame esse projeto de
Database.vbp e dê ao formulário a legenda "Database". Precisaremos de três
quadros de texto nesse formulário principal, que podemos chamar Name,
Number e Comment, aos quais podemos dar os Names NameField,
NumberField e CommentField. De fato, podemos tornar o quadro de comentário
um quadro de texto multilinhas, de modo que possamos armazenar bastante
texto nele. Em seguida, podemos incluir um menu chamado File, com os
seguintes itens:Add Item, Find Item..., Save File.... Load File... e Exit.
Sub AddAnItem_Click( )
End Sub
Quando o usuário acionar Add Item, ele desejará que o conteúdo ativo
dos quadros de texto seja armazenado no banco de dados. Podemos fazer isso
definindo algumas variáveis globais (observe que elas devem ser variáveis
globais, e não em nível de formulário, pois nosso quadro de diálogo um
formulário inteiramente separado - terá que alcançar todas elas) da seguinte
forma em um módulo chamado Database.Bas (Selecione o ícone de inserção de
módulos no toolbar):
Sub AddAnItem_Click( )
TotalRecords = TotalRecords + 1
Names(TotalRecords) = NameField.Text
Numbers(TotalRecords) = NumberField.Text
Comments(TotalRecords) = CommentField.Text
.
.
End Sub
Por exemplo, suponha que estamos para criar o primeiro registro, e estes
são os dados nos quadros de texto da janela principal:
Microsoft Visual Basic 4.0 111
Sub AddAnItem_Click( )
TotalRecords = TotalRecords + 1
Names(TotalRecords) = NameField.Text
Numbers(TotalRecords) = NunmberField.Text
Comments(TotalRecords) = CommentField.Text
Form2.NameList.Addltem NameField.Text
End Sub
formuláno.quadro_de_lista.RemoveItem índice
Aqui, um índice não é opcional. Você deverá usá-lo para especificar qual
item na lista deverá ser removido. E isso é tudo para a inclusão de um item.
Sub FindItem_Click( )
End Sub
Sub FindItem_Click( )
Form2.Show
End Sub
Crie Form2 acionando o item New Form do menu File do Visual Basic,
dando-lhe uma legenda de Find Item.... Remova os botões Min e Max, dando ao
formulário uma borda fixa por meio da seleção da propriedade Minbotton,
Maxbotton e BorderStyle. Em seguida, crie um quadro de lista acionando a
ferramenta de quadro de lista na caixa de ferramentas. Dê a esse quadro de
lista o Name que já usamos, NameList. Defina a propriedade Sorted para True,
de modo que as entradas nele apareçam em ordem alfabética.
Sub CancelButton_Click( )
Form2.Hide
End Sub
OKButton_Click( )
End Sub
Sub OKButton_click( )
Next loop_index
.
.
Sub OKButton_click( )
Form1.NameField.Text = Names(loop_index)
Form1.NumberField.Text = Numbers(loop_index)
Form1l.CommentField.Text = Comments(loop_index)
Form2.Hide
End Sub
Microsoft Visual Basic 4.0 115
Sub NameList_DblClick( )
Form1.NameField.Text = Names(loop_index)
Form1.NumberField.Text = Numbers(loop_index)
Form1.CommentField.Text = Comments(loop_index)
Form2.Hide
End Sub
A única coisa restante a fazer é tornar o item Exit ativo no menu da janela
principal, o que fazemos pelo modo comum, com o comando End do Visual
Basic:
Sub ExitItem ( )
End
End Sub
Você irá utilizar o programa acima digitando dados nos quadros de texto
da janela principal. Quando você quiser ler um registro, poderá selecionar Find
Item... no menu File para gerar nosso quadro de diálogo na tela. Selecione o
item no quadro de lista e acione o botão OK, ou então dê um duplo clique no
item do quadro de lista, e os registros desse item aparecerão na janela
principal.
Sub NameList.DblClicko
GetItem
End Sub
Sub OKButton_Click( )
Getltem
End Sub
Sub Getltem( )
Form1.NameField.Text = Names(loop_index%)
Form1.NumberField.Text = Numbers(loop_index%)
Form1.CommentField.Text = Comments(loop_index%)
Form2.Hide
End Sub
Type nometipo
nomeelemento As tipovariável
[nomeelemento As tipovariável]
[nomeelemento As tipovariável]
.
.
End Type
Type Record
Name As String * 50
Number As String * 20
Comment As String * 200
End Type
Type Record
Name As Stririg * 50
Number As String * 20
Comment As String * 200
End Type
TheData(3).Name = "Cenoura"
TheData(3).Number = "287"
TheData(3).Comment = "Preço muito alto?"
Sub AddAnItem_Click( )
TotalRecords = TotalRecords + 1
Names(TotalRecords) = NameField.Text
Numbers(TotalRecords) = NumberField.Text
Comments(TotalRecords) = CommentField.Text
Form2.NameList.AddItem NameField.Text
End Sub
para isto:
Sub AddAnItem_Click( )
TotalRecords = TotalRecords + 1
TheData(TotalRecords).Name = NameField.Text
TheData(TotalRecords).Number = NumberField.Text
TheData(TotalRecords).Comment = CommentField.Text
Form2.NameList.AddItem NameField.Text
End Sub
Sub GetItem( )
Form1.NameField.Text = Names(loop_index)
Form1.NumberField.Text = Numbers(loop_index)
Form1.CommentField.Text = Comments(loop_index)
Form2.Hide
End Sub
para isto:
Sub GetItem( )
Form1.NameField.Text = TheData(loop_index).Name
Form1.NumberField.Text = TheData(loop_jndex).Number
Form1.CommentField.Text = TheData(loop_jndex).Comment
Form2.Hide
End Sub
Como você pode ver, isso permite que o quadro de diálogo Find Item... seja
muito mais compacto. Usar um quadro de lista suspensa é fácil.
Para ver como isso funciona, vamos alterar nosso programa de bancos
de dados para mostrar seus nomes de produto em um quadro combo em vez de
um quadro de lista.
Isso é algo que teremos que verificar quando o usuário acionar o botão
OK.
Sub GetItem( )
Matched = False
For loop_index = 1 To 100
lf (Rtrim$(TheData(loop_index).Name) =
Rtrim$(Form2.NameList.Text)) Then
Matched = True
Exit For
End If
Next loop_index
Microsoft Visual Basic 4.0 122
lf (Matched) Then
Form1.NameField.Text = TheData(loop_index).Name
Form1.NumberField.Text =
TheData(loop_index).Number
Form1.CommentField.Text =
TheData(loop_index).Comment
Form2.Hide
Else
MegBox “Sorry, I cannot find the record.”, 48,
“Database”
End If
End Sub
Nesta seção você verá como trabalhar com arquivos no Visual Basic. O
modo mais comum de manter seus dados após o término de um programa é
armazená-los em arquivos. Esta seção discute essa importante habilidade,
além dos seguintes tópicos:
· Arquivos seqüenciais
· O comando Seek
Você deve se lembrar de que nosso programa Editor tinha duas escolhas
de menu que nunca foram usadas: Load File... e Save File.... Até agora, todos
os dados que nossos programas usaram foram temporários.
Dois desses quadros de diálogo serão para os itens Save File... e Load
File... da nossa aplicação Editor. Além disso, também veremos como trabalhar
com arquivos estruturados, onde os dados são divididos em registros
específicos, como a nossa aplicação de bancos de dados na seção anterior. De
fato, poderemos modificar essa aplicação nesta seção de modo que ele possa
salvar seus dados no disco. Com isso e outros tópicos que irão aparecer, por
que não começar imediatamente?
Microsoft Visual Basic 4.0 124
Para colocar isso em prática, inicie o Visual Basic e abra o projeto Editor.
Se você der uma olhada no menu File, verá que o item Save File... já existe.
Acione-o com o mouse para gerar o seguinte gabarito:
Sub SaveItem_Click( )
End Sub
Sub SaveItem_Click ( )
SaveForm.Show
End Sub
Sub CancelButton-Click ( )
SaveForm.Hide
End Sub
O serviço real é feito quando você aciona o botão OK. Acione esse botão
para abrir a procedure click do botão OK, da seguinte maneira:
Sub OKButton_Click ( )
End Sub
Existem três passos nesse processo: abrir o arquivo (ou criá-lo, se ainda
não existir), gravar os dados no arquivo e fechá-lo. Podemos dar uma olhada
em cada um desses três passos em ordem enquanto montamos OKButton-
Click(); cada passo nos dirá algo sobre o sistema de arquivo do Visual Basic.
O terceiro tipo de arquivo são os arquivos binários; aqui o Visual Basic não
interpreta o conteúdo do arquivo de forma alguma. Por exemplo, os arquivos
executáveis (.Exe) são arquivos binários, e nós os tratamos numa base byte a
byte no Visual Basic. Para copiar um arquivo desses, precisamos ler cada byte
do arquivo original (o arquivo de origem) e depois enviá-los para um novo
arquivo (o arquivo de destino). Embora possamos definir a quantidade de
dados que queremos ler sob arquivos seqüenciais ou aleatórios, os arquivos
binários são sempre tratados byte a byte.
Microsoft Visual Basic 4.0 127
Esses três modos são coerentes com a idéia de abrir o arquivo e depois
trabalhar com os dados do início ao fim. Por exemplo, se abrimos um arquivo
para saída seqüencial, gravamos nele um string, e depois o seguimos por um
segundo string, este vai diretamente após o primeiro, e assim por diante para
strings subseqüentes, um após o outro. Se quiséssemos lê-los novamente
teríamos que fechar o arquivo e abri-lo para entrada, e depois poderíamos ler
os dados de volta, do início ao fim.
Open fff$ [For mmm][Access aaa] [111] As [#] nnn% [Len = rrr%]
Sub OKButton_Click( )
End Sub
Assim como no Basic normal, poderemos nos referir a esse arquivo como
arquivo # 1 quando quisermos gravar nele ou fechá-lo. No entanto, temos que
notar que existe a possibilidade de erro quando abrirmos um arquivo dessa
maneira: o usuário pode ter especificado um caminho inválido, por exemplo, ou
errado na digitação do nome do arquivo. Para cuidar desses erros, podemos
incluir um comando On Error GoTo, da seguinte forma:
Sub OKButton_Click( )
Sub OKButton-Click( )
FileError:
MsgBox “File Error", 48. "Editor" 'MsgBox para erro de
arquivo
End Sub
Sub OKButton_Click()
FileError
End Sub
Sub OKButton_Click( )
File Error
Microsoft Visual Basic 4.0 132
End Sub
Sub OKButton-click( )
Exit Sub
Microsoft Visual Basic 4.0 133
FileError:
arquivo
End Sub
Para ver isso em ação, faça as mudanças acima e tente digitar algumas
linhas de texto no Editor e depois salvá-las. Quando o fizer, verá que o texto é
gravado no disco, no arquivo escolhido.
Sub LoadItem
LoadForm.Show
End Sub
Para projetar LoadForm, use o item New Form do menu File do Visual
Basic. Para criar o formulário, dê a ele um Name de LoadForm; use, Load
File... como legenda; remova os botões Min e Max; mude a propriedade de
BorderStyle para dupla fixa; e inclua os botões OK e Cancel.
Em seguida, inclua um quadro de lista de unidade com um clique duplo
na ferramenta de lista de unidade na caixa de ferramentas, que está próxima à
ferramenta do temporizador. Observe que o quadro de lista de unidade é um
quadro de lista suspensa, o que nos economizará algum espaço. Também
precisamos de um quadro de lista de diretório e um quadro de lista de arquivo,
e, portanto, acione com um clique duplo também essas ferramentas (que se
encontram no final da caixa de ferramentas), e arrume-as como você desejar no
quadro de diálogo.
Microsoft Visual Basic 4.0 135
Esse arquivo pode ser aberto de duas maneiras: dando um duplo clique no
nome do arquivo no quadro de lista de arquivo ou selecionando-o
(destacando-o) no quadro de lista de arquivo e acionando o botão OK.
Sub CancelButton_Click( )
LoadForm.Hide
End Sub
Sub Drive1_Change( )
Dir1.Path = Drive1.Drive
End Sub
Sub Dir1_Change( )
File1.Path = Dir1.Path
End Sub
Desse modo, toda vez que houver uma mudança no diretório de trabalho
- ou unidade de trabalho -, o quadro de lista de arquivo saberá disso.
Também poderíamos notar que, embora você possa selecionar uma nova
unidade com um único clique do mouse, são necessários dois cliques para
selecionar um novo diretório no quadro de lista de diretório. Essa diferença tem
a ver com a diferença entre os arquivos de lista suspensa e simples.
Microsoft Visual Basic 4.0 138
Do Until EOF(1)
Loop
Do Until EOF(1)
Loop
Uma opção melhor para nós do que lnput # ou Line lnput # é a função
lnput$, que é feita especialmente para ler strings, e que não suprime carriage
returns dos avanços de linha. Para usar essa função, no entanto, temos que
Microsoft Visual Basic 4.0 140
indicar o número exato de bytes que queremos ler; quando o fizermos, lnput$
retomará um string (que podemos atribuir a Form1.display.Text). O número de
bytes que queremos ler é simplesmente o tamanho do arquivo em bytes;
podemos usar outra função de arquivo, LOF(), para obter isso para nós. Assim
como EOF(), LOF() apanha um número de arquivo como argumento. LOF(), no
entanto, retorna o tamanho do arquivo indicado em bytes (o arquivo deve estar
aberto para LOF() funcionar), de modo que podemos ler tudo da seguinte forma,
com a função Input$o:
Form1.display.Text = Input$(LOF(1), # 1)
Limitações de lnput$()
Sub OKButton_Click ()
Form1.display.text = lnput$(LOF(1), # 1)
Microsoft Visual Basic 4.0 141
close #1
loadform.hide
Exit Sub
FileError:
End Sub
Agora o quadro de diálogo Load File... está completo. Para usá-lo, basta
iniciar o programa e selecionar o item Load File... no menu File.
O quadro de diálogo Load File... é mostrado na tela. Como você pode
ver, o quadro de lista de arquivo apresenta os nomes de arquivo em ordem
alfabética. Para abrir um deles, basta dar um duplo clique no seu nome ou
selecioná-lo e acionar o botão OK. Quando o fizer, a procedure
OKButton_Click() será executada, o arquivo será aberto e lido para o Editor.
Nesse ponto, você poderá editá-lo e depois gravá-lo no disco novamente com a
opção Save File....
Type Record
Name As String* 50
Number As String * 20
Comments As String * 200
Microsoft Visual Basic 4.0 142
End Type
Quando o usuário acionar esse item, ele poderá salvar o banco de dados
em um arquivo particular, de modo que precisamos gerar um quadro de
diálogo semelhante àquele que projetamos anteriormente para o nosso Editor.
De fato, podemos usar aqui o mesmo quadro de diálogo. Para carregar esse
formulário, basta abrir o menu File do Visual Basic, selecionar o item Add
File... e dar o nome do formulário Save File... (usamos Saveform.Frm no
exemplo anterior). Esse arquivo é automaticamente carregado - dessa forma,
você poderá trocar formulários como quadros de diálogo entre projetos,
economizando muito tempo durante o projeto, e fazendo com que suas
aplicações se tornem mais uniformes. Agora podemos gerar esse quadro de
diálogo na tela da seguinte forma em Saveltem_Click():
Sub Saveltem_Click()
SaveForm.Show
End Sub
Sub OKButton_Click ()
Microsoft Visual Basic 4.0 143
File error:
MsgBox “File Error”, 48, “Database”
End Sub
Sub OKButton_Click( )
FileError:
MsgBox "File Error", 48. "Database" 'MsgBox para erro no
arquivo
End Sub
Sub OKButton_Click ( )
FileError:
End Sub
Put # 1, 5, TheData(23)
Loadform.show
End Sub
Sub Okbotton_Click( )
End if
'Abre o arquivo
Exit Sub
FileError:
MsgBox ”File Error",48,”Editor" 'MsgBox para erro
End Sub
Mais uma vez, abrimos o arquivo como antes, para acesso aleatório:
Sub OKButton_Click( )
Exit Sub
FileError:
End Sub
Agora temos que obter os registros do arquivo usando Get #, que você
usa para ler a partir de arquivos aleatórios e binários, e cuja sintaxe é a
seguinte:
Sub OKButton_Click ( )
Exit sub
FileError:
MsgBox "File Error", 48, "Database" 'MsgBox para
erro de arquivo
End Sub
(Observe que, mais uma vez, mudamos o nome do título do quadro na seção
FileError do código de "Editor" para "Database").
Sub OKButton_Click ( )
End If
Get # 1, , TheData(loop_index)
Next loop_index
Form2.Namelist.Removeitem 0
Next loop_index
Form2.NameList.AddItem TheData(loop_index).Narne
Next loop_index
Form1.NameField.Text = TheData(1).Name
Form1.NumberField.Text = TheData(1).Number
Forml.CommentField.Text = TheData(1).Comment
Exit sub
FileError:
End Sub
Microsoft Visual Basic 4.0 150
Esse comando pode ser extremamente útil, pois nos permite especificar
qual o registro que será lido ou gravado em seguida. Sua sintaxe é a seguinte:
Seek # 1, loop_index
Get # 1, TheData(loop_index)
Microsoft Visual Basic 4.0 151
Prática
Nome
Endereço
Fitas alugadas
Observações