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

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 usúario logado.

Como EXIBIR a vídeo-aula em tela cheia?

1. clique na seta executar da tela abaixo para iniciar a exibição do vídeo;

2. dê dois cliques rápidos na tela, quando o vídeo começar a ser exibido.

 

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

 

 

 


2 comentários

Luís Augusto   5/2/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/6/2010 13:42:59

Boa tarde !!!

Como faço para adquiri o Monta Ribbons

No aguardo


Envie seu comentário: