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 :

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:

Vídeo-aula
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.
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 |
|---|---|
| Todas as informações necessárias para você adquirir esta incrível ferramenta. | |
|
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
|
|
|
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
|
|
|
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). |
|
| Uso de imagens externas (GIF, JPEG, PNG e ICO) armazenadas em tabela local | |
|
4 comentários Gê 5/8/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 5/8/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 6/8/2010 05:17:42 Gê Ó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 6/8/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. |