Clique aqui para ler todos os artigos desta edição
Menus Dinâmicos em
Visual Basic.Net
por Roberto Lopes
Este artigo discute |
Este artigo usa as seguintes tecnologias: |
· Criação de Menus Dinâmicos · Instruções SQL · Acesso a banco de dados |
VB.NET, SQL Download: fonteMenusDinamicos.zip (62KB) |
Chapéu Menus |
|
O objetivo deste artigo é mostrar como criar menus de modo dinâmico, customizado e em tempo de execução. O .Net permite isto sem a necessidade de recorrer à API do Windows ou à alternativa de criar todas as opções possíveis de menu e, via código, ocultar ou exibir as opções adequadas ao contexto. Provavelmente esta última tenha sido a alternativa mais utilizada, pois era mais fácil e rápida para o desenvolvimento e manutenção dos programas.
Definindo o projeto
O programa possui dois formulários e duas classes, sendo uma específica para a manutenção dos itens/sub-itens de menu e a outra para usuários. Também possui um banco de dados Access para armazenar os dados dos usuários e os itens/sub-itens de menu que cada usuário tem acesso. Quando o programa for carregado ou o usuário desconectar-se, as opções de menu para o usuário “Default” deverão ser carregadas do banco de dados. No exemplo, os itens Default criados são: Menu Arquivo contendo os sub-itens Conectar e Sair.
Os menus e itens não terão controle por usuário, mas sim por grupos. Deste modo, todas as opções de menu foram cadastradas para um grupo. Cada usuário deve obrigatoriamente pertencer a um grupo de usuários, identificando assim quais opções de menu a que ele tem direito. Portanto, quando o usuário se “autenticar” no sistema, as opções de menu do grupo a que ele pertence serão obtidas do banco de dados e o menu será montado em tempo de execução.
Banco de Dados
O banco de dados MenuD.mdb contém quatro tabelas: Usuario, Grupo, Menu e MenuGrupo (conforme a Figura 1). No relacionamento das tabelas (Figura 2), cada usuário deverá estar associado a um grupo existente na tabela Grupo. A tabela MenuGrupo associa um grupo ao item de menu (tabela Menu) e a tabela Menu contém as estruturas de menu disponíveis aos grupos (conforme a Figura 3).
Figura 1. Tabelas Access
Figura 2. Modelo do banco MenuD.mdb
Figura 3. Tabela Menu
Para um melhor entendimento, veja o descritivo dos campos da tabela Menu (Tabela 1).
Tabela 1: Colunas da tabela Menu
Coluna |
Descrição |
MenuID |
Identificador do item de menu (poderia ser do tipo AutoNumber) |
ColunaID |
Identifica a qual coluna do menu o item pertence. Usando o Visual Studio como exemplo, File seria a coluna 1, Edit a coluna 2, etc. Deste modo, todos os itens abaixo de File (inclusive), teriam o valor de ColunaID igual a 1 |
... |