Escolar Documentos
Profissional Documentos
Cultura Documentos
NOES DE PROGRAMAO
VARIVEIS
Tabela 14
Tabela 15
Por exemplo, uma varivel Public do tipo inteiro pode ser declarada da seguinte maneira:
Public Nome_da_Varivel As Integer
ARRAYS
Unidimensionais: Dim Soma (1 To 2). Este array ser constitudo por vinte nmeros:
Soma(1), Soma (2) ... Soma (20).
A palavra reservada ReDim apaga todos os valores anteriores do array. Para evitar isto,
podemos usar a palavra Preserve: ReDim Preserve DynArray 1 To 10). Somente o limite superior
da ltima dimenso de um array dinmico pode ser alterado quando se usa Preserve.
No necessrio que o limite inferior de uma dimenso seja 1. Podemos declarar um array
da seguinte forma: Dim Matriz (-10 To 35, -5 To 20). Para no perdermos de vista quais so os
limites das dimenses de arrays, podemos usar duas funes:
UBound: retorna o maior ndice disponvel para a dimenso indicada. Sintaxe: UBound (array,
dimenso);
LBound: retorna o menor ndice disponvel para a dimenso indicada. Sintaxe: UBound (array,
dimenso).
Exemplo: Seja a matriz M(-3 To 4, -2 To 5). UBound (M, 1) retorna 4. LBound (M, 2) retorna
-2.
Em Visual Basic, arquivos que excedem 64 kBytes so denominados Huge Arrays (Arrays
Enormes). O limite mximo para estes arrays de 64 Mbytes (ou a memria do computador). No
existe nenhuma declarao especial para Huge Arrays. O Visual Basic cuida de tudo sozinho.
TIPOS DE DADOS DEFINIDOS PELO USURIO
Tipos de dados definidos pelo usurio so mais flexveis do que qualquer outro tipo. At
mesmo mais flexveis do que arrays dinmicos, pois podem incluir estes ltimos. Para usar estes
tipos de dados, declaramos, antes, o tipo, em um mdulo do projeto:
Type Agenda
Nome As String*50
Endereo As String*80
Telefone As String*11
End Type
A seguir, declaramos uma varivel esttica, local ou Public como pertencente ao tipo de
dados definido anteriormente.
Tabela 16
frmEndereos
txtUNome txtPNome
txtEndereo
txtUF
txtCidade
txtCEP
cmdAes()
cmdMover()
Option Explicit
Type Endereo
PNome As String * 20
LName As String * 20
Endereo As String * 40
Cidade As String * 15
UF As String * 2
CEP As String * 5
End Type
Public CR As Endereo
Public NovoRegistro As Boolean
Public RegistroAtual As Integer
Public NmeroDeRegistros As Integer
Public RegistroAntigo As Integer
Public NomeArqCompleto As String
Public NumArquivo As Integer
Public Const NOMEARQ = "ENDEREO.DAT"
Note que Endereo o tipo de varivel definida pelo usurio, tendo os seguintes
campos: PNome, UNome, Endereo, Cidade, UF e CEP. CR a varivel pertencente ao tipo de
dados Endereo. As outras variveis so auxiliares.
End Sub
As procedures AdNovoEndereo e MostraRegistro podem ser escritas no prprio
formulrio, seo General, ou no mdulo Endereo.bas:
RegistroAntigo = RegistroAtual
RegistroAtual = NmeroDeRegistros
cmdAction(0).Caption = "&Salvar"
cmdAction(1).Caption = "&Cancelar"
txtUNome.SetFocus
End Sub
A procedure para os comandos cmdAes faz uso, como sempre, da instruo Select ...
Case.
If NovoRegistro Then
Select Case Index
Case 0 ' Salvar.
Call SalvaRegistroAtual
NovoRegistro = False
cmdAes(0).Caption = "&Novo"
cmdAes(1).Caption = "&Deletar"
Case 1 ' Cancelar
RegistroAtual = RegistroAntigo
NovoRegistro = False
cmdAes(0).Caption = "&Novo"
cmdAes(1).Caption = "&Deletar"
Call MostraRegistro(RegistroAtual)
Case 2 ' Lista
frmList.Show
Case 3 ' Sair
Call ByeBye
End Select
Else
Select Case Index
Case 0 ' Novo
NovoRegistro = True
Call AdNovoEndereo
Case 1 ' Deletar
Resposta = MsgBox("Deletar este endereo ?", vbYesNo + vbQuestion)
If Resposta = vbYes Then
txtPNome.Text = ""
txtUNome.Text = ""
txtEndereo.Text = ""
txtCidade.Text = ""
txtUF.Text = ""
txtCEP.Text = ""
Call SalvaRegistroAtual
End If
Case 2 ' Lista
frmList.Show
Case 3 ' Sair
Call ByeBye
End Select
End If
End Sub
Para finalizar a minha parte, falta a procedure associada aos botes cmdMover(), que
simplesmente gerencia o estado da varivel RegistroAtual e a exibio dos registros:
Fica como exerccio implementar o formulrio frmLista, que deve conter uma lista (ListBox)
a ser preenchida com o contedo de ENDEREO.DAT durante o evento load de frmLista. Em vez
de uma ListBox voc pode usar tambm uma Grid.
DO ... LOOP
Do [{While | Until} condio]
[instrues]
[Exit Do]
[instrues]
Loop
WITH
With objeto
[instrues]
End With