... Pague apenas R$67,00 uma única vez e tenha acesso por 1 ano aos vídeos e arquivos exemplos do site ...

Clique aqui e obtenha mais detalhes.


Vídeo - Criando Ribbons parte 4 - Imagens Externas

Podemos inserir imagens externas em todos os controles da ribbon que permitem o uso dos atributos image e getImage.   Fazemos uso do getImage apenas quando necessitamos selecionar as imagens em tempo de execução, do contrário, usamos o atributo image.

O MontaRibbons possui uma pasta de nome imagens é lá você terá como exemplo dois arquivos:  avel.gif e feed.png que são usados na ribbon de exemplo rbImagens. 

Quando você estiver criando sua ribbon, copie suas imagens para a pasta imagens do MontaRibbons.   Deverá posteriormente copiá-las para a pasta imagens do seu projeto. 

Criar a pasta de nome imagens, no mesmo local do aplicativo, facilita muito a programação e nos permite usar o caminho relativo com a propriedade path.   Veja mais detalhes aqui neste artigo.

Para o atributo image funcionar é necessário usar o atributo loadImage da tag customUI , que chama pela função de carregamento de imagens fncLoadImage.  

Observe abaixo, o atributo loadImage na tag customUI:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
onLoad="fncRibbon" loadImage="fncLoadImage">
...
<button
id = "bt1"                         
label = "Feed"
image="feed.png"
size="large"
onAction = "fncOnAction"
/>
...
</customUI>

Toda vez que o atributo image for utilizado, ele fará uso da função fncLoadImage.

Veja a função fncLoadImage:

Public Sub fncLoadImage(imageId As String, ByRef Image)
On Error GoTo trataerro
Dim caminho As String
caminho = CurrentProject.Path & "\imagens\"
    If InStr(imageId, ".png") > 0 Or InStr(imageId, ".ico") > 0 Then
        Set Image = LoadImage(caminho & imageId)
    Else
        Set Image = LoadPicture(caminho & imageId)
    End If
sair:
    Exit Sub
trataerro:
    Select Case Err.Number
        Case 2220
            MsgBox "Imagem " & imageId & _
            " não encontrada no caminho indicado...", vbInformation, "Aviso"
        Case Else
            MsgBox "Erro: " & Err.Number & _
            vbCrLf & Err.Description, vbCritical, "Aviso", _
            Err.HelpFile, Err.HelpContext
    End Select
    Resume sair:
End Sub

O argumento imageId  da função, traz o nome da imagem dada no atributo image de um controle.  Este nome deve coincidir com o nome da imagem armazenada na pasta imagens.   O argumento image da função carrega então a imagem da pasta, no controle da ribbon.

Imagens GIF, JPEG e BMP são aceitas diretamente nos controles (button, gallery,...) da ribbon, utilizando o método LoadPicture do Access.  Já as imagens PNG e ICO precisam ser transformadas em BMP para então ser possível o seu carregamento.  Isto é feito através de uma função chamada LoadImage, que usa APIs do Windows para realizar essa transformação.  O MontaRibbons exporta para o seu projeto estas APIs num módulo chamado mod_picture.

Observe o código XML completo de uma ribbon, usando dois botões que carregam as imagens da pasta imagens do MontaRibbons:

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

<ribbon startFromScratch="true">

<tabs>
<tab id = "gui1" label = "Guia 1" >
<group id = "gr1" label = "Botões com imagens externas">
<!-- para carregar arquivo PNG é usada a função LoadImage -->
<button
id = "bt1"
label = "Feed"
image="feed.png"
size="large"
onAction = "fncOnAction"
/>
<!-- para carregar arquivo GIF é usado o método LoadPicture do Access -->
<button
id = "bt2"
label = "Avelino"
image="avel.gif"
size="large"
onAction = "fncOnAction"
/>

</group>
</tab>

</tabs>
</ribbon>
</customUI>

Como resultado temos a ribbon :

Editor do VBA

  

Como havia dito, podemos carregar nossas imagens utilizando o atributo getImage.  Esta opção é usada para uma necessidade da troca de imagens em tempo de execução.  Usaremos como exemplo a mesma XML acima, trocando apenas o atributo image pelo atributo getImage.  O atributo getImage não depende do atributo loadImage da tag customUI.

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

<ribbon startFromScratch="true">

<tabs>
<tab id = "gui1" label = "Guia 1" >
<group id = "gr1" label = "Botões com imagens externas">
<!-- As imagens são definidas na função fncGetImage -->
<button
id = "bt1"
label = "Feed"
getImage="fncGetImage"
size="large"
onAction = "fncOnAction"
/>

<button
id = "bt2"
label = "Avelino"
getImage="fncGetImage"
size="large"
onAction = "fncOnAction"
/>

</group>
</tab>

</tabs>
</ribbon>
</customUI>

Com isso, a imagem é definida na função fncGetImage.  Veja a função abaixo:

Public Sub fncGetImage(control As IRibbonControl, ByRef Image)
On Error GoTo trataerro
Dim caminho As String
Dim strNomeImagem As String
caminho = CurrentProject.Path & "\imagens\"
Select Case control.Id
  Case "bt1"
     strNomeImagem = "feed.png"
  Case "bt2"
     strNomeImagem = "avel.gif"
End Select

If InStr(strNomeImagem, ".png") > 0 Or InStr(strNomeImagem, ".ico") > 0 Then
  Set Image = LoadImage(caminho & strNomeImagem)
