... Assinatura do site por 3 anos + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$145,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Vídeo - Criando Ribbons - parte 3 ( English Version )

Chegamos na parte mais empolgante da programação de ribbons que é  a de alteramos os controles de forma dinâmica.  Podemos ocultar, desabilitar, inserir imagens, trocar nomes e muito mais.   Isto é feito através dos atributos get's (obter). 

Vejamos a lista abaixo dos atributos gets do controle button (botão):

getDescription
getEnabled
getImage
getKeytip
getLabel
getScreentip
getShowImage
getShowLabel
getSize
getSupertip
getVisible

Cenário 1 - Imagine que um aplicativo seja acessado por diversos usuários e que cada usuário tenha permissão distinta de acesso.  O João não pode ter acesso ao formulário de clientes, já o Carlos tem permissão de acesso.  Para esta situação podemos programar o botão da ribbon, que abre o formulário de clientes, de modo que se torne visível apenas para o Carlos.   Configuramos este botão com o atributo getVisible, chamando uma determinada função.  Esta função irá passar para o getVisible o valor true ou false, determinando o estado do botão (visível ou invisível) em função do usuário logado.

Escrita exemplo do botão que abre o formulário de clientes:

<button
id = "btClientes"
label = "Clientes"
getVisible = "fncGetVisible"
onAction = "fncOnAction"
/>

Agora, veja um exemplo bem simples da função fncGetVisible:

Public Sub fncGetVisible(control As IRibbonControl, ByRef visible)

Select Case control.id 
   Case "btClientes"
      'Trata o botão clientes
      if usuário = "joão" then
         visible = false
      else
         visible = true
      end if
End Select

End Sub

Observe que se o usuário logado for o João, o argumento visible assumirá o valor false e se forem  outros usuários, o argumento assumirá o valor true.

Supondo então que o usuário logado seja o João, a função entregará ao atributo getVisible o valor false , tornando o botão invisível.

<button
id = "btClientes"
label = "Clientes"
getVisible = "false"
onAction = "fncOnAction"
/>

Cenário 2 - Suponha que um aplicativo esteja sendo projetado para os idiomas português e inglês, cujo os nomes dos botões da ribbon devam ser carregados em função do idioma selecionado.  Neste cenário usaremos o getlabel.

Escrita exemplo do botão com o atributo getLabel:

<button
id = "btClientes"
getVisible = "fncGetVisible"
getLabel = "fncGetLabel"
onAction = "fncOnAction"
/>

A função fncGetLabel :

Public Sub fncGetLabel(control As IRibbonControl, ByRef label)

Select Case control.id 
   Case "btClientes"
      'Trata o botão clientes
      if idioma = "português" then
         label = "Clientes"
      elseif idioma = "Inglês" then
         label = "Customers"
      end if
End Select

End Sub

Se a língua selecionada for a inglesa, a função passará para o getlabel, o valor "Customers".

<button
id = "btClientes"
getVisible = "fncGetVisible"
getLabel = "Customers"
onAction = "fncOnAction"
/>

Cenário 3 - É muito comum também carregarmos os botões com nosso próprio banco de imagens. Esta questão será abordada na quarta aula, onde vou ensinar mais de uma forma de carregamento, inclusive a de como carregar imagens PNG.

Quando a ribbon é carregada pela primeira vez é avaliado cada um dos gets  empregados e os seus valores são carregados, conforme as funções de cada um dos atributos.

Como se faz para os get's serem revalidados depois da ribbon carregada ?

A ribbon tem dois métodos chamados de Invalidate e InvalidateControl.  O Invalidate revalida todos os controles de uma ribbon, enquanto que o método InvalidateControl revalida o controle que você especificar.

Agora, faça de conta que você queira, num determinado evento, revalidar o estado de dois botões (clientes e fornecedores) de uma ribbon carregada.  Basta informar o atributo id do controle a ser revalidado.

objRibbon.invalidateControl ("btClientes")
objRibbon.invalidateControl ("btFornecedores")
 

Para se ter acesso aos métodos Invalidate e InvalidateControl é necessário efetuarmos algumas configurações. A primeira delas é  a de referenciarmos a classe "Microsoft Office 12.0 Object Library" que eu demonstro na parte dois, da vídeo-aula.

A segunda configuração é passarmos a ribbon para o cache através de uma variável.  Veja o código abaixo que deve ser criado num módulo global:

Option Compare Database
Public objRibbon As IRibbonUI

Public Sub fncRibbon(ribbon As IRibbonUI)
On Error Resume Next
'----------------------------------------------
'objRibbon servirá para realizarmos alterações
'na ribbon em tempo de execução
'----------------------------------------------
Set objRibbon = ribbon
End Sub

