Habilitando e Desabilitando Sub-menus no VB


    Uma tarefa de programação muito comum a todas as aplicações para Windows é a de manter os menus, sub-menus, botões de barras de ferramentas e painéis da barra de status exibindo informações coerentes com o estado atual do sistema. Os elementos que estão sempre visíveis precisam mesmo ser configurados e re-configurados o tempo todo, mas os sub-menus somente precisam exibir um estado coerente quando são vistos pelo usuário. Isto só acontece quando o usuário clica sobre o menu pai dos sub-menus. No evento Click destes menus é que devem ser modificados os estados de habilitação dos seus sub-menus. Muitas vêzes os sub-menus têm botões correspondentes na barra de ferramentas, o que facilita as coisas. Criando uma rotina para ser chamada no evento Click de um dos menus principais e fazendo com que ela habilite ou desabilite cada um dos sub-menus conforme o estado dos botões correspondentes na barra de ferramentas fará com que o usuário tenha uma visão coerente das operações disponíveis com um baixo custo de processamento. Não havendo botão correspondente a um sub-menu na barra de ferramentas, uma outra forma de decidir o estado do sub-menu precisa ser implementada dentro da rotina de atualização dos sub-menus. Eliminando a necessidade de atualizar os estados de todos os sub-menus o tempo todo fará com que a aplicação se torne mais veloz nas atualizações da interface gráfica.

    Resta porém um problema a ser levado em consideração: se um sub-menu que contém atalho de teclado estiver num estado diferente daquele que deveria estar num determinado momento, o atalho não funcionará ou funcionará em momento impróprio. A solução estruturada para isto é atribuir o valor "True" à propriedade KeyPreview do formulário e interceptar os eventos de teclado correspondentes aos atalhos usados pelos sub-menus. Quando um atalho é usado e detectado no evento KeyDown do formulário, chama-se o procedimento que trata o evento Click da barra de ferramentas passando como argumento o botão correspondente na barra ao menu do atalho. No evento Click da barra de ferramentas é testado o estado do botão. Se estiver desabilitado, o evento é ignorado, se estiver habilitado, é chamado o procedimento que trata o evento. Não havendo botão na barra de ferramentas correspondente ao sub-menu do atalho digitado, uma outra forma de verificação da possibilidade de aceitar ou não a operação precisa ser implementada. Veja que é necessário usar o evento KeyDown do formulário em razão de o evento Click de um sub-menu não ser disparado pelo atalho de teclado quando ele for deixado desabilitado.

    Devemos lembrar que a preocupação com este tipo de problema deve ser deixada sempre para o final da aplicação e ao longo da fase de testes devemos deixar todos os elementos de menus e barras de ferramentas visíveis e habilitados. À medida que cria o código, vá escrevendo comentários prefixados com alguns caracteres comuns que sirvam para identificar de modo único os pontos em que o estado dos elementos da interface gráfica precisam ser alterados. Ao final, percorra estes pontos localizando-os pelo prefixo usado e escreva o código real que atualizará os elementos da interface gráfica.


E-mail: codelines@codelines.com
Fone: (011) 6198-5137
Revisada: setembro 22, 2003.