SOBRE O AUTOR

NAVEGAÇÃO

FINANÇAS

SETOR ELÉTRICO

INFORMÁTICA

MISCELÂNEA

Clique aqui para ver meus bookmarks
 
INFORMÁTICA
Visual Basic
Introdução
Iniciando
Controles
Menus
Arquivos
Programação
Gráficos
Erros
Bancos de Dados
Dicas & Truques
Funções, Comandos
Eventos do VB
Downloads
InfoLinks
Delphi
 
SOBRE O AUTOR
Curriculum Vitae
Estante de Livros
Publicações
Painel ICQ
 
NAVEGAÇÃO
Página Inicial
Mapa do Site
Novidades
Busca no Site
Comentários
Livro de Visitas
 
FINANÇAS
As 500 mais - BR
Análise de Projetos
Contabilidade
Cotações Brasil
Cotações EUA
Estratégia
Gráficos Online
Glossário Financeiro
StockLinks
 
SETOR ELÉTRICO
EletroLinks
Papers
Privatização
 
MISCELÂNEA
Cinema
Curitiba
Humor
Links Amigos
Star Trek
 

Enviar e-mail Alvaro


WallStreet Dividend Award




©1998/1999
Alvaro A. de Almeida


  CAPÍTULO 3 - MENUS - PARTE a


Capítulo 2 - Parte b 1 2 3a 3b 4 5 6 7 8 9 10 11 12 Capítulo 3 - Parte b

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 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:

  • Checked:se for true, uma marca de verificação aparecerá ao lado do item de menu;
  • Enabled: se for true, o item de menu estará disponível;
  • Visible: se for true, o item estará visível.

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 identaçã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

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). Sinceramente, para computadores superiores a um Pentium 90 isto não faz diferença ... .Entretanto, é verdade que 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, o que será visto nas próximas seções.


CONSTRUINDO UMA CAIXA DE DIÁLOGO

Uma das maneiras de se abrir ou salvar um arquivo é mostrar uma caixa de diálogo onde o usuário escolhe o nome do arquivo e o caminho desejado. Uma caixa de diálogo personalizada em Visual Basic é basicamente um formulário adicional, inserido através do menu Insert...Form. Um aplicativo em Visual Basic pode ter até 264 formulários, mas é raro que se precise de tantos.

Caixas de diálogo podem ser modais ou não modais:

  • Modal: a janela deve ser fechada (escondida ou descarregada) antes que o aplicativo possa continuar a execução.
  • Não Modal: a execução do aplicativo continua, mesmo com a janela aberta.

Janelas modais são bastante comuns em situações em que devemos evitar que o usuário faça qualquer coisa em outras janelas enquanto uma operação importante está sendo realizada. Por exemplo, quando você escolhe o menu File | Save File As..., no VB 4.0, a caixa de diálogo é aberta modalmente na tela. Se o usuário tentar dar um clique fora da caixa de diálogo, um som de erro será emitido. Embora caixas de diálogo modais tenham suas vantagens, algumas vezes você não poderá usá-las, pois existem situações em que devemos ter mais de uma janela aberta ao mesmo tempo. O ambiente de trabalho do VB é um exemplo de várias janelas não modais abertas ao mesmo tempo, possibilitando que o usuário alterne entre elas sem ter de fechá-las antes.

Os métodos e comandos a seguir podem ser usados para carregar e descarregar caixas de diálogo.

  • Método Show: Carrega formulários na memória e os mostra na tela. Para carregar formulários modais, escreva: Nome_do_Form.Show 1. Para carregar formulários não modais, escreva Nome_do_Form.Show .
  • Método Hide: esconde (apaga da tela) uma janela, mas não a descarrega da memória. Sintaxe:
  • Nome_do_Form.Hide.
  • Comando Load: carrega um formulário na memória, mas não o mostra na tela. Sintaxe: Load Nome_do_Form.
  • Comando UnLoad: descarrega um formulário da memória e da tela. Sintaxe: UnLoad Nome_do_Form.

Janelas previamente carregadas na memória podem ser mostradas fazendo-se a propriedade Visible ser verdadeira. Da mesma forma, janelas carregadas na memória podem ser escondidas fazendo-se Visible falsa. Quando uma janela é descarregada da memória todos os seus controles, variáveis locais e procedures tornam-se inacessíveis.

Vale salientar que formulários que tenham sido apenas escondidos, mas não descarregados, continuarão presentes, ocupando memória. Entretanto, poderão ser acessados muito mais rapidamente da próxima vez em que forem necessários, haja vista que não precisarão ser recuperados do disco.

A figura 12 mostra algumas propriedades de formulários que podem ser úteis na personalização, bem como para evitar que o usuário "faça coisas que não deve", tais como maximizar ou minimizar o formulário ou acessar a Control Box.

  • ControlBox: Se for false, eliminará a caixinha com o menu ControlBox, que contém comandos como Restaurar, Mover, Maximizar, Minimizar e Fechar. A tecla de atalho Alt-F4, usada para fechar janelas, também ficará indisponível;
  • MaxButton: Se for false, eliminará o botão de maximização de janela;
  • MinButton: Se for false, eliminará o botão de minimização de janela;
  • BorderStyle: Permite as seguintes definições para a borda do formulário: Fixed Single, Fixed Double e Sizable.

  Figura 12 - Propriedades de Formulários

Figura 12 - Propriedades de formulários

Estas propriedades são úteis na personalização de formulários, mas devem ser usadas com cuidado. O usuário deve ter ao menos uma opção de fechar a janela antes de recorrer às derradeiras teclas Ctrl + Alt + Del ... Uma recomendação útil é que você pense, antes de mais nada, em opções de saída do formulário, pois é muito fácil esquecer delas depois.

Botões de comando também têm algumas propriedades que ajudam na personalização de caixas de diálogo.

  • Default: O botão que tiver Default = true será acionado quando o usuário pressionar Enter;
  • Cancel: O botão que tiver Cancel = true será acionado quando o usuário pressionar Esc.

Copyright © 1998/1999 - Desenvolvido por Alvaro Augusto de Almeida (isso significa que você pode manter cópias para uso particular, mas não para divulgação). Dúvidas e sugestões serão bem vindas.   

     
Vai para a página inicial

Acessos desde 30.01.99: 

Enviar e-mail para Alvaro