Академический Документы
Профессиональный Документы
Культура Документы
a
Porta
Paralela
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 1
Apostila de PM – Programação para
Manufatura
Conteúdo
* Comunicação através da porta paralela
COMUNICAÇÃO VIA PORTA PARALELA DO PC
INTRODUÇÃO
Nosso objetivo principal é a comunicação de um PC com um dispositivo de hardware que permita o
controle de sistemas externos por um software específico feito pelo aluno, nas nossas aulas trabalharemos com
a porta paralela do PC, conhecida como a porta da impressora (LPT), na qual pode ser utilizada como saída ou
entrada. Inicialmente vamos concentrar nossos estudos para a saída de dados.
A porta paralela conhecida também como porta Centronics é utilizada no interfaceamento entre o
computador e um hardware específico (periférico). Atualmente vários dispositivos utilizam-se dela, tais como:
• Zip Drivers;
• Scanners;
• Câmeras e outros;
A Porta paralela é baseada na tecnologia TTL, isto é, trabalha com 0V ou 5V que significam respectivamente,
nível baixo e nível alto, ou ainda desligado e ligado.
Para começarmos o trabalho, primeiramente deve-se saber onde está à porta, o computador as nomeia de
LPT1, LPT2, LPT3 etc., mas a porta física default (padrão) é a LPT1 e seus endereços são 378H, 379H e
37AH. O “H” faz referência ao sistema hexadecimal de numeração.
Endereço Descrição
Legenda:
NC: Não conectado; CONECTOR DB25
D0..D7: Dado 1.. Dado 7;
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 2
Macho Fêmea
O conector DB25 localiza-se na parte de trás do seu gabinete e é através dele, que o cabo paralelo se
conecta ao computador para poder enviar e receber dados.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 3
Não há necessidade do uso de todos os pinos, pode-se utilizar apenas pinos 2 a 9 (Vcc = 5V) e os pinos
18 a 25 (GND).
Um detalhe muito importante, é tomar muito cuidado com a corrente (I) na porta paralela, é
aconselhável a utilização de Buffers que serão responsáveis tanto pela isolação quanto a amplificação do sinal.
Mesmo sabendo-se que a porta paralela do computador trabalha sob a tecnologia TTL, não se pode
simplesmente ligar CI’s TTL na sua saída, pois seu computador pode utilizar tanto a tecnologia TTL LS (Low
Power Schottky) ou TTL HC (High Speed CMOS), que não possuem corrente suficiente para excitar os CI’s
TTL, no caso do meu computador à porta paralela apresentou uma corrente de saída em torno de 14mA uma
corrente de valor baixo, porém este fato não deve ser encarado como um problema, já que podemos contar
com alguns artifícios eletrônicos, tais como:
• Acopladores ópticos;
• Relés;
• Buffers (a literatura especializada recomenda o CI 74LS514);
SEQÜÊNCIAL DE LED’S
Um circuito muito simples para testar a porta paralela do PC é um circuito chamado
de seqüencial de led’s que é apresentado a seguir.
Lista de Componentes:
• 8 led’s de 5mm; 3 vermelhos; 3 verdes; e 2 amarelos
• 8 resistores de 220Ω (vermelho, vermelho, marrom);
• 1 placa de circuito impresso (10x5cm) de 1 face;
• 1 conector DB25 macho, fios;
• 1 Conector tipo borneira de 9 vias.
O circuito funciona da seguinte maneira: - Em cada uma das 8 saídas (Pinos 2 a 9) é ligado um led em série
com um resistor de 220Ω, sendo que cada led é ligado no pino que possui o sinal de terra (GND pinos 18 a 25)
do DB25. Deve-se tomar muito cuidado com a polaridade dos led’s, pois os mesmo são da mesma categoria dos
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 4
diodos, isto é, possuem polaridade específica e a corrente (I) flui em apenas um sentido. No início é mandado
um sinal para a porta, com se fora um número binário e esse número corresponde a um byte (8 bits), sendo
assim cada led representa um bit, e agirá como tal. Por exemplo, se mandarmos o número 41 em decimal que
em binário corresponde a 00101001, teríamos acesos os led’s 1,4 e 6, porque são os que correspondem aos uns,
ou seja, estão em nível lógico alto, ou ainda estão injetando corrente no circuito. A seguir é apresenta um
possível diagrama para confecção da placa de circuito impresso.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 5
Para criar novos objetos, o programador deverá utilizar a opção User Control como sendo o tipo de projeto a ser
realizado. Os novos objetos só poderão ser criados a partir de um outro objeto já existente, portanto
basicamente esse novo objeto terá as mesmas características do objeto que serviu de base. Para criar objetos
capazes de realizar funções diferentes dos objetos existentes, você deverá criá-los em linguagem C. Dentro do
Visual Basic, os objetos são, por exemplo, menus, janelas, botões, quadros de texto, etc... Melhor especificados
no capítulo sobre objetos. Cada um dos objetos possui várias propriedades, métodos e eventos associados a
eles.
Ambiente de Desenvolvimento
O ambiente de programação do Visual Basic é composto pelas seguintes janelas: Janela Principal, Caixa de
Ferramentas, Janela de Propriedades, Janela de Projeto, Janela de Código e Formulário. É através dessas
janelas que podemos escolher os objetos que farão parte do nosso programa, configurar suas propriedades
conforme a especificação do programa, escolher os eventos que serão utilizados, etc.
Janela Principal
Essa janela é a responsável pelo controle geral do ambiente de programação do Visual Basic e contém uma
barra de ferramentas e de menus. O menu Help, fornece informações sobre todos os objetos e características do
Visual Basic. Está também disponível, através da tecla "F1" um Help On-Line, no qual podemos obter
informações detalhadas de um objeto previamente selecionado. Através desses recursos, também podemos
obter informações sobre a linguagem QuickBasic utilizada no Visual Basic. Com a barra de ferramentas,
temos um acesso mais rápido das funções do menu mais utilizadas.
Barra de Título
A barra de título é a barra horizontal localizada no topo da tela; ela informa o nome do aplicativo e é comum a
todos os aplicativos Windows da Microsoft. Interações entre o usuário e a barra de título são manipuladas pelo
Windows e não pelo aplicativo. Tudo o que está abaixo da barra de título e da barra de menu, em um aplicativo
Windows, é chamado de área do cliente. Seu aplicativo é totalmente responsável pela aparência, conteúdo e
resposta dos objetos que você alojou nessa área.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 6
Barra de Objetos
Essa barra está localizada à esquerda da tela do Visual Basic, logo abaixo da barra de ferramentas e
possui os objetos gráficos (botões, caixas de texto, caixa de figura, etc...) disponíveis para serem
utilizados dentro do projeto. O Visual Basic chama esses objetos de controles. O ambiente que você
está utilizando pode apresentar mais figuras do que o mostrado abaixo. Isso deve-se ao fato de o
Visual Basic ser um ambiente de programação aberto e extensível, ou seja, além dos controles
disponíveis no Visual Basic, podemos adquirir outros controles fornecidos por outras empresas ou
construir o nosso próprio controle.
Janela de Propriedades
As propriedades definem as características de cada objeto - controle da
aplicação. O conjunto de propriedades depende do controle selecionado. Por
exemplo, um formulário tem propriedades diferentes de uma figura. As
propriedades podem ser alteradas em tempo de projeto ou de execução, sendo
que algumas delas somente em tempo de execução. Para alterar o valor de uma
propriedade em tempo de execução só por meio de programação a ser carregada
através de um objeto, por exemplo, um botão ou assim que o programa for
carregado, já em tempo de projeto, devemos:
Janela de Projetos
Essa janela possui uma lista dos arquivos que estão sendo utilizados dentro do
programa que estamos desenvolvendo. Podemos ter arquivos com extensões
"BAS", "FRM”, "VBP" e outros dentro dessa janela. O Visual Basic organiza os
trabalhos por projeto, permitindo que cada projeto possa ter vários módulos.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 7
Janela de Código
Essa janela contém a declaração de variáveis,
constantes e rotinas. Na figura ao lado, podemos ver
dois quadros combo, um contendo a lista de objetos
dentro do nosso programa e o outro uma lista de
eventos disponíveis para cada um dos objetos.
Podemos observar na figura que o evento
selecionado é o "Click" e o objeto é o formulário. O
comando Beep na linguagem do Visual Basic gera
um aviso originário do alto-falante do PC. Portanto
cada vez que o usuário der um clique com o mouse
no formulário o procedimento "Form_Click( )" será executado e gerará um "beep".
Funções e Sub-Rotinas
As funções (functions) e sub-rotinas (subs) são chamadas de procedimentos (procedures). Existem três tipos de
procedimentos:
1.) do Visual Basic;
2.) associados aos eventos;
3.) criados pelo programador.
Os procedimentos do Visual Basic são, por exemplo, os métodos, as funções matemáticas, as funções
manipuladoras de "Strings", etc. Os procedimentos associados aos eventos são aqueles procedimentos que são
chamados em resposta a um evento. Adicionamos códigos a eles através da Janela de Código do formulário.
Os procedimentos criados pelo programador são aquelas sub-rotinas e funções utilizadas para melhorar a
estruturação do código. Podemos ter, por exemplo, uma função que abre um arquivo. Essa função trataria os
possíveis erros e retornaria o número do arquivo aberto. Esse procedimento estaria declarado dentro do objeto
"General" da Janela de Código de um formulário ou de um módulo. Dentro do Visual Basic, a diferença entre
uma função e uma sub-rotina é que a função retorna um valor e a sub-rotina não.
Formulário
Essa é a janela do nosso aplicativo. Quando o usuário iniciar o programa, a mesma aparecerá. A janela possui
os quadros minimizar, maximizar, fechar e menu de controle. É nessa janela que colocaremos os controles
gráficos (botões, quadros de texto, etc.) e também o código associado a esses objetos. Para abrir uma janela de
código, basta dar um duplo clique em cima do objeto do qual um evento deve ser tratado.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 8
Agora vamos colocar em pratica!
Observe que o underline (_) indica apenas que o comando continua na linha de
baixo. A mesma instrução pode ser escrita em uma única linha, conforme
mostrado abaixo:
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 9
Esta segunda instrução faz a declaração da função Out, que se encontra
na biblioteca “inpout32.dll” sob o nome “Out32”.
Aqui também o underline (_) indica que o comando continua na linha de baixo. A
mesma instrução pode ser escrita em uma única linha, conforme abaixo:
Public Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 10
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 11
Vamos elaborar um projeto VB para praticar:
Para colocar em prática as funções estudadas (Inp e Out), inicie um projeto em VB e, primeiramente,
adicione um módulo através do menu Project/Add Module. Insira, dentro do módulo, as declarações das
funções Inp e Out, conforme figura abaixo:
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 12
Agora que terminamos a construção da interface gráfica, vamos para parte da
programação. Como é nosso primeiro projeto, vamos fazer juntos desde o início, para que o
formulário fique centralizado na tela do Windows, basta dar dois cliques no formulário e
colocar a seguinte linha de comando no evento Load, que quer dizer, ao carregar:
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 13
Private Sub Command2_Click()
Out &H378, "&h" & 2
Label1.Caption = "O led nº2 está aceso"
End Sub
Observação: As informações que seguem, serão usadas apenas para possíveis consultas, pois para
satisfazer as necessidades das nossas aulas, o conteúdo descrito até aqui basta, as informações complementares
serão passadas durante as aulas.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 14
Menus
Menu File
Você precisará do menu principal File para trabalhar com os arquivos que compõem seu projeto. Esse menu
inclui comandos para salvar, abrir e imprimir arquivos. O menu File também permite que você saia do Visual
Basic através de um item para isso, a outra maneira é utilizando as teclas de combinação do Windows ALT +
F4 quando estiver posicionado na barra de menu principal. Como em qualquer aplicativo Windows, você
também poderá abrir a caixa de controle na barra de menu e escolher Exit ou dar um duplo clique nessa caixa.
A maioria dos itens do menu principal File é útil apenas quando você inicia o desenvolvimento de seu próprio
aplicativo. Abaixo segue um breve resumo sobre os itens para orientá-lo melhor:
Menu Edit
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 15
Menu Project
O menu Project contém itens que possibilitam a inserção de vários procedimentos, janelas, códigos, módulos,
etc. em seus projetos. Abaixo segue um breve resumo sobre os itens para orientá-lo melhor:
Menu Format
Menu Debug
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 16
Menu Run
Menu Tools
Menu Add-Ins
O menu Add-Ins lhe permite acessar ferramentas separadas que podem ser incorporadas ao Visual Basic.
Existem dois Add-Ins fornecidos com várias versões do Visual Basic. O Report Manager, que é representado
pelo software da empresa Seagate Crystal Reports, atualmente na versão 7.0, é uma ferramenta completa para
modificar e criar relatórios que você poderá utilizar em seu programa. A outra ferramenta inclusa é o Visual
Data Manager, que é usado para gerenciamento de Banco de Dados. Utilize o Add-In Manager para adicionar e
Remover Add-Ins do menu.
Abaixo segue um breve resumo sobre os itens para orientá-lo melhor:
Menu Window
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 17
Menu Help
Barra de Ferramentas
Janelas
Janela de Projetos
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 18
Esta janela contém informações sobre o projeto em uso. É nela que serão exibidos todos os projetos utilizados
ao mesmo tempo, caso existam, ou o único projeto aberto. Abaixo do projeto, estarão definidos os nomes dos
formulários em uso no projeto.
Você notará que existem dois nomes independentemente do que estiver sendo exibido nesta janela. O primeiro
nome é o nome lógico (nome dado ao objeto) e o segundo nome é o nome físico (nome dado ao arquivo), este
estará sendo exibido sempre entre parênteses.
Ainda nesta janela através dos ícones, temos a possibilidade de ir até a janela de código, (janela em que se
programa as atividades para os objetos), voltar para o modo de exibição do formulário e também exibir os
formulários em formato de pastas de um projeto.
Janela de Propriedades
É nesta janela que o programador altera as características originais dos objetos utilizados no(s) formulário(s)
do programa. Quando se cria um objeto dentro do formulário, devemos selecioná-lo clicando apenas uma vez
nele mesmo no formulário e depois clicar na janela de propriedades, onde serão isoladas apenas as propriedades
do objeto selecionado. Então o programador irá alterar algumas das propriedades adequando assim o objeto a
ficar com as características e aparência desejada.
Esta mesma janela, possui uma caixa combo situada ao topo. Esta caixa contém o nome de todos os objetos
utilizados no formulário em desenvolvimento. Esta é a outra forma do programador localizar e selecionar o
objeto para trabalhar com suas propriedades sem ter que selecioná-lo no formulário.
Obs: As propriedades dos objetos também podem ser alteradas através de programação na janela de código,
para que os objetos sofram as alterações no decorrer do programa, devido aos eventos em que foram
programados.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 19
É através desta janela que o programador posiciona o local em que o formulário aparecerá assim que o
programa for executado. Outra maneira de fazer isto, é acessando a propriedade do formulário Startup
Position e escolher a opção Center Screen, mas não será possível acessar esta propriedade, caso esteja sendo
usado um formulário do tipo MDI. Então o posicionamento deverá ser feito através de programação ou por esta
janela.
Comandos Objetivo
Comentários
Comentários são utilizados, como lembretes de informação junto à programação e são muito importantes
porque poderão auxiliar na documentação do software.
MsgBox
Descrição
Exibe uma mensagem em uma caixa de diálogo, esperando pelo usuário clicar um botão, e retorna um valor
indicando que o usuário clicou o botão.
Sintaxe
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 20
Partes Descrição
Prompt Expressão texto exibida como a mensagem em uma caixa de diálogo. A quantidade
máxima de caracteres que poderão ser utilizados em uma mensagem é de
aproximadamente 1024 caracteres, dependendo da largura ocupada pelos caracteres
usados. Se a mensagem consiste em mais do que uma linha, você pode separar as linhas
usando um caracter de retorno (Chr(13)), alimentando linha com um ENTER, caracter
(Chr(10)), alimentando linha com a quebra da mesma, ou ainda usar uma combinação
(Chr(13) & Chr(10)) entre cada linha.
Buttons Expressão numérica que representa a soma dos valores, especificando o número e o tipo
de botões para exibir, o estilo da ícone para usar, a identidade do botão padrão, e a
modalidade da caixa de mensagem. Veja as opções na seção para valores. Se omitidos, o
valor padrão para botões é 0.
Title Expressão de texto exibida na barra de título da caixa de diálogo. Se você omitir o título,
o nome da aplicação entra no lugar da barra de título.
Helpfile Não suportada.
Context Não suportada.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 21
O primeiro grupo de valores(0–5) descreve o número e o tipo de botões exibidos na caixa de diálogo; o segundo
grupo (16, 32, 48, 64) descreve o estilo da ícone; o terceiro grupo (0, 256, 512, 768) determina qual botão é o
padrão; e o quarto grupo (0, 4096) determina a modalidade da caixa de mensagem. Quando estiver adicionando
números para criar um valor final para os argumentos dos botões, use somente um número de cada grupo.
Retorno de Valores
vbOK 1 OK
vbCancel 2 Cancelar
vbAbort 3 Abortar
vbRetry 4 Repetir
vbIgnore 5 Ignorar
vbYes 6 Sim
vbNo 7 Não
Obs: Se a caixa de diálogo exibe um botão de cancelar, pressionando a tecla ESC obtem-se o mesmo efeito
como ter clicado o botão de cancelar.
InputBox
Descrição
Exibe um prompt em uma Caixa de Diálogo, esperando que o usuário entre com um texto ou clique um botão, e
retorna o conteúdo de um TextBox.
Sintaxe
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 22
A sintaxe do InputBox possui estes argumentos:
Partes Descrição
Obs: Se o usuário clicar OK ou pressionar ENTER, o retorno da caixa de entrada, contudo está na caixa de
texto. Se o usuário clicar Cancelar, o retorno é um texto de tamanho zero ("").
IF ... ENDIF
Condicionalmente executa uma seleção de comandos baseados no valor de uma expressão lógica.
Sintaxe
IF Expressão [THEN]
Comandos
[ELSE
Comandos]
ENDIF
Argumentos
Expressão
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 23
Especifica a expressão lógica que recebe valor. Se a Expressão recebe valor verdadeiro (.T.), qualquer comando
seguido do IF ou THEN e precedendo ELSE ou ENDIF (que sempre ocorrerão primeiro) são executados.
• Se a Expressão é falsa (.F.) e o ELSE é incluído, qualquer comando depois do ELSE e antes do ENDIF
é executado.
• Se a Expressão é falsa (.F.) e o ELSE não é incluído, todos os comandos entre o IF e o ENDIF são
ignorados. Neste caso, a execução do programa continua com o primeiro comando seguindo até o
ENDIF.
Obs: Você pode definir um bloco IF ... ENDIF sem outro bloco IF ... ENDIF. Os comentários precedidos por
&& podem estar especificados em alguma linha depois de IF, THEN, ELSE, and ENDIF. Estes comentários
são ignorados durante a compilação e execução do programa.
Unload - End
Unload
O comando Unload é utilizado para fechar formulários que integram um projeto. Pode ser usado de duas
formas:
Sintaxe:
• Unload Me;
• Unload Form1.
Quando escrevemos Me, estamos nos referindo ao formulário atual em uso. Isto é feito para substituir o nome
do formulário, quando o nome fornecido a ele na propriedade name é muito grande. Já no segundo caso,
utilizamos o nome de um Formulário. Portanto, mesmo estando em um determinado formulário, ao clicarmos
em um botão, por exemplo, podemos estar fechando um outro formulário, basta apenas escrever Unload e
fornecer o nome do formulário a ser fechado.
Os únicos casos em que o comando Unload seguido de Me ou diretamente do nome de um Form qualquer
poderá estar fechando um projeto, serão:
End
O comando End é utilizado para encerrar o programa, lembrando que End significa Fim. Geralmente encontra-
se em um item de menu descrito como Sair ou Fechar, em um botão, ou diretamente na programação, fazendo
com que o sistema encerre-se propositalmente após algumas interações do usuário.
Comentários
Comentários são acrescidos ao programa para explicar o que um código faz. É muito simples perguntar-se por
que os comentários são importantes - até que você tente modificar ou consertar um programa que alguém
escreveu ou mesmo que você escreveu meses atrás. Os comentários não são executados nem processados pelo
Visual Basic. Eles não ocupam nenhum espaço nos códigos compilados. Existem duas formas de indicar um
comentário. A forma usual é indicar um comentário com aspas simples. Veja o exemplo abaixo:
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 24
Private Sub Command1_Click ( )
' Um comentário descrevendo o procedimento que viria aqui
' Toda linha de comentário ficará na cor verde
End Sub
Você poderá também acrescentar comentários no final das linhas. Nesse caso é mais prático utilizar aspas
simples, porque a forma Rem requer dois-pontos antes dele.
Objetos
O Visual Basic é composto de formulários e controles genericamente chamados de objetos. Cada um dos
objetos possui várias propriedades listadas na Janela de Propriedades.
As propriedades dos objetos nos permitem saber e modificar as características desses objetos. Por exemplo, o
nome, a cor, o tamanho, a legenda, o tipo e o tamanho da fonte com que o texto aparece e sua posição, são
propriedades associadas aos quadros de texto, "Labels" (legendas) e botões de controle, opção e de seleção.
Ao selecionarmos um determinado objeto, dando um clique com o mouse sobre ele, a Janela de Propriedades
automaticamente listará as propriedades disponíveis para aquele objeto e então poderemos modificá-las. Cada
objeto reconhece as seguintes ações, tais como um clique do mouse, abertura de formulário, digitação em um
quadro de texto, etc. Essas ações são chamadas de eventos.
Para uma aplicação responder às ações do usuário e aos eventos do sistema, são utilizados os procedimentos
associados a cada evento. Por exemplo, um botão de controle reconhece os seguintes eventos:
Eventos Ações
Quando um evento ocorre em uma aplicação, o sistema automaticamente reconhece o evento e executa o
código associado a esse evento escrito pelo programador. Esse código é chamado de procedimento do evento
("Event Procedure"). Esse procedimento aparece na Janela de Código.
O nome do procedimento associado ao evento é composto pelo nome do objeto e pelo nome do evento. O nome
do objeto para todos os formulários é "Form" e para os controles é o que aparece na propriedade "Name" do
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 25
controle.
Devemos escrever código somente para os eventos que serão utilizados em nossa aplicação.
O método é um procedimento ("Function ou Sub") que atua nos objetos. Por exemplo, um quadro de lista é um
controle que possui os seguintes métodos:
Métodos Ações
Adicionar um novo item no quadro de lista durante o tempo de execução, ou seja, quando o
AddItem
programa está sendo executado.
Clear Limpar o conteúdo do quadro de lista.
Move Movimentar o quadro de lista para uma nova posição no formulário.
Refresh Forçar uma atualização imediata ao quadro de lista.
RemoveItem Remover um item do quadro de lista.
SetFocus Fazer com que o sistema transfira sua atenção para o quadro de lista.
Formulários
Os formulários são utilizados como interface com o usuário dentro de uma aplicação. Cada formulário é uma
janela que pode conter controles gráficos e outros formulários. Podemos utilizar os formulários como uma tela
de ilustração, um quadro de diálogo ou como um formulário que contém outro. Podemos modificar o tamanho e
localização na tela do formulário, clicando e arrastando o mouse na borda e na barra de título desse formulário,
respectivamente.
Além dos controles, os formulários podem conter código e variáveis. Na verdade, cada formulário possui a
própria janela de código. Dentro do objeto "General" da janela de código, podemos declarar variáveis,
constantes e procedimentos criados por nós. Na janela de projeto, os arquivos com extensão " .FRM" contém,
cada um, um formulário, os controles contidos nele, uma lista das propriedades do formulário e dos controles,
as variáveis e constantes utilizadas e o código associado.
Um projeto pode conter vários formulários e podemos adicionar um novo formulário selecionando o item "Add
Form" dentro do menu "Project". Podemos ter ainda outro tipo de formulário: o do tipo "MDI" (Multiple
Document Interface). Esse tipo de formulário pode conter outros formulários dentro dele. Cada projeto pode
conter apenas um formulário do tipo "MDI". Os formulários que estão dentro do formulário "MDI" possuem a
propriedade "MDIChild" como "True" e são chamados de formulários Filho. Adicionamos um formulário
"MDI" ao projeto selecionando o item "Add MDI Form" dentro do menu "Project".
Controles
São ferramentas utilizadas nos formulários para receber e mostrar informações. Os quadros de texto, botões,
rótulos, quadros de figuras, etc., são exemplos de controles. Os controles disponíveis em um projeto são
mostrados na Caixa de Ferramentas ("ToolBox") e possuem a extensão de arquivo "OCX". Para inserir uma
ferramenta de controle em seu projeto em Visual Basic, você deve selecionar o item "Components..." dentro do
menu "Project", normalmente os arquivos ".OCX", encontram-se no diretório "WINDOWS\SYSTEM", mas
você pode importá-los de outros diretórios normalmente.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 26
2. Selecionar o controle na Caixa de Ferramentas. Dar um clique com o botão do mouse na posição
desejada do formulário (ponto inicial) e arrastar até conseguir o tamanho desejado, soltando em seguida
o botão (ponto final).
Para os controles já localizados no formulário, podemos modificar o seu tamanho da seguinte maneira:
1. Selecionar o controle;
2. Selecionar a propriedade desejada da Janela de Propriedades;
3. Modificar a propriedade.
Módulos
São arquivos de extensão " .BAS" que contém declarações (variáveis e constantes) e procedimentos (funções e
sub-rotinas). Podemos criar um módulo selecionando o item "Module" dentro do menu "Project". O Visual
Basic mostra uma janela de código com o título "Module". Podemos também ver, na janela de projeto, o
arquivo criado.
É aconselhável trocarmos o nome padrão dado pelo Visual Basic, pois os arquivos “ .BAS" são uma maneira de
reaproveitarmos as mesmas funções e sub-rotinas para várias aplicações. Selecionando o item "Save File As..."
dentro do menu "File", podemos fazer essa alteração.
Projeto
É um arquivo " .VBP" que contém a lista dos formulários, módulos e controles que compõem uma aplicação.
Repetindo, a Janela de Projeto lista todos os arquivos da aplicação. Cada projeto contém pelo menos um
formulário. Podemos inserir quantos formulários desejarmos dentro de um projeto. Selecionamos o item "New
Project" dentro do menu "File" para criarmos um novo projeto. O Visual Basic abre esse novo arquivo com o
nome padrão de "Project1.vbp" É aconselhável modificarmos esse nome, selecionando o item "Save Project
As..." dentro do menu "File".
Na terceira etapa, adicionamos o código, ou seja, projetamos como o programa responderá aos diferentes
eventos (cliques, duplo clique, teclas adicionadas, interrupção causada pelo temporizador, redimensionamento
de uma janela, etc.). Devemos lembrar que essas três etapas não dispensam um projeto de software detalhado,
isto é, como o programa deverá funcionar, como será o fluxo de dados dentro do programa, os algorítmos
utilizados, a interface com o usuário, etc.
MousePointer Determinar o tipo do ponteiro do mouse mostrado quando ele está sobre uma parte
específica de um formulário ou controle.
Especificar o nome usado no código para identificar um formulário, controle ou objeto de
Name
acesso a dados. Não está disponível em tempo de execução.
ToolTipText Exibir uma janela de assistência junto ao ponteiro do mouse, movendo-o sobre um
formulário ou controle.
Determinar a distância entre a borda interna superior de um objeto e a borda superior do
Top
objeto que o contém.
Visible Determinar se o objeto está visível ou não.
Width Determinar a dimensão horizontal de um objeto.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 28
Eventos comumente utilizados nos objetos:
Eventos Ações
DragDrop Ocorre quando uma operação de “arrastar e soltar" é completada como resultado do
arrastamento sobre um formulário ou controle e soltura do botão do mouse.
Ocorre quando uma operação de "arrastar e soltar" está em progresso. Pode ser utilizado para
DragOver monitorar se o ponteiro do mouse entra, deixa ou está diretamente sobre um alvo válido. O
ponteiro do mouse determina que o objeto receba o evento.
GotFocus Ocorre quando um objeto recebe a atenção do sistema (focus). Iremos notar que um
formulário recebe a atenção somente quando todos os controles visíveis estão desabilitados.
KeyDown Ocorre quando o usuário pressiona uma tecla.
KeyPress Ocorre quando o usuário pressiona e solta uma tecla.
KeyUp Ocorre quando o usuário solta a tecla previamente pressionada.
LostFocus Ocorre quando um objeto perde a atenção do sistema (focus).
MouseDown Ocorre quando o usuário pressiona o botão do mouse.
MouseMove Ocorre quando o usuário movimenta o mouse.
MouseUp Ocorre quando o usuário solta o botão do mouse previamente pressionado.
Controles
Todos os controles possuem abreviações para facilitar a programação. Assim caso, o programador esteja lendo
um artigo ou desenvolvendo um programa que esteja em um livro (ou outra) fonte e não exista uma foto ao
menos da tela deste programa, ele facilmente poderá identificar os controles existentes dentro deste programa
apenas acompanhando suas abreviações. Abaixo seguem as Abreviações dos Controles básicos utilizados pelo
Visual Basic.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 29
Controles Abreviações
CheckBox CHK
ComboBox CMB
CommandButton CMD
Data (Control) DTC
DirListBox DIR
DriveListBox DRV
FileListBox FIL
Form FRM
Frame FRM
HScrollBar SCR
Image IMG
Label LBL
Line LIN
ListBox LST
Ole OLE
OptionButton OPT
PictureBox PCT
Shape SHP
TextBox TXT
Timer TMR
VScrollBar SCR
Propriedades Ações
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 30
As Propriedades Principais do ComboBox
Propriedades Ações
Style Escolhe o tipo de caixa de combinação que será utilizada: dropdown combo, simple combo,
dropdownlist.
Text Nesta propriedade digita-se um texto que ficará como padrão, fixo na área de texto, na caixa
de combinação. Geralmente deixa-se em branco.
Propriedades Ações
Se esta opção for ajustada como verdadeira, o botão será associado à tecla ESC e sempre
Cancel
que pressionarmos essa tecla, será como se tivéssemos apertado o botão.
Caption O título que será exibido dentro do botão.
Estando o botão com essa propriedade como True, indica que este botão será o padrão desta
Default janela e sempre que apertarmos a tecla ENTER, será como se tivéssemos clicado sobre o
botão.
Enabled Determina se o botão será habilitado para pressionamento por parte do usuário ou não.
Font Escolhe a fonte de letra que o Caption terá.
Name O nome que daremos para o objeto botão de comando.
Determina se o botão será visível para o usuário quando o
Visible
programa estiver em execução.
Propriedades Ações
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 31
As Propriedades Principais do Form
Propriedades Ações
Propriedades Ações
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 33
As Propriedades Principais do HScrollBar
Propriedades Ações
Propriedades Ações
Propriedades Ações
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 34
As Propriedades Principais do ListBox
Propriedades Ações
IntegralHeight Determina a possibilidade dos itens dentro da caixa de listagem serem exibidos de
maneira parcial.
Nesta propriedade existe uma caixa onde colocamos números relacionados com os itens
ItemData
existentes dentro do listbox.
List É o local onde digitamos os itens que estarão dentro do listbox.
Quando esta propriedade estiver habilitada, significa que a caixa de listagem aceitará
MultiSelect múltiplas seleções, ou seja, poderá ser selecionado mais de um item: none, simple e
extended.
Name Nome que o objeto listbox terá. A abreviação para este objeto é "lst".
Classifica os itens existentes dentro do listbox em ordem alfabética ou numérica
Sorted ascendente. Esta propriedade em tempo de execução tem a finalidade de informar o
estado que se encontra o sorted.
Propriedades Ações
Propriedades Ações
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 35
As Propriedades Principais do TextBox
Propriedades Ações
Propriedades Ações
Propriedades Ações
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 36
Não vamos estudar todos os objetos de controle, apenas alguns como:
• CommandButton
• Label
• TextBox
• Frame
• CheckBox
• OptionButton
• Timer
CommandButton
Obs:Um botão de comando é tipicamente usado para iniciar um evento que retorna uma ação com fechar um
formulário, movimentação para um registro diferente, imprimir u relatório, etc. Use a propriedade Caption para
especificar o texto que aparece no botão de comando. Use a propriedade Picture para especificar uma figura
para um botão de comando, só não se esqueça de habilitar a propriedade Style para Graphical, caso contrário a
figura não aparecerá. Você pode escolher um botão de comando para clicá-lo e se a propriedade Default está
selecionada para True (.T.), pelo pressionamento da tecla ENTER o botão de comando é selecionado. Se a
propriedade Cancel do botão de comando está selecionada para True (.T.), você pode escolher o botão de
comando pelo pressionamento da tecla ESC.
Exercício Proposto 1
Feito isto, construa os seguintes botões no formulário, utilizando-se das propriedades descritas na tabela abaixo:
Name Caption
CmdLimpar Limpar
CmdOk Ok
CmdCancelar Cancelar
CmdFechar Fechar
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 37
O resultado obtido deverá ser o formulário abaixo:
<>
Após termos construído a tela, deveremos passar para a parte da programação. Para gerar a programação,
devemos clicar duas vezes no objeto desejado.
<>
<>
<>
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 38
Programação do botão Fechar:
<>
<>
O resultado deste exercício será a impressão das mensagens inseridas dentro dos botões através do comando
Print diretamente no formulário, como na figura abaixo:
<>
Para retirar as mensagens escritas no formulário, é só clicar no botão Limpar e para encerrar o programa é só
clicar no botão Fechar. No momento de salvar, o nome a ser dado ao projeto é PrjCommand1.
Exercício Proposto 2
Feito isto, reconstrua o exercício anterior, mas desta vez, utilize as seguintes propriedades a mais no objeto
CommandButton:
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 39
Propriedades Opções
Style Graphical
Qualquer arquivo de
Picture
figura
Modifique também a propriedade Caption dos objetos, acrescentando & antes do nome físico. Você estará
criando uma tecla de atalho para eles. Assim, quando você precisar utilizar o CommandButton, é só clicar nele
ou manter pressionada a tecla “Alt”, do lado esquerdo do teclado, seguida da letra escolhida para atalho.
<>
Obs: A letra escolhida para ser o atalho do objeto deverá possuir & antes e não necessariamente deverá ser a
primeira letra, poderá ser uma letra do meio ou do final da palavra.
Label
Labels são usados para exibir texto e não podem ser editados pelo usuário. Eles são usados para identificar
objetos em um formulário providenciando uma descrição do que um certo controle fará se clicado, por exemplo
em tempo de execução, Eles podem exibir informação em resposta a um evento ou processo em sua aplicação.
Labels são usados em muitas instâncias nas mais diferentes situações. Muito comumente, eles são usados com
controles que não tem a propriedade Caption. Por exemplo, você pode usar o controle label para adicionar
descrições para TextBoxes, ListBoxes, ComboBoxes e outros. Eles também podem ser usados para descrever
textos em um formulário, por exemplo, para auxiliar o usuário com informação de ajuda. Você pode também
escrever um código que altere o texto exibido por um label em resposta à eventos em tempo de execução. Por
exemplo, se sua aplicação leva alguns minutos para processar uma alteração, você pode exibir uma barra de
status processando uma mensagem através de um label.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 40
Selecionando a Propriedade Caption do Label
Para alterar o texto exibido em um label, use a propriedade Caption. Em tempo de projeto, você pode selecionar
esta propriedade, selecionando-a na Janela de Propriedades. Você pode utilizar o tamanho da propriedade
Caption até o máximo de 1024 bytes.
Alinhando o Texto
A propriedade Alignment permite que você selecione o alinhamento do texto do label para Justificado à
Esquerda (0, é o padrão) , Centralizado (1), ou Justificado à Direita (2).
Pelo padrão, quando inserimos um texto dentro da propriedade Caption excedendo a largura do controle, o texto
desce para a próxima linha e é alterado se ele excede a altura do controle. Para que o controle ajuste
automaticamente seu conteúdo, selecione a propriedade AutoSize para True. O controle expandirá
horizontalmente para receber o conteúdo da propriedade Caption. Para que o conteúdo desça uma linha e
expanda verticalmente, selecione a propriedade WordWrap para True.
Selecione a propriedade UseMnemonic para True se você quiser definir um caracter na propriedade Caption do
label como uma chave de acesso. Quando você define uma chave de acesso em um label, o usuário pode
pressionar e utilizar ALT + o caracter que o programador designou para mover o foco para o próximo controle
na ordem da tabulação.
Você pode também criar chaves de acesso para muitos outros controles que tiverem uma propriedade Caption
adicionando o caracter (&) antes da letra que você quiser usar como a tecla de acesso. Para um controle receber
uma tecla de acesso sem que ele tenha a propriedade caption, use um label com o controle. Por que o controle
label não pode receber foco, então o foco se move automaticamente para o próximo controle na ordem
fornecida na propriedade TabIndex. Use esta técnica para fornecer teclas de acesso para TextBox, PictureBox,
ComboBox, ListBox, DriveListBox, DirListBox, Grid e Image.
-ou-
Desenhe o controle em qualquer ordem e selecione a propriedade TabIndex do label para numerar o uso
do controle.
2. Use o caracter & na propriedade Caption para fornecer uma tecla de acesso para o label.
Obs: Você pode querer exibir teclas de acesso em um controle label, se você estiver usando eles para criar
teclas de acesso. Isto permite que você una um controle label a um campo de uma linha de registro onde os
dados são incluídos através do &. Para exibir & em um controle label, selecione a propriedade UseMnemonic
para False.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 41
Exercício Proposto
Feito isto, construa os seguintes labels no formulário, utilizando-se das propriedades descritas na tabela abaixo:
Name Caption
Na propriedade Name do formulário digite FrmLabel e na propriedade Caption digite "Exemplo do objeto
Label".
<>
Com certeza, os objetos criados não ficaram com esta mesma aparência apresentada acima. Para isso, algumas
propriedades dos labels deverão ser alteradas. Siga as instruções abaixo e confira o resultado:
Objeto Propriedades
LblNome Font
AutoSize, BorderStyle,
LblSexo
Font e ForeColor
BackColor, Font,
LblExame ForeColor e
WordWrap
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 42
TextBox
Obs: Para exibir múltiplas linhas de texto em um controle TextBox, altere a propriedade MultiLine para True.
Se um TextBox com MultiLine não tem uma barra de rolagem horizontal, o texto é automaticamente ajustado
quando o TextBox é redimensionado. Para personalizar a barra de rolagem de um TextBox, selecione a
propriedade ScrollBars.
Barras de rolagem sempre aparecerão em um TextBox quando a propriedade MultiLine dele é alterada para
True, e a propriedade ScrollBars dele é alterada para qualquer coisa exceto None (0). Se você alterar a
propriedade MultiLine para True, você pode usar a propriedade Alignment para alterar o alinhamento do texto
dentro do TextBox. O texto padrão é justificado à esquerda. Se a propriedade MultiLine é False, alterar a
propriedade Alignment não proporcionará efeito.
Exercício Proposto
Feito isto, construa os seguintes objetos no formulário, utilizando-se das propriedades descritas na tabela
abaixo:
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 43
O resultado obtido deverá ser o formulário abaixo:
<>
Após termos construído a tela, deveremos passar para a parte da programação. Para gerar a programação,
devemos clicar duas vezes no objeto desejado.
<>
<>
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 44
Programação da caixa de texto Exame:
<>
<>
<>
<>
Frame
Frames são usados para criar grupos de controles com identidades. Por exemplo, você pode usar um frame para
subdividir um formulário funcionalmente, separando grupos de botões de opções (OptionButton).
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 45
Figura 1. O controle Frame
Em muitos casos, você usará o frame passivamente para agrupar outros controles e não terá a necessidade de
responder por ele nos eventos. Você irá, com tudo, alterar o Name, Caption, ou a propriedade Font.
Quando usamos um frame para agrupar outros controles, primeiro desenhamos um frame, e então desenhamos
os controles dentro dele. Isto habilita você a movimentar o frame e os controles contidos nele junto.
Para adicionar outros controles no frame, desenhem eles dentro do frame. Se Você desenhar um controle do
lado de fora do frame, ou usar o método do duplo-clique para adicionar um controle em um formulário, e então
tentar movimentar ele para dentro do frame, o controle será posto no topo do frame e você terá que movimentar
o frame e os controles separadamente.
Obs: Se você já tem os controles e quer agrupá-los em um frame, você pode selecionar todos os controles,
recortá-los, enviando-os para a área de transferência, selecionar o frame, e então colá-los dentro do frame.
Para selecionar múltiplos controles em um frame, pressione a tecla CTRL enquanto estiver usando o mouse
para desenhar uma caixa em torno dos controles. Quando você soltar o mouse, os controles dentro do frame
serão selecionados, como na Figura 3.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 46
Check Box
O controle checkbox exibe uma marca de checagem quando ele é selecionado. Ele é comumente utilizado para
presenciar uma seleção Sim/Não ou Verdadeiro/Falso para o usuário. Você pode utilizar este controle em
grupos para exibir múltiplas escolhas das quais o usuário pode selecionar uma ou mais.
Este controle é similar ao controle optionbutton, mas neste cada opção é usada para indicar uma seleção que é
feita pelo usuário. Eles diferem somente porque um optionbutton em um grupo pode ser selecionado por vez.
Com o controle check box, porém, qualquer número de caixas de checagem pode ser selecionado.
O Valor da Propriedade
A propriedade Value do check box indica se o check box está checado, não-checado ou não acessível. Quando
selecionado, o valor será 1. Por exemplo:
Tabela de valores e constantes do Visual Basic equivalentes que são usadas para selecionar a propriedade
Value.
Não-Checado 0 VbUnchecked
Checado 1 VbChecked
Não-Acessível 2 VbGrayed
O usuário clica no controle check box para indicar um estado checado ou não-checado. Você pode então testar
o estado do controle e programar sua aplicação para desenvolver alguma ação baseada nesta informação.
Por padrão, o check box é selecionado para vbUnchecked. Se você quer preselecionar um check box de uma
série de check boxes, você pode selecioná-lo através da propriedade Value para vbChecked na rotina
Form_Load ou Form_Initialize.
Você pode também selecionar a propriedade Value para vbGrayed para desabilitar o check box. Por exemplo,
pode querer desabilitar um check box até que uma certa condição seja acionada.
O Evento Click
Porém se o usuário clica no check box, o evento Click é acionado. Você pode então programar sua aplicação
para desenvolver alguma ação dependendo do estado do check box. Como no exemplo, a propriedade caption
do controle check muda cada vez que o controle é clicado, indicando um estado checado ou não-checado.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 47
If Check1.Value = vbChecked Then
Check1.Caption = "Checked"
ElseIf Check1.Value = vbUnchecked Then
Check1.Caption = "Unchecked"
End If
End Sub
Obs: Se o usuário clicar duas vezes no controle check box, cada clique será processado separadamente, porque
o controle check box não suporta o evento double-click.
O evento click do check box é também acionado quando o foco é passado para o controle com o teclado usando
a tecla TAB e então pressionando a tecla de espaço.
Você pode selecionar o check box através do caracter que cria tecla de atalho (&). Por exemplo:
Neste exemplo, pressionando a combinação de teclas ALT+C você pode alternar entre os estados checado e
não-checado.
Exercício Proposto
Feito isto, construa os seguintes objetos no formulário, utilizando-se das propriedades descritas na tabela
abaixo:
Name Caption
FrmOpcoes -
ChkArroz Arroz
ChkFeijao Feijão
ChkFritas Fritas
ChkOvo Ovo
ChkBife Bife
CmdFechar &Fechar
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 48
O resultado obtido deverá ser o formulário abaixo:
OptionButton
Usualmente, os controles OptionButton são usados em um grupo de opções para exibir opções das quais o
usuário seleciona somente uma. Você agrupa os controles OptionButton desenhando-os dentro de uma
controle que os contêm como um Frame, um PictureBox, ou um formulário. Para agrupar os controles
OptionButton em um Frame ou PictureBox, desenhe o Frame ou o PictureBox primeiro, e então desenhe os
controles OptionButton dentro. Todos os controles OptionButton com o mesmo recipiente, contidos no
mesmo grupo.
Exercício Proposto
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 49
Feito isto, construa os seguintes objetos no formulário, utilizando-se das propriedades descritas na tabela
abaixo:
Name Caption
FrmSexo Sexo
OptMasculino Masculino
OptFeminino Feminino
FrmEstado Estado Civil
OptSolteiro Solteiro
OptCasado Casado
OptViuvo Viúvo
OptSeparado Separado
OptDivorciado Divorciado
CmdFechar &Fechar
Timer
O controle Timer realiza ações atribuídas a ele de acordo com a passagem do tempo. Eles são independentes do
usuário, e você pode programá-los para ter ações em intervalos de tempo regulares. Uma típica ação realizada
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 50
com ele é a checagem do relógio do sistema para visualizar as horas em alguma barra de tarefas. Timers
também são muito usados para outros tipos de processamento.
Cada controle timer tem uma propriedade chamada Interval que especifica o número de milisegundos (ms) que
passam entre um evento de tempo para o próximo. Mesmo desabilitado, um timer continua a receber um evento
(apropriadamente nomeado de evento Timer) em um estado inacabado igual ao intervalo de tempo.
A propriedade Interval tem poucas limitações para considerar quando você está programando em um controle
timer:
• Se sua aplicação ou outra aplicação é feita exigindo uma demanda maior do sistema tal como longos
retornos, cálculos intensivos, ou leitura de drives, redes, ou portas de acesso sua aplicação não permite
rodar no evento timer com frequência como especificado na propriedade Interval.
• O intervalo poderá ser entre 0 e 64.767, o que significa que um intervalo muito longo não poderá ser
mais longo do que um minuto (cerca de 64.8 segundos).
• O intervalo não é garantido exatamente com o decorrer do tempo. Para assegurar exatidão, o timer exibe
a checagem do relógio do sistema quando necessário, melhor do que tentar incrementar valores
acumulados internamente como se fosse tempo.
Todo controle timer deverá ser associado com um form. Contudo, para criar uma aplicação com tempo, você
deverá criar no mínimo um form.
Propriedade Opção
Se você quiser que o controle timer inicie trabalhando, como o evento load do form,
Enabled altere esta propriedade para True. Em todo caso, deixe esta propriedade
selecionada como False. Você poderá escolher ter um evento externo (como um
clique de um botão de comando, por exemplo) para iniciar a operação do timer.
Interval Número de milisegundos entre os eventos do timer.
Note que a propriedade Enabled do controle timer é diferente da propriedade Enabled dos outros objetos. Na
maioria dos objetos, a propriedade Enabled determina qual objeto pode responder por um evento causado pelo
usuário. Com o controle Timer, alterando a propriedade Enabled para False suspendemos as operações do
timer.
Obs: Lembre-se que o evento Timer é periódico. A propriedade Interval não determina "quanto tempo" e sim
"qual a frequência". O tamanho do intervalo depende de quanta precisão você vai precisar, porque, existe a
chance em potencial de que algum erro ocorra fazendo um intervalo quebrado, mesmo assim você terá mais
precisão.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 51
Agora vamos entrar na parte de variáveis, elas são muito importantes em qualquer projeto, nos
projetos mais complexos indispensáveis.
Variáveis
O que são Variáveis?
Toda linguagem de programação precisa de algum lugar para armazenar o resultado de seus cálculos ou
simplesmente para controlar o fluxo do programa. Assim como acontece na álgebra cotidiana, as linguagens de
programação se valem de variáveis para armazenar dados na memória do computador. Uma variável de
memória nada mais é do que uma posição da memória do computador reservada exclusivamente para que sejam
guardadas informações e dados. A essa posição de memória damos um nome para referência dentro do nosso
programa, como por exemplo, NomeCliente. Quem controla qual posição de memória do computador será
reservada é a própria linguagem e o sistema operacional, ou seja, devemos apenas nos preocupar em nomear e
declarar as variáveis. E já que estamos falando de variáveis, quando formos nomeá-las, deveremos seguir
algumas regras básicas:
Escolha nomes sugestivos para as variáveis, de tal forma que descrevam sua função ou conteúdo que será
armazenado nelas. Por exemplo, para uma variável onde seria armazenado o resultado do cálculo do salário de
um funcionário, poderíamos escrever nSalarioFunc, em vez de X, Y ou Z.
Acostume-se a iniciar o nome de uma variável com uma combinação de até três letras em minúsculo que
identifica o seu tipo de dado. Por exemplo, para uma variável do tipo string, utilize a combinação "str", para
uma variável numérica inteira utilize "int", e assim por diante. Veja os seguintes exemplos:
lngSaldoInicial = 125080
Declaração de Variáveis
Embora você possa ir criando variáveis a medida que for precisando, é aconselhável que declare todas as
variáveis que irá utilizar em seu programa. Isso torna o programa mais estruturado e menos propenso a erros,
como por exemplo, ocorrências de alterações indevidas do valor de uma variável entre chamadas de rotinas.
Quando declaramos uma variável, um escopo é atribuído a ela, ou seja, é determinada sua abrangência
(visibilidade) e tempo de vida (existência). No Visual Basic 6.0, utilizamos o comando de declaração Dim para
declararmos uma variável, dando-lhe assim um nome e definindo o seu tipo de dado e escopo.
A sintaxe completa é:
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 52
NomeVariável representa um nome válido para variáveis. Já a cláusula opcional As permite que seja definido o
tipo de dado que a variável armazenará. Os tipos de dados disponíveis serão vistos mais à frente. Você pode
deixar para o Visual Basic declarar implicitamente as variáveis. Assim você simplesmente cria as variáveis à
medida que for precisando. Por exemplo, suponhamos que você tenha a seguinte função que calcula a média
entre dois números:
Media = intSoma / 2
End Function
Neste caso, a variável Soma não fora declarada. Agora imagine que por questão de descuido, você tenha
digitado o seguinte:
Media = intSoma / 2
End Function
A função não seria executada, uma vez que está tentando utilizar uma variável, no caso intSoma, que não
possui qualquer valor, já que o mesmo fora atribuído à variável intSomar. Para evitar esse tipo de problema
(apenas um entre vários possíveis), é aconselhável declarar-se todas as variáveis que serão utilizadas pela rotina
(procedimento ou função). Portanto, o correto seria escrever a função da seguinte forma:
Dim intSoma
Media = intSoma / 2
End Function
Você pode forçar o Visual Basic a verificar se todas as variáveis foram declaradas previamente e, em caso
negativo, apresentar uma mensagem de advertência. Isso é possível através da inclusão do comando Option
Explicit na seção Declarations da classe, formulário ou módulo. Podemos também selecionar a opção
Options, do menu Tools, e ativar a caixa de seleção Require Variable Declaration, na página Editor. Isso
fará com que em todo módulo novo, porém não em módulos existentes, seja incluído o comando Option
Explicit.
Dois termos muito utilizados na programação são abrangência e tempo de vida das variáveis. Esses termos
definem o limite da visibilidade de uma variável e o tempo em que ela poderá reter seu valor. A isso chamamos
de escopo. Abrangência refere-se à(s) parte(s) do código do programa onde uma determinada variável é visível,
ou seja, onde ela pode ser acessada. Isso significa que podemos ter variáveis cujos valores somente poderão ser
acessados e/ou alterados pelo procedimento/função que as declarou e em nenhuma outra parte do programa.
Isso evita que outras rotinas do programa possam alterar inadvertidamente os valores dessas variáveis. Essas
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 53
variáveis são ditas locais à rotina. Para declarar uma variável local à rotina, seja ela um procedimento (Sub) ou
função (Function), utilize o comando de declaração Dim ou Static dentro da mesma, como no fragmento de
código a seguir:
End Function
Podemos ter também variáveis que são visíveis apenas pelas rotinas existentes num módulo e não pelas rotinas
de outros módulos da aplicação. Essas variáveis possuem escopo local ao módulo inteiro. Você declara
variáveis locais a nível de módulo através dos comandos de declaração Dim ou Private, colocados na seção
Declarations do módulo.
Para tornar uma variável disponível a todos os módulos e a todas as rotinas, você deverá declará-la na seção
Declarations de qualquer um dos módulos com o comando Public, como mostra o exemplo:
A esse tipo chamamos de variável de escopo global, ou seja, qualquer rotina de qualquer módulo tem acesso a
ela. O tempo de vida de uma variável diz respeito ao tempo em que ela poderá reter seu valor entre as diversas
chamadas do procedimento/função. Quando uma variável é declarada e a ela é atribuído um valor, esse valor se
perde quando a rotina encerra sua execução. Em outras palavras, a variável é criada quando se entra na rotina e
destruída quando se sai da mesma. Há, porém, situações onde devemos manter o valor da variável entre as
chamadas. Suponhamos por exemplo, que você esteja programando um pequeno jogo e que tenha criado uma
rotina para controle dos pontos acumulados. Você precisará de uma maneira de preservar os pontos já marcados
entre as chamadas da rotina. Desse modo, a variável, embora não seja global, não perde seu valor após o
retorno da rotina ao código que a invocou. A esse tipo, damos o nome de variável estática.
Para declarar uma variável estática, utilize o comando de declaração Static, conforme mostrado no exemplo:
Pontos = lngPontosAcumulados
End Function
Se você precisar, por um motivo ou outro, declarar todas as variáveis de uma rotina como sendo estáticas,
coloque a palavra reservada Static à frente do nome do procedimento/função, da seguinte forma:
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 54
Pontos = lngPontosAcumulados
End Function
Devemos lembrar que você deverá utilizar variáveis com o escopo mais local possível, para assim evitar
conflitos de nomes de variáveis e alterações de valores indesejáveis.
Tipos de Variáveis
Como toda linguagem de programação, o Visual Basic também possui vários tipos de dados aplicáveis às
variáveis, que definem quais os valores que essas poderão armazenar. O Visual Basic 6.0 define 11 tipos de
dados básicos, cada qual com suas características peculiares, como largura da faixa de dados, tamanho em
bytes, etc. A tabela a seguir, relaciona todos esses tipos:
Tipo de Tamanho em
Faixa de Valores
Dado Bytes
Os tipos de dados determinam o que você pode armazenar numa variável. Por exemplo, você não pode entrar
com uma expressão caractere numa variável do tipo numérico, nem digitar um número numa variável lógica.
Vejamos os detalhes dos tipos de dados mais comumente utilizados.
Esses dois tipos de dados permitem o armazenamento de valores numéricos inteiros, com os quais podemos
efetuar cálculos e operações matemáticas.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 55
A faixa de valores permitida para o tipo Integer vai de -32.768 à 32.767, sendo, portanto limitada para alguns
tipos de operações. Variáveis desse tipo são muito úteis como contadores de loops For... Next, por serem de
manipulação muito rápida pelo processador, pois necessitam de poucas instruções de máquina.
O tipo Long, por outro lado, abrange uma faixa muito maior de valores, da ordem de 2 milhões, conforme pode
ser constatado na tabela anterior.
Single e Double também são tipos de dados numéricos, porém permitem a manipulação de valores decimais,
como pesos, unidades de medidas, etc. Como nos tipos anteriores, podemos efetuar qualquer operação
matemática com eles.
O que diferencia o tipo Single do tipo Double é a precisão nas casas decimais e a faixa de valores abrangida
por cada um. Veja a tabela anterior para comparação. Variáveis do tipo Single são ditas de precisão simples,
comumente chamadas apenas de variáveis de ponto-flutuante. Variáveis do tipo Double são denominadas
variáveis de dupla precisão.
Tipo Currency
O Visual Basic possui um tipo de dado especial para tratamento de valores monetários, evitando-se assim erros
de arredondamento durante cálculos matemáticos. Esse tipo de dado é chamado de Currency. Deve-se utilizá-
lo apenas para armazenamento de valores monetários. Se num determinado cálculo, o valor resultante tiver
mais de quatro casas decimais, as casas decimais extras (a partir da quinta casa) serão truncadas. Assim, o
número 5402,105782 por exemplo, será armazenado como 5402,1057 numa variável do tipo Currency.
Tipo String
O tipo de dado String é certamente o mais utilizado. Ele possibilita que uma sequência de caracteres seja
armazenada numa variável. Essa sequência de caracteres pode conter desde letras do alfabeto até símbolos
gráficos e números, muito embora não possamos efetuar cálculos com os números armazenados numa
sequência. Devemos envolver a cadeia de caracteres com aspas (“).
Com variáveis do tipo caractere, é possível efetuarmos algumas operações de comparação, concatenação
(junção) de duas ou mais sequências de caracteres ou extração de uma parte da sequência. Não é possível,
porém efetuar cálculos matemáticos e aritméticos, já que qualquer número armazenado numa variável desse
tipo será considerado como uma sequência de texto e não um valor numérico.
Podemos determinar um tamanho máximo para uma variável do tipo String, simplesmente adicionando um
asterisco (*) seguido por um número que define o tamanho máximo em caracteres. Por exemplo, para declarar
uma variável strNomeCliente com um tamanho máximo de 50 caracteres, você escreveria:
Se for armazenada uma cadeia de caracteres menor que o tamanho máximo especificado, a variável será
preenchida com espaços em branco à direita para completá-la. Se por outro lado, você tentar armazenar mais
caracteres do que o permitido, os excedentes serão descartados.
Tipo Byte
Variáveis do tipo Byte são também numéricas, mas somente podem armazenar números na faixa de 0 à 255.
Esse tipo de variável também é útil em contador de loops For...Next pequenos, cujo ciclo de repetição não
ultrapasse 255.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 56
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
Tipo Date
Variáveis do tipo Date permitem o armazenamento de valores que representam uma data do calendário ou um
horário. Para armazenar uma data numa variável, especifique-a entre "#", como no seguinte exemplo:
dtDataVencimento = #05/06/99#
dtHora = #05:25:00#
Com valores do tipo Date é possível executarmos adição ou subtração, para assim calcularmos uma nova data.
Por exemplo:
dtDataHoje = Now
dtDataAmanha = dtDataHoje + 1
dtDataOntem = dtDataHoje - 1
Tipo Object
Variáveis do tipo Object podem fazer referência a objetos definidos pelo Visual Basic ou mesmo campos de
uma base de dados, como dados OLE ou binários. Elas são armazenadas em endereços de 32 bits. Para esse
tipo de variável, precisamos utilizar o comando de atribuição Set para assinalar valores a ela, em não apenas o
sinal de igualdade. O exemplo a seguir, ilustra sua utilização:
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.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 57
Podemos atribuir também um valor nulo a variáveis Variant, especificando a palavra-chave Null à direita do
sinal de igual. Diversas funções podem ser utilizadas para determinarmos qual o tipo de dado armazenado numa
variável Variant.
Constantes
As constantes, diferentemente das variáveis, não podem ter seus valores alterados durante a execução da
aplicação. Elas são utilizadas principalmente para fornecer maior legibilidade ao código fonte, substituindo
expressões numéricas ou caracteres mais complexos e de difícil entendimento.
For intContador = 1 to 30
'
'
Next
Se amanhã você precisasse modificar sua aplicação, aumentando o número máximo de elementos da matriz
intNumeros, teria de percorrer toda a listagem do programa e alterar as ocorrências do número 30 para a
quantidade desejada de elementos. Utilizando uma constante, esse problema seria facilmente resolvido. Você
poderia incluir a seguinte linha na seção Declarations do módulo principal do programa:
Const Num_Elementos= 30
'
'
Next
No caso de modificações futuras, será necessário apenas alteração na definição da constante e uma nova
compilação.
O resto ficará por conta do Visual Basic. Um dos tipos de constantes mais famosos é o valor de PI
(3,14159265358979...).
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 58
Operadores
De nada adiantaria termos dados e mais dados armazenados em nossas variáveis de memória ou em nosso
banco de dados, se não pudéssemos trabalhar com eles, ou seja, se não fosse possível fazer cálculos,
comparações ou qualquer outra operação. Para efetuarmos essas operações é que existem os operadores. Eles
podem ser divididos em quatro categorias básicas:
• Operadores Aritméticos;
• Operadores Relacionais;
• Operadores Lógicos;
• Operadores de Strings.
Operadores Aritméticos
Como ocorre na matemática comum, os operadores aritméticos permitem que sejam feitos cálculos com os
dados armazenados em variáveis ou em campos de bases de dados. Eles somente podem ser utilizados com
dados numéricos. A tabela a seguir, relaciona todos os operadores aritméticos disponíveis no Visual Basic.
Operador Descrição
1ª. Exponenciação
O operador Mod é utilizado para se encontrar o resto de uma divisão não exata. Por exemplo, na divisão de 19
por 3, o resultado seria 6,333333 e mesmo assim não seria um resultado preciso, já que se trata de uma dízima
periódica. Assim se multiplicássemos 6,333333 por 3, obteríamos 18,999999.
Com o operador Mod na expressão 19 Mod 3, teremos como resultado o número 1, ou seja, o resto da divisão
de 19 por 3. Isso significa que se você multiplicar a parte inteira de 6,333333, que é 6, e somar o resultado ao
resto obtido, no caso o número 1, terá novamente o valor 19.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 59
Operadores Relacionais
Os operadores relacionais, também chamados de operadores de comparação, permitem que relacionemos
(comparemos) dois valores entre si. Por exemplo, para saber se o valor de uma determinada variável X é maior
que o de uma variável Y, poderíamos escrever:
X>Y
A seguinte tabela, lista todos os operadores relacionais do Visual Basic. O funcionamento de cada um deles não
difere daquele empregado na matemática comum.
Operador Descrição
Operadores Lógicos
Os operadores Lógicos como o próprio nome já diz, avaliam uma expressão numérica ou caractere e retornam
valores lógicos, ou seja, verdadeiro ou falso. Por exemplo, se uma variável, digamos X, possui o valor 100 e
uma outra variável Y , possui o valor 500, então a expressão a seguir avaliará verdadeiro.
Operador Descrição
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 60
Para entender melhor como funcionam os operadores lógicos, vamos analisar cada um deles.
O operador lógico And pode ser visto como um conector lógico. Imagine que você possua dois fios ligados a
uma lâmpada e a uma bateria. A lâmpada somente acenderá se você tiver ligado ambos os fios aos pólos da
bateria. Acompanhe esse exemplo:
Operador Lógico Or
O operador lógico Or às vezes é chamado somador lógico, uma vez que avalia verdadeiro (1) sempre que uma
das expressões for verdadeira (pode até ocorrer de ambas serem verdadeiras).
Considere agora, como exemplo, que você deseja escrever uma carta (ou quem sabe um livro também sobre o
Visual Basic). Se você tiver uma máquina de escrever (OR) um micro-computador, poderá tranquilamente
satisfazer seu desejo. Acompanhe o exemplo:
O operador lógico Not é um operador de inversão, ou seja, ele transforma em falsa uma expressão lógica que
avalia verdadeiro, e vice-versa. Por exemplo, se você possui um carro e o pneu está furado, você não (NOT)
pode viajar. É o que mostra a tabela abaixo:
Falso Verdadeiro
Verdadeiro Falso
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 61
Operador Lógico Xor
O operador lógico Xor pode ser visto como um operador que não admite ambiguidades, quer dizer, ou é uma
coisa ou outra, nunca ambas. Voltemos ao nosso exemplo da lâmpada e da bateria. Imagine agora que você se
encontra perto de uma tomada. Você poderá assim, ligar os fios da lâmpada na bateria ou na tomada da parede,
mas não em ambas ao mesmo tempo. A tabela abaixo ilustra essa situação:
O operador Eqv é utilizado para desempenhar uma equivalência lógica entre duas expressões. Por exemplo, se
tivéssemos as variáveis Numero1 = 10, Numero2 = 8 e Numero3 = 5, a expressão lógica a seguir, resultaria em
verdadeiro, já que ambas as comparações são equivalentes:
O operador Imp talvez seja o mais complexo de todos. Ele é utilizado para desempenhar a função de uma
implicação lógica entre duas expressões. Ele também desempenha uma comparação bit a bit dentro de uma
expressão numérica. A seguinte tabela ilustra os resultados obtidos com o operador Imp de acordo com as
diversas possibilidades:
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 62
Numero1 > Numero2 Imp Numero2 > Numero3 é verdadeiro.
Operadores de Strings
No Visual Basic, somente é permitido dois tipos de operadores para se trabalhar com strings, muito embora
ambos possuam o mesmo efeito. São os operadores "&" e "+".
Esses operadores servem para concatenar duas ou mais strings de caracteres. Por exemplo, suponhamos que
você tenha definido duas variáveis strings Rua e Bairro. Para agrupar os seus valores em uma única variável
Endereço, você poderia utilizar um dos seguintes métodos:
Comandos de Laço
Comando de Laço ou Estruturas de Repetição, como também são conhecidas. É possível repetir-se um bloco
de instruções dentro de um programa em Visual Basic. Para isso existem sete tipos diferentes de estruturas de
repetição, denominadas de loops: Do While...Loop, Do...Loop While, Do Until...Loop, Do...Loop Until,
While...Wend, For...Next, For...Each...Next. Analisaremos cada um dos tipos separadamente, verificando suas
similaridades e diferenças.
Select Case
A estrutura Select Case é similar à estrutura switch...case da linguagem C, ao Case of do Pascal ou ainda ao Do
Case...EndCase do Dbase/Clipper. Ela começa avaliando uma expressão e comparando o seu resultado com
uma série de condições, até encontrar uma que se iguale ao resultado retornado pela expressão. Quando isso
ocorre, o código que está ligado à condição é executado. Essa estrutura é uma alternativa mais flexível e
confiável ao If...Then...ElseIf.
É importante observar que somente é efetuada uma comparação do resultado da expressão com as condições,
portanto, se for necessário efetuar outro tipo de operação lógica, você deverá valer-se da estrutura
If...Then...ElseIf. A sintaxe dessa estrutura é:
Case 1
Case 2
Case 3
Case Else
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 63
Print "Opção não é 1,2 ou 3"
End Select
Acrescentando na estrutura a cláusula Case Else (caso contrário), o Visual Basic irá verificar se a variável é 1,
2 ou 3. Não sendo, então será Case Else, e a linha seguinte a esta cláusula será executada. No comando Case
podemos usar também intervalos, como por exemplo:
Case 2 to 4
Executa todos os comandos que existem entre Do While e o Loop. Quando a execução do programa encontra o
comando Loop, o Do While é reavaliado e a rotina continua até que a condição estabelecida esteja satisfeita.
Contador = 0
Do While Contador < 10
Contador = Contador + 1
Print Contador
Loop
Print "Fim de Execução"
Inicializamos uma variável de nome Contador com zero, e pedimos para o programa: Repita as instruções
abaixo enquanto Contador for menor que 10. O comando Loop faz com que o programa volte para a linha do
Do While e teste a condição de novo. Somente quando a condição for verdadeira, ou seja, quando Contador
for maior ou igual a 10, que o programa executará a linha após o Loop.
Perceba que, dependendo do resultado da condição, os comandos existentes dentro da estrutura podem não
serem executados, passando direto para a linha após o comando Loop.
Neste caso, o comando Do abre a sequência de repetição, mas não faz nenhum teste de condição. Este teste é
feito no final da estrutura com o comando Loop While, ou seja, obrigatoriamente as instruções contidas após o
comando Do serão executadas.
Contador = 0
Do
Contador = Contador + 1
Print Contador
Loop While Contador < 10
Print "Fim de Execução"
Executa todos os comandos que existem entre Do Until e o Loop. Quando a execução do programa encontra o
comando Loop, o Do Until é reavaliado e a rotina continua até que a condição estabelecida esteja satisfeita.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 64
Contador = 0
Do Until Contador = 10
Contador = Contador + 1
Print Contador
Loop
Print "Fim de Execução"
Inicializamos uma variável de nome Contador com zero, e pedimos para o programa: "Repita as instruções
abaixo até que Contador seja igual a 10".
O comando Loop faz com que o programa volte para a linha do Do Until e teste a condição de novo. Somente
quando a condição for verdadeira, ou seja, quando Contador for maior ou igual a 10, que o programa executará
a linha após o Loop.
O comando Do abre a sequência de repetição, mas não faz nenhum teste de condição. Este teste é feito no final
da estrutura com o comando Loop Until, ou seja, obrigatoriamente as instruções contidas após o comando Do
serão executadas.
Contador = 0
Do
Contador = Contador + 1
Print Contador
Loop Until Contador = 10
Print "Fim de Execução"
O comando For faz uma contagem de um determinado intervalo de números. Sempre que essa contagem
encontra com o comando Next (próximo), a execução do programa retorna ao comando For até que o número
final seja alcançado. Exemplo:
For Contador = 1 to 10
Print "A variável Contador agora vale: " & Contador
Next
Print "Fim de Execução"
Neste programa, o Visual Basic através do comando For, avisa "Vamos contar até 10, começando pelo 1". As
instruções contidas na linha abaixo são executadas, e quando o comando Next é encontrado, a execução volta
para o For e a variável Contador é incrementada em mais um e assim por diante. Quando Contador for igual a
10, a estrutura For/Next é desfeita.
Step
Usamos Step em conjunto com o For para fazer com que a contagem seja incrementada. Exemplo: Se
queremos que o comando conte de 2 em 2 faremos:
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 65
Exit
O comando Exit permite que se saia prematuramente de um loop, de uma função (Function) ou de um
procedimento (Sub), transferindo o controle do programa para a linha imediatamente seguinte. Dessa forma, se
dentro de uma das estruturas de repetição, o programa deparar-se com uma certa situação que deverá forçar a
interrupção do loop, poderemos utilizar esse comando. No entanto, recomendamos utilizá-lo com cuidado, pois
ele pode desestruturar o programa, uma vez que com ele temos duas formas de saída de uma estrutura de
repetição ou procedimento/função, e isso é altamente desestimulado pelas técnicas de programação estruturada.
A tabela a seguir, apresenta os formatos do comando Exit para cada situação:
Utilização Formato
Funções e Procedimentos
Além dos formulários, que compõem a interface com o usuário, temos por trás desses, diversas rotinas (funções
e procedimentos) que executam as tarefas para as quais a aplicação fora desenhada. São essas rotinas que fazem
todo o trabalho árduo de cálculos, chamadas dos formulários e execução ordenada da aplicação. É nesta etapa
do desenvolvimento do aplicativo que o programador entrará com sua parte, definindo os algorítmos e a lógica
geral das rotinas. Podemos concluir, portanto, que uma aplicação em Visual Basic é uma união entre os
formulários e as rotinas, trabalhando amigavelmente.
Uma função em Visual Basic, seja ela interna à própria linguagem ou desenvolvida pelo programador, é como
sua similar na matemática: ela opera nos valores passados como parâmetros (se houver algum) e devolve outro
valor. Para declararmos uma função devemos utilizar a palavra-chave Function. Seguindo essa palavra-chave
vem o nome da função e, opcionalmente, uma lista de eventuais parâmetros dentro de parênteses.
A sintaxe completa é a seguinte:
Bloco de Instruções
End Function
Os nomes dos argumentos devem seguir as mesmas regras de nomeação de variáveis já vistas anteriormente.
Eles deverão vir também separados por vírgula. Para retornarmos um valor à rotina que chamou a função,
devemos atribuir esse valor ao nome da própria função. No exemplo a seguir, temos uma função que recebe
como parâmetros dois números, sendo que o primeiro se refere à base e o segundo à potência à qual o número
será elevado. Então ele calcula a potência do número (o próprio número multiplicado por ele mesmo) e devolve
o valor à rotina chamadora. Exemplo:
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 66
lngResultado = 1
Next
Potencia = lngResultado
End Function
Na rotina chamadora, tudo que devemos fazer é atribuir o valor da função a uma variável de memória, como no
exemplo:
NumElev = Potencia ( 5 , 3 )
Da mesma forma que você dá um escopo às variáveis de memória, você pode também ocultar funções no
Visual Basic, criando assim, funções que somente podem ser acessadas pelos procedimentos e funções
declarados no mesmo módulo. São verdadeiras caixas-pretas, uma vez que estão escondidas do resto do
programa. Elas são chamadas de funções privadas. Para declarar uma função privada ao módulo, coloque a
palavra-chave Private antes da declaração Function, assim:
'
'
'
End Function
Você pode especificar também o tipo de dado retornado pela função. Por exemplo, podemos alterar nossa
função Potencia, vista anteriormente, para que ela retorne um número de ponto flutuante:
lngResultado = 1
Next
Potencia = lngResultado
End Function
A variável que receberá o valor da função deve obrigatoriamente ser do mesmo tipo dessa.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 67
O que é um Procedimento?
Um procedimento nada mais é do que uma rotina desenvolvida especificamente para executar uma determinada
tarefa, como ocorre com as funções. Essa tarefa pode inclusive ser genérica, ou seja, servir para aplicações. Por
exemplo, podemos desenvolver um procedimento para abrir um formulário e maximizá-lo na tela, independente
do formulário (ou mesmo aplicativo) atualmente sendo utilizado.
Podemos criar procedimentos dos mais simples até os mais sofisticados. Dependerá apenas da sua criatividade.
Um procedimento, diferentemente das funções, não retorna qualquer valor à rotina chamadora. Ele pode ser
encarado mais como um comando definido pelo programador/usuário, no sentido de que apenas executa a tarefa
para a qual fora concebido. Você declara um procedimento através da palavra-chave Sub, seguida pelo nome
do procedimento. Para finalizar o corpo do procedimento, utilize a palavra-chave End Sub. A sintaxe correta
para declaração de procedimentos é:
Bloco de Instruções
End Sub
Sub TestePot( )
Debug.Print NumElev
End Sub
Passando Parâmetros
Embora já tenhamos utilizado a passagem de parâmetros a procedimentos e funções, veremos neste tópico,
maiores detalhes sobre esse assunto. Primeiro você deverá especificar os parâmetros a serem recebidos através
de uma lista de parâmetros colocada entre parênteses após o nome do procedimento/função. Esses parâmetros,
dentro do procedimento ou função, irão comportar-se como variáveis comuns, podendo ser manipulados como
tais. Vamos tomar como exemplo nossa função que calcula a potência de um dado número:
lngResultado = 1
Next
Potencia = lngResultado
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 68
End Function
Você deverá prestar bastante atenção quanto ao número de parênteses a serem passados a uma função ou
procedimento, isso para evitar, por exemplo, que você passe quatro parâmetros quando na verdade a
função/procedimento espera por cinco ou mais. Para invocar uma função com parâmetros, você os especifica
entre os parênteses. No entanto, como veremos mais adiante, há uma maneira de se contornar esse tipo de
problema.
Já com procedimentos, isso muda um pouco. Se o procedimento espera apenas um parâmetro, você poderá
utilizar duas formas de chamada: colocando os parâmetros entre parênteses ou diretamente após o nome do
procedimento, separando-os por um espaço. Se o procedimento possuir mais de um parâmetro, então você
poderá especificá-los utilizando o formato direto (sem parênteses), sendo que os parâmetros deverão ser
separados por vírgulas. Você pode também chamar um procedimento passando mais de um parâmetro entre
parênteses, porém deverá fazer a a chamada com a palavra-chave Call:
Sub ChamaCall ( )
End Sub
Caso deseje, poderá especificar os tipos dos parâmetros logo após a declaração dos mesmos, como mostrado a
seguir:
lngResultado = 1
Next
Potencia = lngResultado
End Function
Procedimentos e Funções no Visual Basic podem ter ou não a capacidade de alterar o valor dos parâmetros
recebidos. Para isso, podemos especificar os parâmetros por valor ou por referência. No primeiro caso, o
procedimento ou função recebe uma cópia dos valores passados como parâmetros, assim qualquer alteração
nesses valores não será refletida na rotina chamadora, já que as alterações afetam apenas a cópia. Para
especificar uma passagem de parâmetros por valor, utilize apenas a palavra-chave ByVal Antes de cada um
deles, conforme mostrado a seguir:
'
'
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 69
End Sub
No segundo caso, o padrão do Visual Basic, o procedimento ou função pode alterar livremente os valores dos
parâmetros. Essas alterações são refletidas nas variáveis da rotina chamadora após o retorno da
função/procedimento. É como se passássemos o endereço da variável de memória. Não é preciso nenhuma
palavra-chave para se passar um parâmetro por referência, simplesmente especifique-os na declaração da
função/procedimento:
'
'
End Sub
Utilizando essa habilidade de alteração dos valores de parâmetros, podemos criar funções que retornam mais de
um valor à rotina chamadora, ou mesmo ter procedimentos que retornam valores indiretamente. Por exemplo,
no seguinte código, a função Incr( ) atualiza os valores dos dois parâmetros e os retorna.
intParam1 = intParam1 + 1
intParam2 = intParam2 + 1
End Function
Parâmetros Opcionais
Podemos criar rotinas que recebem parâmetros opcionalmente, ou seja, sua passagem não é obrigatória. Para
fazer isso, declare todos os parâmetros com a palavra-chave Optional à frente, como no seguinte exemplo:
'
'
End Sub
Note que os parâmetros opcionais deverão obrigatoriamente ser do tipo Variant e que se você especificar um
parâmetro opcional, todos os parâmetros subsequentes a esse também precisarão ser declarados como
opcionais. Isso é demonstrado no seguinte código:
Sub ParamOpcional2 ( Optional strNome as String , strSobreNome as String , Optional intIdade as Variant,
Optional sngAltura as Variant )
'
End Sub
Como dissemos anteriormente, você precisa especificar o número de parâmetros na chamada da rotina de
acordo com a sua declaração, ou seja, se a rotina espera por cinco parâmetros, então você precisa passar cinco
parâmetros na sua chamada. No entanto, o Visual Basic possibilita que, através da palavra-chave
ParamArray, especifiquemos um número indefinido de parâmetros. A quantidade real de parâmetros
recebidos somente será estabelecida no momento da chamada da rotina. O exemplo a seguir, demonstra como
utilizar um procedimento com número indefinido de parâmetros:
lngTotal = 0
Next varElementos
CalcTotal = lngTotal
End Function
Referências
Existem centenas de funções desenvolvidas internamente no Visual Basic.
Funçõe Descrição
Abs Encontra o valor absoluto de um número.
Atn Encontra o arco tangente.
Cos Encontra o co-seno.
Exp Eleva e (2,718u2) a uma potência dada.
Fix Retorna a parte inteira de um número.
FV Valor futuro.
Hex Fornece o hexadecimal equivalente.
Int Encontra o maior valor inteiro.
Ipmt Juros pagos por tempo.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 71
IRR Taxa interna de retorno.
Log Logarítmo comum.
Mirr Taxa interna de retorno modificada.
Nper Tempo de acúmulo de uma anuidade.
Npv Valor presente líquido.
Pmt Gastos com anuidade.
PV Valor presente.
Rate Taxa de juros por período por uma anuidade.
Rnd Chama o gerar de número aleatório.
Sgn Retorna o sinal de um número.
Sin Retorna o seno.
Sln Depreciação linear.
Sqr Raiz quadrada.
Syd Soma da depreciação do ano.
Tan A tangente de um ângulo em radianos.
Timer Retorna o número de segundos desde meia-noite.
Funçõe Descrição
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 72
As funções data-hora:
Funçõe Descrição
Banco de Dados
Sempre que trabalhamos com qualquer tipo de dado devemos gravá-los em arquivos para não perdê-los quando
desligamos o computador. Chamamos esses arquivos que recebem vários dados de Banco de Dados. Iremos
abordar o padrão MDB (Microsoft DataBase) que representa a grande maioria de arquivos de Banco de Dados
para Windows existente hoje. Esse padrão é utilizado pelo Microsoft Access e o Visual Basic também o aceita.
Características
Um arquivo que contém dados irá possuir a extensão MDB. Exemplo: Se temos um banco de dados de um
controle de estoque possivelmente ele terá o nome de "Estoque.MDB". Dentro de um arquivo deste podemos
ter várias Tabelas. No exemplo de um controle de estoque, podemos ter uma tabela para Mercadorias,
Fornecedores, Clientes, etc. Todas essas tabelas ficam armazenadas dentro do arquivo MDB. Cada tabela
possui Campos onde serão armazenados os dados. Por exemplo, na tabela Mercadoria temos o campo de
Descrição da Mercadoria, Quantidade no Estoque, Valor de Venda, etc. Tudo isso representa os Campos que
estão armazenados dentro da tabela. Dentro dos campos que estão os dados que precisamos armazenar, veja a
disposição da hierarquia:
Quando estamos na fase de desenvolvimento de um programa que irá gerenciar um banco de dados, podemos
deixar já criado o Banco de Dados com suas tabelas e campos. Somente os dados é que serão inseridos pelo
usuário à medida que for trabalhando com seu programa. Para criar um banco de dados o Visual Basic traz uma
ferramenta chamada Visual Data Manager. Ele se encontra no menu Add-Ins.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 73
Visual Data Manager
O data manager (Gerenciador de Banco de Dados) é a única maneira de se construir um banco de dados
diretamente dentro do Visual Basic. Ele está disponível no menu Add-Ins, mas é, na realidade, um aplicativo
separado (VISDATA.EXE) que pode ser executado independentemente do Visual Basic. A tela principal do
Data Manager é semelhante à da figura abaixo:
O data manager permite que você olhe a estrutura de um banco de dados Microsoft Access (Jet). Ele também
pode construir um novo banco de dados em formato Jet. Isso é normalmente chamado de formato .MDB para o
nome do arquivo.
No menu File, escolha a opção New. Os bancos de dados com que o Data Manager é capaz de trabalhar serão
exibidos. Então, escolha o Microsoft Access em sua última versão.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 74
Forneça a localização e o nome da base de dados a ser criada.
Trabalhe somente na janela Database Window, ela é responsável pelo Access. Nela dê um clique com o botão
direito do mouse sobre a opção Properties e escolha o ítem New Table.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 75
Esta é a janela de criação da estrutura da tabela. As informações contidas nesta janela serão utilizadas para que
a tabela da base de dados seja construída. Forneça o nome dos campos necessários, o nome do índice da tabela
e posteriormente o botão Build the Table (Construir Tabela) será habilitado.
Para adicionar os campos necessários na tabela clique no botão Add Field (Adicionar Campo). Forneça o nome
do campo (Name), Tipo (Type) e Tamanho (Size) se necessário.
Para adicionar o índice da tabela, clique no botão Add Index (Adicionar Índice), posicionado abaixo da lista de
campos que foram adicionados à tabela.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 76
Exercício Final Proposto
Construir um simples sistema de Cadastro de Funcionários:
Feito isto, construa os seguintes objetos no formulário, utilizando-se das propriedades descritas na tabela
abaixo:
FrmCadastro -
lblcodigo Código do Funcionário
lblnome Nome do Funcionário
lblendereco Endereço Residencial
lblbairro Bairro
lblcidade Cidade
lblestado Estado
lbltelefone Telefone
lblidentidade Identidade
lblsalario Salário
dtcfunc Funcionários
txtcodigo -
txtnome -
txtendereco -
txtbairro -
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 77
txtcidade -
cmbestado SP, RJ, ES, MG
txttelefone -
txtidentidade -
txtsalario -
cmdprimeiro &Primeiro
cmdanterior An&terior
cmdproximo Pró&ximo
cmdultimo Últim&o
cmdadicionar &Adicionar
cmdremover Re&mover
cmdalterar Alt&erar
cmdimprimir &Imprimir
cmdlimpar &limpar
cmdsobre &Sobre
cmdfechar &Fechar
Após termos construído a tela, deveremos desenvolver os menus. Para isto, você deverá clicar no menu Tools e
escolher o item Menu Editor. A outra maneira é clicando sobre a terceira ícone da barra de ferramentas do
Visual Basic.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 78
ou
Nesta tela você deverá cadastrar todos os menus que seu software irá precisar e os ítens que deverão estar
contidos nesses menus.
&Registros mnuregistros -
&Adicionar mnuadicionar F2
Re&mover mnuremover F3
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 79
Alt&erar mnualterar F4
- mnutraco1 -
&Limpar mnulimpar F5
&Imprimir mnuimprimir F6
- mnutraco2 -
&Fechar mnufechar F12
&Navegar mnunavegar -
&Primeiro mnuprimeiro Ctrl+P
An&terior mnuanterior Ctrl+T
Pró&ximo mnuproximo Ctrl+X
Últim&o mnuultimo Ctrl+O
Aj&uda mnuajuda -
&Sobre o Sistema mnusobre F1
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 80
Obs: Não é necessário deixar espaços no topo do formulário para que os menus se encaixem posteriormente, o
próprio menu se encarrega de empurrar todos os objetos contidos no Form para baixo.
Feito isto, adicione mais um form no projeto. Para isto, você deverá clicar no menu Project e escolher o item
Add Form. A outra maneira é clicando sobre a segunda ícone da barra de ferramentas do Visual Basic.
ou
O resultado será:
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 81
E também na janela de projetos:
Feito isto, construa os seguintes objetos no formulário, utilizando-se das propriedades descritas na tabela
abaixo:
Image1 -
Sistema de Cadastro de
lblinformacao Funcionários produzido no
curso de Visual Basic 6.0
cmdvoltar &Voltar
Na propriedade Name do formulário digite FrmSobre e na propriedade Caption digite "Sobre o Sistema".
Após termos construído as telas, deveremos passar para a parte da programação. Para gerar a programação,
devemos clicar duas vezes no objeto desejado.
Co nt r o la nd o a p o r ta p ar ale la P r o fº Fel ip e Di a s 83