Else
  Set Image = LoadPicture(caminho & strNomeImagem)
End If

sair:
  Exit Sub
trataerro:
  Select Case Err.Number
    Case 2220
      MsgBox "Imagem do botão " & control.Id & _
      " não encontrada no caminho indicado...", vbInformation, "Aviso"
    Case Else
      MsgBox "Erro: " & Err.Number & vbCrLf & Err.Description, _
      vbCritical, "Aviso", Err.HelpFile, Err.HelpContext
  End Select
  Resume sair:
End Sub

Montei um arquivo exemplo que faz a troca de imagens em tempo de execução de um controle gallery para você ficar com uma noção melhor do que é possível ser feito.

Veja o arquivo exemplo:

Editor do VBA

 

Vídeo-aula (leia a nota)

Nesta vídeo-aula você terá uma breve apresentação do uso de imagens externas e irá acompanhar uma apresentação do arquivo exemplo que usa o controle gallery, em tempo de execução.

Nota: Este vídeo tem duração total de 10 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 Access
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 3


Alterando os controles em tempo de execução, usando os atributos get
Como configurar a ribbon para a troca de idioma
Como ocultar/desabilitar os botões da ribbon, em função do usuário logado
 
Para saber como montar o controle personalizado de acesso de usuários, utilizado no arquivo exemplo desta aula, leia o artigo.
 
O arquivo exemplo desta vídeo-aula se encontra na pasta [exemplos] do MontaRibbons. O nome do arquivo é Maestro_idiomas.accdb
(disponível somente para quem adquirir o MontaRibbons).

 

Vídeo-aula 5

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

 


 

 


14 comentários

   05/08/2010 14:17:02

Boa Tarde Avelino muito interessante o artigo, e Parabéns pelo site!

estava lendo o artigo e fiquei curioso numa coisa...
como eu faço para usar imagens de uma dll de imagens, para usa-las nas ribbons e também em qualquer outro objeto do access? é possivel?

Márcio Melo - Rio de Janeiro/RJ   05/08/2010 23:54:04

Bela continuação... flexibilidade de colocar imagens enriquece a aplicação, farei o upgrade da versão 3 do monta Ribbons, gostei do vídeo que mostra que você colocou mais exemplos práticos, muito bom... parabéns. Sou mais Brasil!

Avelino Sampaio   06/08/2010 05:17:42



Ótima a sua pergunta. Nunca usei mas creio que seja possível utilizando APIs.

Por exemplo, esta extrai Icones

Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long

Procure no google com a frase "Api extrair imagens dll" ou algo parecido.

Sucesso

Avelino Sampaio   06/08/2010 05:23:34

Marcio,

Estou apostando muito que os exemplos práticos irão ajudar o pessoal a enriquecer os projetos.

Valeu pelo apoio.

Cristiano   13/04/2012 09:47:23

Bom Dia, Avelino.

Quando coloco o código, quando carrego o código aparace a mensagem:

Erro de compilação:
'Sub' ou 'Function' não definida.

Qual o o erro?
Você pode me ajudar?

Cristiano   13/04/2012 15:05:23

Avelino, tem algum código ou tutorial, para eu pesquisar mais de uma palavra por vez no access, relativo ao mesmo campo.

Avelino Sampaio   16/04/2012 06:47:47

Cristiano,

Vc está chamando por um função que não existe. Reveja se escreu o nome das funções corretamente.

Quanto a pesquisa, sugiro seperar as palavras por virgula. Assim será possivel montar um código usando a função split(). Estude meu tutorial sobre "Aprenda sobre filtragens". Lá tem um aplicativo com exemplos que podem ajudar a resolver seu problema.

Bom estudo!

Alexandre   28/01/2013 15:23:02

Quando eu clico no botão que possui a função: objRibbon.Invalidate, nada ocorre e aparece um erro dizendo que tenho que definir o with, o que é isso ?

Alexandre   29/01/2013 16:08:22

Olá Avelino,

Você poderia mandar um arquivo de exemplo pra mim sobre o uso de imagens externas na ribbon do access?
Eu copiei os códigos do Tutorial - Imagens Externas na Ribbon, porém não obtive sucesso.

Por favor, mande um exemplo básico com imagens no botões !

Email: enghere@live.com

Obrigado

Avelino Sampaio   29/01/2013 17:07:10

Alexandre,

te passei um email com uma atualização do módulo Picture.

Sucesso!

valter   02/07/2015 12:04:37

Avelino
como posso mudar o idioma da ribbon juntamente com a bandeira do idioma selecionado

Avelino Sampaio   03/07/2015 03:15:11

Valter,

seja o meu tutorial "Como montar um sistema com seleção de idiomas" se atende.

Sucesso!

Nilo Souza   04/07/2015 18:19:20

Ola Avelino, tudo bem
Como fazer para meu sistema ocultar a aba arquivo e exibir a aba principal onde eu carreguei minahas ribbons, igual ao que mostra no exemplo gallery ai em cima.
Obrigado

Avelino Sampaio   06/07/2015 05:47:43

Nilo,

não é possível ocultar a aba ARQUIVO mas podemos limpa-la por completo, através da programação XML da ribbon. Sugiro a aquisição do meu kit MontaRibbons, que irá aprender tudo isso.

Sucesso!


Envie seu comentário: