Banco de Dados - Access
Criando menus personalizados no MS Access – Parte 3
Nesta série de artigos, estarei mostrando como criar tais menus de forma eficiente utilizando uma conexão ao nosso banco de dados para carregar os itens que comporão o nosso menu. Este breve tutorial assume um conhecimento prévio do MS Access.
por Robert MartimVocê alguma vez precisou criar um menu personalizado no Access? Se sim, como foi que você levou a cabo o processo?
Existem várias formas de se criar menus personalizados no Office e o MS Access nos fornece tabelas que podem ser utilizadas para armazenar os dados que serão utilizados para criar nossos menus.
Nesta série de artigos, estarei mostrando como criar tais menus de forma eficiente utilizando uma conexão ao nosso banco de dados para carregar os itens que comporão o nosso menu. Este breve tutorial assume um conhecimento prévio do MS Access. Para acessar a primeira parte desta série de artigos e arquivos clique aqui. Para acessar a segunda parte clique aqui.
Neste artigo mostrarei como executar ações e atalhos de teclado utilizando a propriedade OnAction e o método Execute. Além disso mostrarei como criar teclas de atalho no Access.
A diferença entre OnAction e Execute é que OnAction executa um comando que nós mesmos criamos ao passo que Execute executa um comando interno do Access como Imprimir, por exemplo. Porém, o Execute é acionado quando criamos nosso botão, portanto, iremos utilizar o ID do botão interno para executar o comando. Em outras palavras, definiremos o nosso botão de forma que ele faça a mesma coisa quando clicamos no botão de relacionamentos no menu Ferramentas.
Primeiramente, vamos criar o código que montará nosso menu:
Public Const MENUACCESS As String = "Menu Bar" |
Sub executandoMenus() Dim mnu As CommandBarPopup Dim btn As CommandBarButton
On Error Resume Next CommandBars(MENUACCESS).Controls("Executar comandos").Delete Set mnu = CommandBars(MENUACCESS).Controls.Add _ (Type:=msoControlPopup, before:=1) mnu.Caption = "Executar comandos" Set btn = mnu.Controls.Add(Type:=msoControlButton) With btn .Caption = "Exemplo OnAction" .FaceId = 1018 "Mensagem refere-se a macro a ser executada .OnAction = "Mensagem" End With
"Defini o ID do botão como sendo 523 (Relacionamentos). "Quando o botão for clicado o Access carrega "a caixa de relacionamentos Set btn = mnu.Controls.Add(Type:=msoControlButton, ID:=523) With btn .Caption = "Exemplo Execute" .FaceId = 523 "Este método está comentado, pois utilizaremos "o ID 523 para executá-lo ".Execute End With End Sub |
O nosso menu tem o seguinte aspecto:
Figura 1 – Propriedade OnAction e
Método Execute
Os faceID’s ficam a critério do leitor. No próximo artigo estarei mostrando como criar uma lista das faces disponíveis no Office dentro do próprio Access em uma barra de comando.
Observe que no OnAction nós colocamos o nome da macro a ser executada. Porém, no caso do Execute utilizamos o número referente ao comando que desejamos executar. Como o OnAction necessita de uma macro precisamos acrescentá-la ao nosso projeto. Como exemplo, podemos utilizar a seguinte sub-rotina:
Sub Mensagem() MsgBox "Não há nada neste botão que possa ser executado.", _ vbInformation End Sub |
Quando clicamos no primeiro botão ele executa o OnAction e a mensagem é passada para o usuário:
Figura 2 – MsgBox
chamada pela Propriedade OnAction
Já no segundo botão estamos executando um comando interno do Access com um ID igual a 523:
Figura 3 – Janela
de relacionamentos ativada pela Método Execute
Uma vez que definimos qual é o ID do comando o método Execute torna-se redundante, pois ao clicarmos no botão o comando será executado. Porém, há situações onde queremos que o comando seja executado quando o código é rodado.
Os comandos acima são acessados através de um “clique”, porém, podemos também acrescentar um combinação de teclas para criar um atalho de teclado para o nosso botão.
Atalhos de teclado são acessados diretamente do teclado e facilitam a execução de comando, pois não precisamos recorrer ao mouse toda vez que desejamos executar tal comando.
O processo é o mesmo que o OnAction. Na verdade, o OnAction é que determina a macro a ser executada. O que precisamos fazer é utilizar a propriedade ShortCutText para criar o Atalho e defini-lo no código.
O procedimento a seguir descreve como adicionar um atalho de teclado ao menu.
Se você possui os meus cursos sobre o mesmo assunto no Word e Excel aqui você encontrará uma grande diferença. O Access não é direcionado por eventos, portanto, tudo aquilo que é executado é executado dentro do projeto e não no aplicativo. Assim sendo, você não tem a opção Application.MacroOptions como no Excel ou KeyBindings como no Word.
Para se criar teclas de atalho no Access nós precisamos utilizar macros. Porém, como você notará, a macro não é a mesma coisa que o código VBA, então, como fazer para adicionar uma tecla de atalho?
Primeiramente, vamos adicionar o menu. Como o atalho não está diretamente relacionado ao código, a forma como criamos o menu continua a mesma. Contudo, adicionaremos o texto indicativo do atalho ao botão que criaremos:
Public Const MENUACCESS As String = "Menu Bar" |
Sub mnuAtalho() Dim mnu As CommandBarPopup Dim btn As CommandBarButton
On Error Resume Next " apaga o menu caso ele já exista CommandBars(MENUACCESS).Controls(1).Controls _ ("Abrir Janela Iniciar ").Delete
Set mnu = CommandBars(MENUACCESS).FindControl(ID:=30002) Set btn = mnu.Controls.Add(Type:=msoControlButton, before:=1) With btn " O ampersand (&) é para indicar a chava do atalho .Caption = "Abrir Janela &Iniciar" .ShortcutText = "Ctrl+Shift+I" .OnAction = "Iniciar" End With End Sub |
O sinal gráfico "&" (ampersand) é utilizado para sublinhar a letra chave do atalho.
O botão de menu acima será inserido no menu Arquivo como o primeiro item:
Figura 4
– Criando tecla de atalho
O atalho será CTRL+SHIT+I. Antes de adicionarmos o atalho, você precisa saber como representas as teclas acima. A tabela abaixo mostra as teclas e como elas devem ser representadas:
TECLA |
Function Iniciar() DoCmd.RunCommand acCmdStartupProperties End Function |
Enquanto o seu projeto estiver aberto, sempre que necessitar chamar a janela de inicialização basta pressionar CTRL+SHIFT+I.
Este método pode ser utilizado para qualquer tipo de atalho que você tenha em mente. Lembre-se, porém, se sempre verificar as teclas antes. Se as teclas entram em conflito com as teclas padrões, estas teclas não funcionarão.
Conclusão:
Este Tutorial é a terceira parte da série que estarei escrevendo sobre criação de Menus Personalizados no MS Access. Fique ligado no Linha de Código para as próximas dicas!
Os arquivos mdb contendo os exemplos acima podem ser baixado clicando aqui.
Se você deseja saber mais ou tem críticas, sugestões e comentários fale diretamento com o autor pelo email rm@faircourt.com ou deixe aqui no site.
Notas:
Este artigo é um excerto do curso de minha autoria
sobre criação de menus personalizados no Access o qual pode ser adquirido
através do link http://www.juliobattisti.com.br/cursos/accessmenus/default.asp.
Outros cursos da série incluem menus no Excel (http://www.juliobattisti.com.br/cursos/excelvbamenus/default.asp)
e Word (http://www.juliobattisti.com.br/cursos/wordmenus/default.asp).