Visual Basic 6 - Criando Menus com o Visual Basic
O Visual Basic disponibiliza uma excelente ferramenta para projeto de menus: o "Menu Design Window", ou Janela de Projeto de Menus ( Menu Editor) , que pode ser acessada com Ctrl-E ou por meio do botão direito do mouse.
Projetar um menu em VB não é mais difícil do que trabalhar com outros controles.
Entretanto, alguns cuidados são necessários para evitar conflitos entre itens de menu.
A Janela de Projeto de Menus é mostrada na Figura 10 a seguir.
Figura 10 - A Janela de Projeto de Menus
As propriedades de itens de menus são as seguintes:
Estas propriedades podem ser
alteradas em tempo de execução ou de projeto. É, ainda, possível anexar
teclas de atalho a cada item de menu.
A maneira mais fácil de trabalhar com menus
é construir "Arrays de Menus", ou seja, os diferentes
sub-itens de um mesmo menu serão diferenciados apenas por um índice, tendo o
mesmo nome.
A tabela 7 abaixo exemplifica esta construção para o caso de um menu chamado "Arquivo".
Tabela 7
Legenda |
Nome |
Índice |
Arquivo |
mnuArquivo |
- |
--- Abrir |
mnuArquivoItem |
0 |
--- Salvar |
mnuArquivoItem |
1 |
--- - |
mnuArquivoItem |
2 |
--- Sair |
mnuArquivoItem |
3 |
O item principal do menu não tem índice.
Os sub-itens são diferenciados por índices, tendo o mesmo nome e sendo "indentados"
em relação ao item principal.
O Visual Basic admite até cinco sub-itens, mas
este limite raramente é usado.
A indentação dois itens é feita por meio das setas da Janela de Projeto de Menus. A barra de separação é criada com um hífen ( - ) e não admite código associado. O índice, entretanto, é obrigatório.
Podemos usar menus para implementar uma versão aperfeiçoada do nosso bloco de notas.
Em vez de usarmos botões de comando, usaremos itens de menus para realizar as operações.
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
Legenda | Nome | Índice | Tecla de Atalho |
Arquivo | mnuArquivo | - | - |
--- Abrir | mnuArquivoItem | 0 | Ctrl + F12 |
--- Salvar | mnuArquivoItem | 1 | Shitf + F12 |
--- - | mnuArquivoItem | 2 | - |
--- Sair | mnuArquivoItem | 3 | Ctrl + Z |
Editar | mnuEditar | - | - |
--- Cortar | mnuEditarItem | 0 | Ctrl + X |
--- Colar | mnuEditarItem | 1 | Ctrl + V |
--- Apagar | mnuEditarItem | 2 | Ctrl + P |
Fontes | mnuFontes | - | - |
--- Courier | mnuFontesItem | 0 | - |
--- Helvética | mnuFontesItem | 1 | - |
--- Roman | mnuFontesItem | 2 | - |
--- Modern | mnuFontesItem | 3 | - |
--- Script | mnuFontesItem | 4 | - |
--- Symbol | mnuFontesItem | 5 | - |
--- System | mnuFontesItem | 6 | - |
--- Terminal | mnuFontesItem | 7 | - |
Após terminar o menu, mude a legenda do formulário para "Editor". O resultado final deve ser semelhante ao da Figura 11.
Figura 11 - Um editor de textos baseado em menus
O menu Editar contém basicamente o mesmo código que, antes, estava nos botões do bloco de notas.
Quando um menu é construído a partir de arrays, a maneira mais fácil de escrever o código é usando o comando "Select ...Case".
Para iniciar a programação, insira uma caixa de texto do formulário, renomeando-a para txtEditor e abra a janela de código do menu mnuEditarItem, escrevendo as seguintes linhas:
Private Sub
mnuEditarItem_Click(index As Integer) Select Case index Case 0 'Cortar CortaTexto = txtEditor.SelText txtEditor.SelText = "" txtEditor.SetFocus Case 1 'Colar txtEditor.SelText = CortaTexto Case 2 'Apagar txtEditor.Text = "" txtEditor.SetFocus End Select End Sub |
Note que o núcleo do código é idêntico ao utilizado no Bloco de Notas.
A utilização do comando Select ... Case certamente facilita as coisas e funciona da seguinte maneira: quando um item do menu mnuEditar é selecionado, o evento clique passa o parâmetro Index, que corresponde ao item selecionado.
A estrutura de decisão Select ... Case verifica o valor de Index e executa imediatamente o bloco de comandos associado, pulando a seguir para a linha End Select.
O comando Select ... Case não verifica todos os possíveis valores de Index, sendo muito mais rápido do que uma estrutura correspondente construída com comandos If ... Then ... Else.
O código do menu Fontes pode ser implementado rapidamente. A diferença é que estaremos usando a propriedade Checked dos menus, para identificar qual a fonte atualmente selecionada.
Private Sub
mnuFontesItem_Click(index As Integer) Select Case index Case 0 txtEditor.FontName = "Courier" Case 1 txtEditor.FontName = "Helv" Case 2 txtEditor.FontName = "Roman" Case 3 txtEditor.FontName = "Modern" Case 4 txtEditor.FontName = "Script" Case 5 txtEditor.FontName = "Symbol" Case 6 txtEditor.FontName = "System" Case 7 txtEditor.FontName = "Terminal" End Select 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 usuário.
Depois, um pequeno laço For ... Next remove as marcas de verificação de todos os sete itens de menu (porque não sabemos qual delas está ativa).
Finalmente, colocamos uma marca de verificação no item de menu escolhido atualmente.
Está não é a única maneira de trabalhar com marcas de verificação e alguém poderia argumentar que não é a mais rápida (por causa do laço For .. Next).
Na verdade poderíamos memorizar o item escolhido anteriormente, fazendo uso de uma variável do tipo Integer, e então remover a barra de verificação somente deste item. Esta pequena modificação fica como lição de casa.
Os comandos para o menu mnuArquivoItem são mais complicados e exigem que trabalhemos com arquivos e janelas de diálogo.
Vamos ficando por aqui...
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
https://msdn.microsoft.com/pt-br/library/system.text.asciiencoding%28v=vs.110%29.aspx