Escolar Documentos
Profissional Documentos
Cultura Documentos
MENUS
O Visual Basic disponibiliza uma excelente ferramenta para projeto de menus: o Menu
Design Window, ou Janela de Projeto de Menus, que pode ser acessada com Ctrl-E ou por meio
do boto direito do mouse. Projetar um menu em VB no mais difcil do que trabalhar com outros
controles. Entretanto, alguns cuidados so necessrios para evitar conflitos entre itens de menu. A
Janela de Projeto de Menus mostrada na Figura 10 a seguir.
Checked: se for true, uma marca de verificao aparecer ao lado do item de menu;
Enabled: se for true, o item de menu estar disponvel;
Visible: se for true, o item estar visvel.
A maneira mais fcil de trabalhar com menus construir Arrays de Menus, ou seja, os
diferentes sub-itens de um mesmo menu sero diferenciados apenas por um ndice, tendo o
mesmo nome. A tabela 7 abaixo exemplifica esta construo para o caso de um menu chamado
Arquivo.
Tabela 7
O item principal do menu no tem ndice. Os sub-itens so diferenciados por ndices, tendo
o mesmo nome e sendo indentados em relao ao item principal. O Visual Basic admite at cinco
sub-itens, mas este limite raramente usado. A identao dois itens feita por meio das setas da
Janela de Projeto de Menus. A barra de separao criada com um hfen e no admite cdigo
associado. O ndice, entretanto, obrigatrio.
Podemos usar menus para implementar uma verso aperfeioada do nosso bloco de
notas. Em vez de usarmos botes de comando, usaremos itens de menus para realizar as
operaes. Inicie um novo projeto, pressione Ctrl-E para entrar na Janela de Projeto de Menus e
adicione os itens de menu conforme a tabela abaixo.
Tabela 8
Aps terminar o menu, mude a legenda do formulrio para Editor. O resultado final deve
ser semelhante ao da Figura 11.
Figura 11 - Um editor de textos baseado em menus
O menu Editar contm basicamente o mesmo cdigo que, antes, estava nos botes do
bloco de notas. Quando um menu construdo a partir de arrays, a maneira mais fcil de escrever
o cdigo usando o comando Select ...Case. Para iniciar a programao, insira uma caixa de
texto do formulrio, renomeando-a para txtEditor e abra a janela de cdigo do menu
mnuEditarItem, escrevendo as seguintes linhas:
For Contador = 0 To 7
mnuFontesItem(Contador).Checked = False
Next loop_index
mnuFontesItem(Contador).Checked = True
End Sub
Inicialmente, o comando Select ... Case usado para atribuir propriedade FontName da
caixa de textos a fonte escolhida pelo usurio. Depois, um pequeno lao For ... Next remove as
marcas de verificao de todos os sete itens de menu (porque no sabemos qual delas est ativa).
Finalmente, colocamos uma marca de verificao no item de menu escolhido atualmente. Est no
a nica maneira de trabalhar com marcas de verificao e algum poderia argumentar que no
a mais rpida (por causa do lao For .. Next). Sinceramente, para computadores superiores a um
Pentium 90 isto no faz diferena ... .Entretanto, verdade que poderamos memorizar o item
escolhido anteriormente, fazendo uso de uma varivel do tipo Integer, e ento remover a barra de
verificao somente deste item. Esta pequena modificao fica como lio de casa.
Modal: a janela deve ser fechada (escondida ou descarregada) antes que o aplicativo
possa continuar a execuo.
No Modal: a execuo do aplicativo continua, mesmo com a janela aberta.
Janelas modais so bastante comuns em situaes em que devemos evitar que o usurio
faa qualquer coisa em outras janelas enquanto uma operao importante est sendo realizada.
Por exemplo, quando voc escolhe o menu File | Save File As..., no VB 4.0, a caixa de dilogo
aberta modalmente na tela. Se o usurio tentar dar um clique fora da caixa de dilogo, um som de
erro ser emitido. Embora caixas de dilogo modais tenham suas vantagens, algumas vezes voc
no poder us-las, pois existem situaes em que devemos ter mais de uma janela aberta ao
mesmo tempo. O ambiente de trabalho do VB um exemplo de vrias janelas no modais abertas
ao mesmo tempo, possibilitando que o usurio alterne entre elas sem ter de fech-las antes.
Os mtodos e comandos a seguir podem ser usados para carregar e descarregar caixas
de dilogo.
Mtodo Hide: esconde (apaga da tela) uma janela, mas no a descarrega da memria.
Sintaxe: Nome_do_Form.Hide.
Vale salientar que formulrios que tenham sido apenas escondidos, mas no
descarregados, continuaro presentes, ocupando memria. Entretanto, podero ser acessados
muito mais rapidamente da prxima vez em que forem necessrios, haja vista que no precisaro
ser recuperados do disco.
BorderStyle
Default: O boto que tiver Default = true ser acionado quando o usurio pressionar
Enter;
Cancel: O boto que tiver Cancel = true ser acionado quando o usurio pressionar
Esc.
A JANELA ABRIR ARQUIVO
Para iniciar uma nova janela, escolha o menu Insert | Form, renomeando o formulrio para
frmAbrir. Desenhe no formulrio os seguintes controle: dois Botes de Comando, trs Rtulos, uma
Caixa de Lista de Arquivos (FileListBox), uma Caixa de Lista de Diretrios (DirListBox) e uma Caixa
de Lista de Unidades (DriveListBox). As funes destes trs ltimos controles so descritas a
seguir:
Caixa de Lista de Arquivos: este controle localiza e lista, em tempo de execuo, os arquivos
do diretrio especificado pela propriedade Path. O evento padro deste controle Click;
Caixa de Lista de Unidades: possibilita que o usurio selecione uma unidade (drive) em tempo
de execuo. O evento padro Change.
Figura 13
Tudo comea quando o usurio seleciona uma unidade em Drive1, gerando um evento
change. Devemos capturar este evento e atribuir o caminho (Path) selecionado propriedade Path
da caixa de lista de diretrios (Dir1). A atribuio desta propriedade gerar um evento change em
Dir1. Novamente, este evento ser capturado para repassar o caminho correto para File1.
Para implementar esta automao na janela Abrir Arquivo, escreva os seguintes trechos de
cdigo nos objetos correspondentes:
A procedure para o boto cmdOk um pouco mais complicada, mas de utlizao geral.
Antes de mais nada, devemos compor o nome do arquivo a ser aberto a partir das informaes de
Dir1.Path e File1.FileName. Depois, devemos abrir este arquivo com o comando Open. A
procedure completa mostrada a seguir.
A primeira linha verifica se o diretrio o raiz. Se for, o caminho completo deve ser
formado com a concatenao direta dos strings Dir1.Path e File1.FileName. Caso contrrio,
devemos inserir uma barra invertida (\) para compor o caminho corretamente. A ltima linha
descarrega o formulrio da memria. A sintaxe completa do comando Open ser vista na prxima
seo.
A janela Salvar Como no muito diferente da janela Abrir Arquivo. A nica diferena que
devemos inserir uma caixa de texto onde o usurio pode escrever o nome do arquivo diretamente
ou form-lo a partir dos controles de unidade, drive e arquivo. Insira um novo formulrio e desenhe
os objetos mostrados na figura 15, renomeando a caixa de textos para txtFileName. A
implementao do cdigo ser um pouco diferente, mostrando que existe, frequentemente, mais de
uma maneira de fazer as coisas.
O que precisamos fazer, agora, chamar a procedure FileName sempre que o usurio
mudar um dos controles do caminho final. Escreva os seguintes trechos de cdigo nos objetos
correspondentes:
Note que o comando Call serve para chamar a procedure FileName. Poderamos
escrever simplesmente FileName, mas sempre melhor, por questes de documentao de
programa, usar o comando Call. Veremos mais sobre procedures internas na seo seguinte.
Figura 15 - o formulrio frmSalvar
Agora, tudo que falta escrever o cdigo para carregar os formulrios frmAbrir e frmSalvar,
quando requerido pelo usurio. Isto feito na procedure associada ao menu mnuArquivoItem,
conforme abaixo.
Como anteriormente, estamos usando o comando Select Case para estruturar a chamada
de comandos. O mtodo Show est sendo usado para abrir os formulrios frmAbrir e frmSlvar
modalmente. O ndice 2 corresponde barra separadora do menu e no admite cdigo, pois esta
barra no executa o evento clique.
O editor est quase pronto. Voc pode implementar, no evento Resize do formulrio
frmEditor, o mesmo cdigo do Bloco de Notas. Melhorias adicionais envolvem o desenvolvimento
de um menu flutuante e o uso do ClipBoard.
MENUS FLUTUANTES (POP-UP)
Menus flutuantes so aqueles que aparecem quando clicamos o boto direito do mouse
sobre um objeto. O Windows 95 repleto destes menus (em qualquer lugar que voc clicar com o
boto direito, alguma coisa aparece !) e o VB, desde a verso 2.0, fornece recursos para a
implementao destes menus. Por exemplo, para fazer o menu Editar aparecer como flutuante
quando o boto direito do mouse for pressionado sobre a caixa de texto txtEdit, devemos fazer,
O OBJETO CLIPBOARD
ClipBoard.SetText txtEditor.SelText