Para completar é preciso  passar a ribbon para a variável objRibbon , chamando pela função fncRibbon. Isto é feito pela atributo onLoad da tag customUI.  Veja o trecho da xml:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" 
onLoad="fncRibbon">
...
...
</customUI>

Observe os métodos disponíveis pela variável objRibbon:

Usando Access

 

O arquivo exemplo desta vídeo-aula está disponível para quem adquirir o
MontaRibbons 

Vídeo-aula (leia a nota)

Nesta vídeo-aula você terá uma breve apresentação dos atributos get's.  Irá acompanhar, em detalhes, como configurar as ribbons para a troca dinâmica de idiomas.  Aprenderá também como ocultar/desabilitar os controles da ribbon, em função do usuário logado.

Nota: Este vídeo tem duração total de 22 minutos. Porém, aqui pela página, você terá acesso apenas aos 5 minutos iniciais.  Caso queira assistir o vídeo na íntegra, basta adquirir o kit MontaRibbons.  Veja os detalhes da compra, clicando aqui.


 

 

Introdução:

As presentes Vídeos-aulas apresentam uma visão estrutural básica sobre ribbons e pretendem abrir a sua mente para o entendimento do que é possível ser feito com esta fácil programação.
 

Links

Temas abordados

MontaRibbons

Todas as informações necessárias para você adquirir esta incrível ferramenta.

Vídeo-aula 1


Breve apresentação do MontaRibbons
Noção estrutural da xml empregada
Como desabilitar toda a faixa superior do Acess
Usando imagens da galeria do Office
Usando controles internos do Office
Personalizando a barra de ferramentas de acesso rápido
Personalizando o Botão Office
Como criar uma ribbon personalizada
 

Vídeo-aula 2


Como montar o controle splitButton
Como montar o controle menu
Diferenças entre os controles splitButton e menu
Exportando as ribbons para os seus aplicativos
Como dar funcionalidade aos botões da ribbon
 

Vídeo-aula 4

Uso de imagens externas (GIF, JPEG, PNG e ICO)

Vídeo-aula 5

Uso de imagens externas (GIF, JPEG, PNG e ICO) armazenadas em tabela local

 

 


 

 


7 comentários

Luís Augusto   05/02/2010 07:39:38

Bom dia Avelino,
me sinto na obrigação de relatar a minha satisfação em ter adquirido o Monta Ribbons, o controle das Ribbons agregou grande valor ao meu pequeno projeto, dando a ele aparência profissional e confiabilidade pois consigo alterar com facilidade a caracteristica da ribbon, agradeço também ao suporte recebido.

Antonio    26/06/2010 13:42:59

Boa tarde !!!

Como faço para adquiri o Monta Ribbons

No aguardo

Marcio Melo - RJ   26/05/2011 15:52:23

Adorei essa vídeo aula, já consegui utilizar quase todos os Gets, faltando bem pouquinhos para serem exprementados, os principais já fizeram a grande diferença. Depois que passamos a dominar a ferramenta em conjunto com o nosso projeto passamos horas se divertindo com as possibilidades, tenho feito vários testes e obtendo novos horizontes. Fiz até um site tipo um help para o meu projeto que já dei como acabado, link http://www.sic.iniciantejoomla.com/ em breve vou adicionar os links das vídeo aulas que coloquei no youtube.

Guilherme   18/01/2014 01:33:52

Avelino, quando eu uso, aparece esse erro:
"tipo definido pelo usuário não definido" na linha:
'Public objRibbon as IRibbonUI'

Ruggeri   14/07/2015 23:07:47

Oi Avelino,

já possuo o monta ribbons, já exportei o esquema xml pro meu projeto, como ainda existem algumas pequenas alterações que ainda to fazendo, gostaria de saber qual a função que você usa pra recarregar a ribbon.
ruggeri.nascimento@hotmail.com.br

Avelino Sampaio   15/07/2015 05:41:46

Ruggeri,

basta manter pressionado a tecla SHIFT na inicialização do seu aplicativo, para que vc tenha acesso as ribbons do Access.

Sucesso!

Sales   05/03/2017 13:15:01

Prezado Avelino,
Montei o programa baseado no maestro, tudo certinho.
To precisando apenas de uma modificação: no lugar de comandos gets atuar de acordo com o usuário,
gostaria de usar o get visible para mostrar uma ribbon ou outra, quando fizer o login, de acordo com o setor que o "colaborador" trabalhar.
Agradeço.


Envie seu comentário: