Sunteți pe pagina 1din 56

Maria Aparecida dos Reis Frana dos Santos

Introduo
Vb.Net: interface grca,
funes e arrays
Captulo
2
Quando desenvolvemos uma aplicao que faz uso de uma
interface grfca, sentimos a necessidade de manipular as imagens
em um projeto. E muitas vezes, ao desenvolver uma aplicao,
devido ao grande nmero de valores disponveis para comparao,
necessitamos trabalhar de uma forma que se obtenha melhor
desempenho.
Neste captulo, vamos trabalhar com imagens e manipular os
dados em vetores e matrizes. E para melhor interface com o
usurio, tambm apresentaremos duas formas de trabalhar com
o menu.
Na atualidade, a web proporciona o compartilhamento de
notcias, de entretenimento, dentre outras coisas e, entre elas,
do conhecimento. comum encontrarmos cdigos fornecidos
por usurios mais experientes e at mesmo cdigos fornecidos
pelo fabricante do software, a fm de agilizar o processo de
desenvolvimento. Por fm, vamos tambm conhecer o acesso
Universal Serial Bus (USB) para que voc possa personaliz-lo de
acordo com suas necessidades.
2 UNIUBE
2.1 Trabalhando com imagens
2.2 Trabalhando com funes
2.2.1 Subprocedimento
2.2.2 Funo
2.3 Variveis pblicas e privadas
2.4 Arrays
2.4.1 Arrays de uma dimenso (vetor)
2.4.2 Arrays multidimensionais (matriz)
2.5 Menus
2.5.1 MenuStrip
2.5.2 ToolStrip
2.6 USB
Esquema
Ao fnal dos estudos deste captulo, esperamos que voc seja
capaz de:
Manipular imagens em objetos.
Conhecer e utilizar as funes intrnsecas.
Criar e manipular subprocedimento, funo simples e com
passagem de parmetro.
Criar e manipular array de uma dimenso e multidimensional.
Criar e manipular MenuStrip e ToolStrip.
Conhecer classes de acesso porta USB.
Objetivos
UNIUBE 3
Trabalhando com imagens 2.1
Em muitas situaes, necessrio trabalharmos com imagens.
Considere o formulrio a seguir. A proposta desse formulrio que,
quando o usurio digitar um valor numrico, ns, como desenvolvedores,
deveremos fazer uma verifcao informando ao nosso usurio se o valor
digitado negativo ou positivo. Alm disso, tambm devemos verifcar
se o valor digitado igual a 0 (zero) e, caso afrmativo, informarmos ao
usurio que no ser possvel fazer a avaliao (Figura 1). Ento, dando
continuidade ao nosso projeto, insira um novo formulrio (Form11).
Figura 1: Formulrio para avaliar se o nmero digitado
positivo ou negativo.
Nesse formulrio, foram utilizados os objetos textBox, label e button,
trabalhados no captulo anterior, tendo sido alteradas a propriedade name
do textBox e do button para facilitar a programao e a propriedade text
do label e do button para compreenso do usurio.
Ao clicar no btnOk, estamos programando conforme nosso objetivo:
avaliar se o nmero informado positivo, negativo ou zero. Para isso,
primeiramente, inserimos as validaes, conforme se v na Figura 2 a
seguir:
4 UNIUBE
Figura 2: Validao em relao ao nmero digitado.
Ento, se o valor for vlido, vamos parte do clculo (Figura 3):
Figura 3: Validao do valor: se positivo ou negativo.
Salve o projeto e execute. Faa testes.
Agora, voltando ao design, coloque uma imagem no boto Ok, em vez
de trabalhar com a propriedade text. Para isso, limpe a propriedade text
do btnOk. Feito isso, v propriedade Image (do btnOk), como se v na
Figura 4.
UNIUBE 5
Figura 4: Propriedade Image do BtnOk.
Observe que, nessa propriedade, do lado direito, aparece um cone que
permite identifcar com qual imagem se deseja trabalhar. Clique nesse
cone, e a seguinte tela ser exibida (Figura 5):
Figura 5: Tela para confgurar a imagem com a qual vai trabalhar.
6 UNIUBE
Voc pode optar entre uma imagem que j foi utilizada em outro projeto
ou indicar o local onde a imagem a ser utilizada se encontra (primeira
opo). Vamos localizar uma imagem. Ento, clique na opo Local
resource, e, em seguida, em Import (Figura 6).
Figura 6: Tela para selecionar o arquivo da imagem.
Em seguida, localize o arquivo com a imagem que deseja apresentar
nesse boto. Clique em abrir e, em seguida em Ok. A imagem ser
exibida no btnOk (Figura 7):
Figura 7: Imagem sendo exibida no btnOk.
UNIUBE 7
A programao no precisa ser alterada. Voc pode fazer o teste
novamente e conferir. Salve e execute o projeto.
Mas pode acontecer de haver necessidade de se manter uma imagem
no formulrio, no necessariamente em um boto, ou label, ou textBox.
No caso de sistemas empresariais, muito comum manter a logomarca
da empresa em todos os formulrios e relatrios. Nesse caso, indicado
que se utilize o PictureBox.
Para manipular esse objeto necessrio, basicamente, alterar a
propriedade Image. Veja a Figura 8:
Figura 8: Confgurando propriedade Image do PictureBox.
Quando a imagem selecionada e mostrada, voc pode alterar algumas
propriedades para auxili-lo na exibio da mesma. Ao selecionar o
PictureBox, um menu ser exibido (Figura 9). Observe que a propriedade
Size Mode contm uma lista de opes de confgurao de como a
imagem ser mostrada elas sero muito teis!
8 UNIUBE
Figura 9: Confgurando propriedades do PictureBox.
Veja como cada propriedade vai interferir na visualizao da imagem:
Normal: far com que a imagem assuma o tamanho em que foi
gravada, mas permitir que voc redimensione o PictureBox, no
entanto no interferir no tamanho da imagem.
StretchImage: permitir que a imagem seja redimensionada,
conforme o tamanho do objeto PictureBox. Selecione essa opo
e redimensione o PictureBox. Observe que mesmo que distora
a imagem, ela vai ser redimensionada conforme o tamanho do
objeto (PictureBox).
AutoSize: parece com a opo Normal. Mantm o tamanho da
imagem, mas no permite que redimensione o PictureBox.
CenterImage: indicada quando se deseja redimensionar o
PictureBox, como a propriedade Normal, mas centralizando a
imagem dentro do PictureBox.
Zoom: parecido com o StretchImage mas, ao redimensionar
a imagem, ele mantm a proporo de defnio entre altura e
largura, no permitindo que a imagem fque disforme.
No nosso exemplo, vamos optar por Zoom. Redimensione o PictureBox,
e o posicione no canto superior direito (Figura 10).
Figura 10: PictureBox confgurado e posicionado.
UNIUBE 9
Insira um PictureBox e confgure uma imagem nele. Selecione cada uma
das opes e faa testes para ver o resultados.
AGORA A SUA VEZ
Mas, em algumas situaes, pode ser necessrio trabalhar com mais de
uma imagem e modifc-las em tempo de execuo. Para uma situao
assim, o ideal trabalhar com o ImageList, conforme veremos, logo
adiante.
Insira mais um formulrio no seu projeto, o Form12, conforme o design,
a seguir (Figura 11).
Figura 11: Design do Form12.
Nos botes, no vamos utilizar a propriedade Text, vamos trabalhar com
imagens.
Para este momento, voc trabalhar com o componente ImageList. Para
isso, clique no ImageList na ToolBox. Mas, ateno, ele est dentro de
Components na ToolBox. Ento, role a ToolBox para baixo at localiz-lo
(Figura 12).
10 UNIUBE
Figura 12: Localizando o ImageList.
Clique no ImageList e clique no fundo do formulrio. No aparecer
nada no formulrio mas, abaixo do formulrio, aparecer o componente
ImageList pronto para ser utilizado (Figura 13).
UNIUBE 11
Figura 13: Localizando o ImageList no formulrio.
Agora, selecione o ImageList e trabalhe com as propriedades dele.
Esse componente tem uma propriedade chamada Images (Figura 14)
e nela est escrito Collection. Isso que distingue o trabalhar com um
PictureBox e o com um ImageList. O ImageList permite que se trabalhe
com uma coleo de imagens. Ento, clique no cantinho direito dessa
propriedade (...), e selecione as imagens com as quais trabalhar nesse
formulrio.
12 UNIUBE
Figura 14: Opo Images do ImageList.
Ao clicar nessa propriedade, selecionamos as imagens que vamos utilizar
nos dois botes: Ok e Limpar. Para isso, na tela que se abriu, clique no
boto Add e selecione as imagens para os botes (Figura 15).
Figura 15: Adicionando imagens no ImageList.
Observe que as imagens inseridas so mostradas na caixa Members.
Se desejar inserir mais imagens, utilize novamente o boto Add e, se
precisar tirar uma imagem dessa caixa, utilize o boto Remove (Figura
16). Clique no boto Ok, para dar continuidade.
UNIUBE 13
Figura 16: Imagens inseridas no ImageList.
Mas, agora, necessrio fazer com que os buttons que foram criados
vejam as imagens do ImageList. Para isso, selecione os dois botes.
Os buttons e outros objetos tm uma propriedade chamada ImageList.
Quando voc clicar na propriedade ImageList, para visualizar as
opes, mostrada uma lista de todos os ImageList que existirem
nesse formulrio (Figura 16). E, ento, escolha o nosso ImageList o
ImageList1.
14 UNIUBE
Figura 16: Imagens inseridas no ImageList.
Um formulrio pode ter mais de um ImageList. Em algumas situaes, por
exemplo, pode ser necessrio organizar as imagens por categorias.
IMPORTANTE!
A partir desse momento, esses botes podero acessar qualquer uma
das imagens que esto no ImageList1.
Selecione, agora, apenas o primeiro boto que ser o boto Ok. Com ele
selecionado, vamos s propriedades. Acesse a propriedade ImageIndex
e clique no boto para abrir as opes. Observe que aparecero trs
opes. No nosso caso, esto ordenadas da seguinte forma: 0 (zero, para
o pincel que vamos utilizar para o boto Limpar); 1 (um, para a imagem
que vamos utilizar para o boto Ok); none (um quadradinho em branco,
simbolizando o vazio, para quando voc no desejar mostrar nenhuma
imagem, como na Figura 17). Escolha a opo de imagem que voc inseriu
para o boto Ok, e depois repita o procedimento para o boto Limpar.
UNIUBE 15
Figura 17: Opes do ImageIndex.
O valor numrico que representa o vazio (none) opo para no mostrar
nenhuma imagem, o -1.
PARADA OBRIGATRIA
Salve o projeto e execute para ver o resultado.
Outra forma informar esses valores para confgurar o ImageIndex em
tempo de execuo e no aqui no design acessando as propriedades.
No nosso caso, desejamos que, assim que o formulrio for aberto, esses
botes j recebam as imagens para identifcao dos botes. Ento,
vamos utilizar outro evento: o evento Load, do formulrio. Ou seja, o
momento em que o formulrio for carregado para a memria.
16 UNIUBE
Para que voc veja o resultado, v propriedade ImageIndex dos dois
botes, e escolha a opo None para no exibir nenhuma imagem.
IMPORTANTE!
No design do nosso formulrio, d duplo clique no seu fundo e,
imediatamente, a janela onde j programamos o evento Click de um
button exibida, mas agora mostrando-nos o evento Load do Form12
(Figura 18).
Figura 18: Evento Load do Form12.
Vamos program-lo! Dentro desse evento, vamos, primeiramente,
informar ao boto btnOk que a sua propriedade ImageIndex receber o
valor 1 no nosso caso, nesse ndice que se encontra a imagem que
desejo (Figura 19). Faa o mesmo para o btnLimpar informando o seu
respectivo ndice.
Figura 19: Informando o ImageIndex dos botes.
Agora, falta programar as aes dos botes. No caso do boto Ok, ele
meramente ilustrativo, visto que ainda no estamos trabalhando com banco
de dados e salvando as informaes. Mas no caso do Limpar, devemos
limpar os dois textBoxs e mover o foco para o txtNome (Figura 20).
UNIUBE 17
Figura 20: Programao do evento Click do boto btnLimpar.
Salve o projeto, execute e faa testes (Figura 21).
Figura 21: Form12 em execuo.
Se desejar redimensionar as imagens que esto em um ImageList, selecione
o ImageList e acesse a propriedade Size. Modifque a altura e a largura que
esto informadas. Mas, fque atento para no distorcer as imagens, pois
essa confgurao ser feita em todas as imagens do ImageList.
IMPORTANTE!
Trabalhando com funes 2.2
O Vb.Net possui vrias funes com o objetivo de facilitar a vida do
desenvolvedor.
Existem muitas funes intrnsecas que permitem realizar, alm de
converses entre tipos de variveis, clculos matemticos, manipulao
de strings, dentre outras aes. Vamos citar as mais usveis, as que
manipulam strings (Quadro 1).
18 UNIUBE
Quadro 1: Principais funes de manipulao de strings.
Funo Descrio Exemplo
Left
Retorna um nmero
defnido de caracteres
esquerda de uma
determinada string.
a= Left("Universidade
de Uberaba",12)
a= "Universidade"
Right
Retorna um nmero
defnido de caracteres
direita de uma
determinada string.
a= Rigth("Universidade
de Uberaba",7)
a= "Uberaba"
Mid
Retorna uma string
contendo um nmero
defnido de caracteres,
por meio dessa funo.
Sintaxe: Mid(String, incio,
comprimento)
a= Mid("Universidade
de Uberaba", 14, 2)
a= "de"
Len
Retorna o comprimento
(tamanho) de uma
string (na contagem
do tamanho, so
considerados inclusive os
espaos).
a = len("Universidade
de Uberaba")
a = 23
Trim
Remove todos os
espaos que existem
dentro de uma string.
a= Trim("Universidade
de Uberaba)
a="UniversidadedeUberaba
Lcase
Converte todos os
caracteres de uma
string para caracteres
minsculos.
a= Lcase("Uberaba") a="uberaba"
Ucase
Converte todos os
caracteres de uma
string para caracteres
maisculos.
a= Ucase("Uberaba") a="UBERABA"
Tambm h duas funes que nos retornam valores em relao hora
e data do sistema (Quadro 2):
Quadro 2: Principais funes de manipulao de data e hora do sistema.
Funo Descrio Exemplo
Today
Retorna
data e
hora atual.
a=Today() a= "10/10/2010"
Now
Retorna
data atual
no formato:
0:00:00 A.M.
a=Now()
a= "10/10/2010
12:10:45"
Vamos inserir mais um formulrio no nosso projeto de estudo, o Form13,
para que possamos testar subprocedimentos e funes.
UNIUBE 19
2.2.1 Subprocedimento
Um Subprocedimento uma srie de declaraes efetuadas por meio
do Sub e do End Sub (Figura 22).
Figura 22: Declarao de uma Sub em um
formulrio.
Ateno, um Subprocedimento no retorna um valor ao cdigo de
chamada!
IMPORTANTE!
O Sub teste() um subprocedimento. O Subprocedimento
encarregado de realizar uma tarefa, ou mais tarefas, e depois retornar ao
cdigo de onde foi chamado. No nosso exemplo, criamos um Sub teste
para que seja mostrada uma mensagem ateno para a mensagem
(Figura 23).
Figura 23: Sub teste com linha de comando a ser executada.
20 UNIUBE
Quando um procedimento chamado, na sequncia, suas linhas de
comando so executadas e apenas fnalizado quando encontra, na
execuo do cdigo, o primeiro End Sub, Exit Sub, ou o comando
Return. No caso do exemplo anterior (Figura 23), o Sub teste()
fnalizado no End Sub.
O padro que todos os Subprocedimentos sejam pblicos, o que
signifca que voc pode cham-lo de qualquer lugar no seu projeto, de
onde voc o defniu.
No Form13, vamos criar trs botes como se v na Figura 24 a seguir.
Figura 24: Designer do Form13.
Ao clicar no Button1, vamos solicitar que o Subteste() seja executado
(Figura 25):
Figura 25: Linha de comando do evento Click do Button1.
UNIUBE 21
Salve o projeto, e vamos execut-lo (Figura 26).
Figura 26: Form13 em execuo ao clicar no Button1.
Agora, vamos programar para que todos os botes, quando cada um for
clicado, exibam a mesma mensagem (Figura 27):
Figura 27: Linha de comando do evento Click do Button1, Button2 e Button3.
Nesse exemplo, a Subteste() possui apenas uma linha de comando e,
por isso, voc pode deduzir que seria a mesma coisa se voc repetisse
o comando MsgBox para todos os botes. Mas imagine uma Sub
extensa em que fosse necessrio fazer uma manuteno. Voc teria
que se preocupar em manter todas as linhas de comando dos botes
22 UNIUBE
iguais, para que continuassem a ter o mesmo comportamento. Quando
utilizamos uma Sub, fazemos a manuteno apenas uma vez nas
Subtestes - pois, nos botes, apenas a Subteste chamada.
2.2.2 Funo
Um procedimento pode ser uma funo Function. Uma Function
idntica a um Subprocedimento; o que nos faz optar por um ou outra
que a funo utilizada caso seja necessrio retornar valores para o
mdulo.
Vamos fazer algumas pequenas modifcaes no design do Form13
(Figura 28). Vamos inserir dois labels para identifcar o contedo dos
textBoxs, e dois textBoxs. O primeiro textBox vai receber um valor do
usurio, e, no segundo, vamos calcular o dobro desse nmero informado.
Figura 28: Form13 aps modifcaes no design.
No nosso exemplo, ainda no Form13, criamos uma function NovoTeste()
que far o clculo do dobro do valor informado pelo usurio no txtIdade.
text (Figura 29).
UNIUBE 23
Figura 29: Function NovoTeste().
Mas, desta vez, diferente. Nesse exemplo, queremos que isso acontea
ao clicar no Button1, mas o clculo deve estar na Novo Teste(). Ento,
ao chamar a function NovoTeste(), devemos informar o valor que deve
ser usado no clculo na function (Figura 30). Esse valor enviado como
um parmetro da funo.
Figura 30: O envio do valor do txtIdade para a funo NovoTeste().
Mas necessrio que a funo NovoTeste() armazene o valor que foi
enviado, nesse caso o que est na propriedade Text do TxtIdade, em
algum lugar. Ento, declaramos um argumento para que seja manipulado
no decorrer da funo (Figura 31). Observe que o argumento declarado
como uma varivel, informando o seu tipo de dado. Para essa declarao
no utilizamos o Dim, mas ByVal ou ByRef.
24 UNIUBE
Figura 31: Utilizao do ByVal.
Agora, possvel armazenar o resultado do dobro encontrado na varivel
da funo, dobro. Essa varivel declarada da mesma forma que j
havamos fazendo, utilizando o comando Dim.
Quando utilizar ByVal e ByRef ?
Quando se utiliza ByVal feita uma cpia do valor do parmetro. O Vb.NET
passa uma cpia do valor (que est no text do textBox) para a rotina. Desta
forma a rotina no pode alterar o valor do parmetro em sua origem.
Retorne ao exemplo da Figura 31.
Observe que no exemplo, a varivel var que est na funo NovoTeste()
fez uma operao que modifcou o valor de var (adicionou 1 no valor). Mas
o valor de origem, que est no text do txtNum, permaneceu o mesmo no
foi adicionado 1 no seu valor.
Mas se for necessrio que essa modifcao de valor seja mostrada, ento,
devemos usar a chave ByRef.
Veja o mesmo exemplo utilizando o ByRef:
IMPORTANTE!
UNIUBE 25
Observe que, agora, a varivel var que est na funo NovoTeste() fez uma
operao que modifcou o valor de var (adicionou 1 no valor) da mesma
forma. Mas o valor de origem, que est no text do txtNum, foi modifcado
foi adicionado 1 no seu valor.
At aqui, enviamos um valor para a funo, e fzemos clculo com esse
valor.
Mas, e se for necessrio retornar esse valor para o lugar de
onde foi chamada?
Para isso, vamos dar o comando Return na funo NovoTeste(),
retornando ao cdigo de origem com o resultado do clculo (Figura 32):
Figura 32: Retorno da funo com o resultado do clculo que est
armazenado na varivel dobro.
26 UNIUBE
Observe que, da forma que estamos chamando a funo, o valor retorna,
mas no armazenado em lugar algum. Para que voc possa manipular
esse valor retornado, uma varivel pode armazenar esse valor, ou voc
pode atribuir diretamente a um objeto (Figura 33).
Figura 33: Retorno da funo com o resultado do clculo que est armazenado na varivel dobro
para ser armazenada em uma varivel ou exibida em um textBox.
Foi utilizada uma linha de comentrio, com uma aspa simples () antes da
linha, para digitar um comentrio.
SAIBA MAIS
UNIUBE 27
As variveis podem ser pblicas ou privadas (tambm denominadas
como locais).
O comando que utilizamos para declarar varivel Dim. At agora,
declaramos variveis privadas, pois declaramos sempre dentro de um
escopo (Figura 34).
Variveis pblicas e privadas
2.3
Desta forma, apenas a Sub Button1_Click pode ver a varivel result,
pois a linha de declarao est dentro dessa Sub. Assim, todo o projeto
ver essa varivel, permitindo que se trabalhe com essa varivel em
qualquer Sub ou Function (Figura 35):
Figura 34: Varivel privada (local).
28 UNIUBE
Figura 35: Varivel pblica.
O array pode ser de uma dimenso (tambm conhecido como vetor) ou
multidimensional (tambm conhecido como matriz).
2.4.1 Arrays de uma dimenso (vetor)
Acrescentaremos mais um formulrio ao nosso projeto, o Form14.
Arrays 2.4
UNIUBE 29
Considere que voc precise atribuir, em trs variveis, o nome de
trs pessoas que constam de uma lista. Considerando que ainda no
apresentamos o conceito de Array, voc declararia trs variveis, e
atribuiria um nome para cada, conforme a Figura 36, a seguir:
Figura 36: Alimentando variveis distintas.
Mas podemos armazenar esses valores em apenas uma varivel do tipo
array.
Array uma lista de valores na qual esses valores so identifcados por
um nome e um ndice atribudo ao valor especfco no Array. Cada valor
que compe um array chamado de elemento.
Para declarar um array, tambm conhecido como vetor, utilizamos
tambm o comando Dim, mas com uma modifcao. Agora, quando
nomearmos o vetor, ser necessrio informar quantas posies ele ter.
Cada posio do vetor identifcada por um nmero que comea em 0
(zero). Ento, se desejar criar um vetor Vet de 3 posies, a defnio
ser semelhante demonstrada na Figura 37, a seguir:
Figura 37: Declarao de vetor de
3 posies.
30 UNIUBE
Sempre que uma matriz, ou vetor, se ela foi declarada de um tipo de dado
numrico, todas as suas posies recebem 0 (zero). E se ela foi declarada
de um tipo caractere, todas as suas posies recebem (vazio).
IMPORTANTE!
Quando se defne um array obrigatoriamente todos os
elementos sero do mesmo tipo de dado.
Simbolicamente, pode-se ilustrar o vetor Vet(2) da seguinte forma (Figura 38):
Figura 38: Declarao de
vetor de 3 posies.
Para melhor auxiliar na compreenso, colocamos abaixo de cada posio
do vetor o seu respectivo ndice. Observe que a numerao dos ndices
comeou em 0 (zero), e o total de 3 posies a disposio do ndice Vet()
para dados do tipo String, pois o Vet() foi defnido do tipo String.
Agora, na Figura 39, vamos alimentar o vetor com os nomes com que
alimentamos as trs variveis na Figura 36 anterior:
Figura 39: Alimentando o vetor Vet().
No Form14 que acrescentamos, vamos gerar uma lista em um textBox.
Nesse mesmo formulrio o usurio informar o nmero fnal da lista a ser
gerada. Veja o design deste formulrio na Figura 40 a seguir:
0 1 2
UNIUBE 31
Figura 40: Design do Form14.
Com o objetivo de que um textBox fque com mais de uma linha para
edio, selecione o textBox e acesse a propriedade Multline. O padro
ser mostrado o valor False. Altere para True. V ao textBox e redimensione-o
com a altura que se fzer necessria.
SAIBA MAIS
Nessa altura, o formulrio est com o design pronto. Vamos
programao do boto Gerar Lista.
Caro aluno, nesse exerccio, para no nos desviarmos do nosso
objetivo, focaremos primeiramente o clculo e, em seguida,
faremos as validaes.
Para que faamos a lista de nmeros que ser de 0 (zero) at o nmero
que o usurio determinar, precisaremos de um vetor. No podemos
defni-lo antes de identifcar o nmero fnal que o usurio informou.
Ento, necessitamos tambm de utilizar uma varivel para armazenar
esse nmero informado e, em seguida, atribuir a essa varivel o nmero
informado (Figura 41):
32 UNIUBE
Figura 41: Defnio e atribuio de valor na varivel que
armazena o nmero limite informado pelo usurio.
A partir do momento em que temos o nmero limite do vetor informado
pelo usurio, podemos criar o vetor (Figura 42). Mas, lembre-se de que
o ndice do vetor iniciado em 0 (zero), consequentemente precisamos
subtrair 1 (um) do nmero informado pelo usurio:
Figura 42: Defnio do vetor.
Perceba que podemos utilizar um valor absoluto para defnir o tamanho
do vetor, ou uma varivel poder fazer esse papel.
E para alimentar o vetor?
A princpio, considerando que o usurio informou o nmero 5, faramos
coforme demonstrado na Figura 43:
UNIUBE 33
Figura 43: Alimentando o vetor.
Mas, observe bem..., o ndice do vetor uma sequncia numrica! E,
claro, a lista gerada tambm, pois o nosso objetivo gerar essa lista.
Logo, se uma sequncia numrica, tem uma estrutura de controle que
pode ser til nessa situao. Voc se lembra das estruturas de repetio
While e For, que vimos no Captulo 1?
Por considerar que se trata de uma sequncia, a estrutura For ser
escolhida. Mas poderamos utilizar o While que tambm daria certo. J
discutimos sobre isso no Captulo 1.
Para utilizarmos a For, ser necessrio criar uma varivel para ser
o contador dessa estrutura. E como a lista gerada tambm uma
sequncia, utilizaremos o mesmo contador, mas acrescentando 1 (um),
pois o usurio no sabe que o ndice de um vetor se inicia em 0 (zero)!
(Figura 44)
34 UNIUBE
Figura 44: Alimentando o vetor, com estrutura de
repetio.
A seguir, vamos programar para mostrar o resultado no textBox, como
nos exemplos que fzemos no Captulo 1, com concatenao (Figura 45).
Figura 45: Exibindo os valores em um textBox.
2.4.2 Arrays multidimensionais (matriz)
O array com mais de uma dimenso representado por uma matriz com
linhas e colunas.
Para declarar um array multidimensional, conhecido como matriz,
utilizamos tambm o comando Dim, mas com uma modifcao. Nesta
UNIUBE 35
situao, quando dermos o nome da matriz, ser necessrio informar
quantas posies o array ter linhas e colunas, como na Figura 46.
Figura 46: Declarao da matriz 2 x 4.
Cada posio da matriz identifcada com a posio da linha e da coluna.
E o ndice na matriz, tambm comea em 0 (zero), como no vetor. Ento,
se voc criar uma matriz Mat de 2 por 4, signifca uma matriz do tipo 2 x
4 2 linhas e 4 colunas, como representado na Figura 47 a seguir.
0 1 2 3
Figura 47: Representao
grfca da matriz 2 x 4.
0
1
Quando se defne um array multidimensional (matriz)
obrigatoriamente todos os elementos sero do mesmo tipo de
dado, como no array unidimensional (vetor).
Insira mais um formulrio no nosso projeto Form15. Vamos fazer um
array multidimensional. Nosso objetivo fazer um formulrio em que o
usurio informe 3 valores, que sero armazenados na primeira linha da
matriz. E depois, geraremos o dobro desses valores na segunda linha
da matriz. Ento, nossa matriz ser de 2x3. Mostraremos os valores
da matriz em dois textBoxs um para a primeira linha, e outro para a
segunda linha. Para facilitar, criaremos um boto ao lado do textBox onde
o usurio ir informar o nmero a ser inserido na primeira linha da matriz.
Nessa altura, o design do formulrio fca como visualizado na Figura 48:
36 UNIUBE
Figura 48: Design do Form15.
Nosso prximo passo a programao do boto para inserir o nmero da
matriz. Nesse formulrio, teremos um detalhe a mais para nos preocupar.
Precisamos enxergar a matriz, tanto no boto Ok, quanto no boto
Gerar linha 2. No boto Ok, vamos inserir nmeros na matriz aliment-
la, e no boto Gerar linha 2, manipularemos a matriz, lendo a primeira
linha e gerando os valores da segunda, com o dobro dos valores da
primeira linha.
Ento, se declararmos a matriz dentro do Private Sub btnOk_Click,
apenas essa Sub vai enxergar tal matriz ou qualquer varivel que seja
declarada l. Para resolver nosso problema, vamos declarar a nossa
matriz como pblica para esse projeto. A declarao deve ser feita fora
da Sub (Figura 49).
Figura 49: Declarao de matriz pblica.
UNIUBE 37
Voltemos a Sub btnOk_Click. Antes de alimentar a varivel Num com o
nmero informado, devemos fazer as validaes (Figura 50).
Figura 50: Validaes do txtNum, onde o usurio deve informar o valor a ser
inserido na matriz.
Para esse exerccio, no vamos permitir que o usurio insira o nmero
0 (zero). Assim, faz-se necessrio criar mais uma validao (Figura 51).
Figura 51: Validao para no aceitar nmero menor ou igual a zero.
38 UNIUBE
Se for necessrio considerar o 0 (zero) um valor vlido, voc pode trabalhar
com uma varivel contador pblica e, sempre que clicar no boto Ok, voc
incrementar a varivel com 1 (cont = cont + 1).
IMPORTANTE!
Vejamos como fca o mapa da matriz, para identifcarmos o ndice de
cada posio (Figura 52):
(0,0) (0,1) (0,2)
(1,0) (1,1) (1,2)
Figura 52: Identifcando os
ndices da matriz gerada.
Observe que, na primeira linha, a identifcao da linha sempre a
mesma 0 (zero), e o valor que varia o que identifca a coluna. Ento,
podemos utilizar uma estrutura de repetio para nos auxiliar a inserir o
valor na matriz.
Antes de inserirmos o valor na matriz, vamos checar se aquela posio
0 (zero); se verdadeiro, inseriremos o valor e sairemos imediatamente
da Sub utilizando o Exit For. Se no, passemos para a prxima posio
(Figura 53):
UNIUBE 39
Figura 53: Alimentando a matriz, linha 0 (zero), com a estrutura de repetio FOR.
Ao encontrarmos a primeira posio que contm o valor 0 (zero), inserimos o
valor e fnalizamos a Sub, pois se continuarmos, como todas as posio so
inicializadas com 0 (zero), por se tratar de dado numrico, todas as posies
receberiam o primeiro valor que fosse inserido na matriz!
IMPORTANTE!
Vamos programao do boto Gerar linha 2. Basta ler o valor na linha
0 (zero) e na linha 1(um) atribuir o valor dobrado (Figura 54).
40 UNIUBE
Figura 54: Alimentando a matriz, linha 1 (um), com a estrutura de repetio FOR.
Poderamos ter implementado o boto Ok de modo que, ao inserirmos o
valor na linha 0, imediatamente j inseriramos o dobro na linha 1. Bastava
acrescentar abaixo do Mat(0,cont)=num, Mat(1,cont)=num *2.
IMPORTANTE!
No Captulo 1, voc aprendeu que, ao criar um novo formulrio em um
projeto, devem-se acessar as propriedades do projeto para modifcar o
Start Form, para selecionar esse formulrio a ser aberto ao compilar e
executar o projeto (reveja o tpico 1.3.2)
Nesse tpico, vamos aprender a utilizar duas formas de Menu.
Na barra de ferramentas (toolBox) h uma categoria chamada Menus &
Toolbars. Vamos explorar menuStrip e toolStrip.
2.5.1 MenuStrip
Precisaremos de um novo formulrio, o Form16.
Selecione o menuStrip na toolBox, e clique no fundo do formulrio
(Figura 55).
Menus
2.5
UNIUBE 41
Figura 55: MenuStrip na ToolBox.
Ao clicar, o seu formulrio ter um objeto na parte inferior, onde voc
pode confgurar seus atributos. E no formulrio, aparecer uma barra
com um espao com o texto Type Here (Figura 56).
42 UNIUBE
Figura 56: Inserindo um menuStrip no formulrio.
Na opo Type Here, clique para ir construindo o menu deste projeto. Ao
clicar e comear a digitar a nossa primeira opo de menu, Formulrios,
observe que ao lado dessa opo aparecer outro Type Here, e
abaixo tambm. Ento, vamos construindo o nosso menu. Abaixo de
Formulrios, coloque a opo Exemplo RadioButton (Figura 57).
UNIUBE 43
Figura 57: Construindo o menu opo Formulrios.
Voc poder criar uma opo para cada formulrio j criado. Use sua
criatividade para organizar o seu menu.
Quando seu menu estiver todo organizado, hora de program-lo.
Ento, ainda no modo design do formulrio, d duplo clique na opo de
formulrio que vamos programar para que seja aberto quando o usurio
clicar (Figura 58).
44 UNIUBE
Figura 58: Programar opo de menu.
Desta forma, a pgina de programao exibida. Recapitulando, quando
o usurio vir essa opo no menu, e clicar nela, o formulrio indicado
dever ser aberto. Ento, no evento, ao clicar nesse item do menu,
vamos exibir o Form8 esse o nome do nosso formulrio que tem um
exemplo de como se trabalha com RadioButton (Figura 59).
Figura 59: Abrir formulrio.
H duas opes para exibir ou abrir um formulrio: Show e ShowDialog.
O Show exibe o formulrio e o usurio fca livre para manipular todo e
qualquer formulrio do projeto. O ShowDialog exibe o formulrio, mas o
usurio s poder manipular outro formulrio se esse que foi aberto for
fechado.
UNIUBE 45
Faa o teste com uma opo de cada vez para que possa observar o
comportamento dos formulrios.
Particularmente, mais seguro trabalhar com o ShowDialog, pois o
usurio no fca com um processo aberto dando incio a outro. Ento,
enquanto estivermos trabalhando juntos, vamos trabalhar com o
ShowDialog.
Salve o projeto e execute-o (Figura 60).
Figura 60: Menu chamando Form8 com ShowDialog.
Um recurso que podemos utilizar so as confguraes de atalho para
o teclado no menu. No formulrio, no modo Design, clique na opo
Formulrio, e coloque um & na frente de Formulrio. A letra F fcar
sublinhada, e o usurio pode clicar na opo ou utilizar as teclas Alt+F
para abrir essa opo do menu (Figura 61).
46 UNIUBE
Figura 61: Menu chamando Form8 com ShowDialog.
Salve o projeto e execute-o.
2.5.2 ToolStrip
Vamos adicionar um novo formulrio, o Form17.
Selecione o ToolStrip na ToolBox, e clique no fundo do formulrio (Figura
62).
UNIUBE 47
Figura 62: Inserindo um ToolStrip no formulrio.
Essa opo de menu muito parecida com o MenuStrip, mas o ToolStrip
tem a opo de se fazer uma barra com imagens e botes (barra de
ferramenta de acesso rpido) para tambm serem programados.
Essa opo de menu , geralmente, utilizada quando j se tem a conexo
com um banco de dados.
SAIBA MAIS
Vamos programar um boto para abrir o formulrio com exemplo de
RadioButton, como fzemos no formulrio anterior (Figura 63).
48 UNIUBE
Figura 63: Inserindo um button no ToolStrip.
Com o boto inserido, vamos confgurar suas propriedades antes de
program-lo. Ento, com o boto selecionado, v caixa de propriedades
e selecione a opo Image j conhecemos essa propriedade no
Captulo 1. Agora, basta clicar em Import e localizar a imagem que deseja
exibir nesse button (Figura 64).
UNIUBE 49
Figura 64: Inserindo fgura em um button no ToolStrip.
Como fzemos no MenuStrip, basta dar duplo clique no button j com a
imagem, e a janela de programao ser exibida. A linha de programao
a mesma utilizando o comando Show ou ShowDialog para exibir o
Form8 (Figura 65).
Figura 65: Abrir formulrio.
Volte para o design do formulrio e acrescente a opo Sair com um
button tambm, para que, quando o usurio clicar nessa opo, o projeto
seja encerrado. Acrescente a imagem, e, em seguida, d duplo clique no
boto. O comando para que o projeto disponibilize a memria utilizada
o Dispose (Figura 66).
50 UNIUBE
Figura 66: Disponibilizar memria ocupada pelo projeto.
Existe uma grande discusso sobre qual melhor opo: Dispose ou Close?
Ento, sugiro que leia o artigo da DEVMEDIA no link, a seguir, em que se
explica a diferena de performance e escalabilidade: http://www.devmedia.
com.br/dicas-net-dispose-ou-nao-dispose/2586
PESQUISANDO NA WEB
O Vb.Net compatvel com o modelo de programao COM e
mais conhecido por incorporar componentes de interface de usurio
pr-defnidos que permitem aos programadores criar interfaces grfcas
de usurio (GUI) para programas em uma quantidade muito menor de
tempo. Voc tambm pode confgurar as informaes da porta USB,
utilizando o acesso do Visual Basic ao modelo de programao COM.
Hoje, encontram-se disponveis, na internet, as classes de acesso
USB prontas para download, as quais voc apenas programa para que
se tenha o comportamento desejado para o programa ao ativar e ao
desativar a USB.
USB
2.6
UNIUBE 51
Para utilizar a classe de acesso USB que est na Biblioteca do
componente, crie um novo formulrio no nosso projeto Form18.
Caro(a) aluno(a),
esse cdigo de acesso unidade USB estar disponvel na Biblioteca do
componente em arquivo formatado pdf, intitulado de USB, para que possa
copiar as linhas e utiliz-las no seu projeto para conectar a porta USB.
Observe que as linhas de programao esto referenciando ao Form18 do
nosso projeto.
PARADA OBRIGATRIA
Insira a classe no seu formulrio e faa as adequaes necessrias para
o projeto que estiver realizando.
Observe nas linhas de programao desta classe uma linha com
comentrio no momento em que a porta USB acessada. Nesse
momento, voc pode utiliz-la conforme suas necessidades.
Mais abaixo, nas linhas de cdigo, voc encontrar outra linha com
comentrio no momento em que a porta USB desativada. Assim como
no momento anterior (ao ativ-la), voc pode utiliz-la conforme suas
necessidades.
Salve o projeto.
DEVMEDIA. Disponvel em: <http://www.devmedia.com.br/dicas-net-dispose-ou-
nao-dispose/2586>. Acesso em: jan.2014.
Microsoft Library. Disponvel em: <http://msdn.microsoft.com/pt-br/library/>.
Acesso em: jan.2014.
Referncias
52 UNIUBE
Atividades
Atividade 01
Observe o trecho de cdigo:
Considerando o trecho de cdigo acima desenvolvido em vb.net, julgue
os itens seguintes.
I. Para a estrutura de repetio For utilizada no cdigo, faltou a linha de
programao para incrementar a varivel cont.
II. O vetor vet ser alimentado apenas com nmeros pares.
III. A varivel de incremento cont apenas ser incrementada se o resto
da diviso de cont por 2 for 0 (zero).
Esto corretos os itens:
a) I, II e III.
b) II e III apenas.
c) III apenas
d) I e III apenas.
e) II apenas.
UNIUBE 53
Atividade 02
Suponha o cdigo, a seguir, desenvolvido em vb.net:
Qual o resultado fnal da varivel "vetor" ( trata-se de um vetor) a partir
da entrada (5,4,3,2,8)?
a) (5,2,3,4,8)
b) (4,3,2,1,7)
c) (5,3,2,1,7)
d) (6,5,4,3,9)
e) (8,2,3,4,5)
54 UNIUBE
Atividade 03
Analise o cdigo, a seguir, desenvolvido em vb.net:
A varivel Resul, ao fnal da execuo, ter o resultado de:
a) 1,2,1,2,2
b) 1,2,2,1,2
c) 1,2,1,2,1
d) 2,2,1,1,2
e) 2,1,2,1,2
Atividade 04
Julgue as linhas de comando em vb.net apresentadas a seguir.
I. For cont = 10 To 1
II. cont = cont Mod 2
III. a(4) = 3
IV. Dim a integer

As expresses que possuem comandos corretos so:
a) I e II apenas.
b) II e IV apenas.
UNIUBE 55
c) III e IV apenas.
d) II e III apenas.
e) I e IV apenas.
Atividade 05
Analise o cdigo, a seguir, desenvolvido em vb.net:
O vetor vet, ao fnal da execuo, ter o resultado de:
a) 2,1,2,1,2
b) 1,2,2,1,2
c) 1,2,1,2,1
d) 2,2,1,1,2
e) 1,2,1,2,2
56 UNIUBE
Atividade 01
Letra e.
Atividade 02
Letra a.
Atividade 03
Letra c.
Atividade 04
Letra e.
Atividade 05
Letra c.
Referencial de Respostas

S-ar putea să vă placă și