Microsoft Office XP inclui duas novas propriedades para o objecto
CommandBarButton : as propriedades
mask e
Picture . Pode utilizar estas propriedades para colocar imagens em controlos de barra de comando gerado personalizado.
Nota Estas propriedades estão também disponíveis no Microsoft Office 2003.
As propriedades
mask e
Picture são definidas como tipo
IPictureDisp , que é um membro da biblioteca Stdole.
IPictureDisp utiliza métodos que não podem ser organizados em limites de processos. Por este motivo, as propriedades
mask e
Picture só podem ser chamadas dentro de processo (macros VBA, automatização de suplementos e DLLs de ActiveX executado em processo). Consulte a secção "Referências" para mais informações sobre este comportamento.
O exemplo abaixo mostra como criar uma automatização suplemento que adiciona um botão de CommandBar com uma imagem de máscara.
Passos para criar imagens para a imagem e a máscara
- Inicie o Microsoft Paint. No menu imagem , clique em atributos . Alterar o tamanho da imagem para 32 x 32 e clique em OK .
- Desenhe uma cara amarela na superfície de desenho. Preencha a área em volta do círculo com azul.
Reduzir esta imagemExpandir esta imagem
- Guarde a imagem como Circle.bmp.
- Para criar a máscara, preencha o círculo com preto e preencher a área fora do círculo com branco. Quando a imagem com a máscara é adicionada ao controlo de CommandBar, as áreas a preto da máscara de estão visíveis, enquanto que as áreas brancas são transparentes.
Reduzir esta imagemExpandir esta imagem
- Guarde a imagem como Mask.bmp.
Passos para criar AddIn COM
- Inicie o Visual Basic e crie um novo AddIn projecto.
- No menu projecto , clique em References . Se uma biblioteca de tipos "Microsoft Office" anterior à versão que XP está seleccionada, desmarque que a biblioteca de tipos e seleccione a biblioteca de tipos para o Microsoft Office XP. Clique em OK .
- No Explorador do projecto, clique com o botão direito do rato frmAddin e, em seguida, clique em Remover frmAddin .
- No Explorador de projecto, faça duplo clique no estruturador de ligar . Para a aplicação seleccione Microsoft Excel e, seleccione arranque para Comportamento de carregamento inicial .
- No menu Ver , clique em código e substitua o código para o adicionar - com o seguinte:
Option Explicit
Dim oExcel As Object
Dim WithEvents oButton As Office.CommandBarButton
Private Sub AddinInstance_OnConnection(ByVal Application As Object, _
ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
ByVal AddInInst As Object, custom() As Variant)
Dim oPic As stdole.IPictureDisp
Dim oMask As stdole.IPictureDisp
' Load the picture and mask.
Set oPic = LoadPicture(App.Path & "\circle.bmp")
Set oMask = LoadPicture(App.Path & "\mask.bmp")
' Save an instance of our application.
Set oExcel = Application
' Create a new button on the standard CommandBar.
Set oButton = oExcel.CommandBars("Standard").Controls.Add(msoControlButton)
With oButton
' Set a tag for the button.
.Tag = "My Button"
' Set the event to fire when the button is pressed.
.OnAction = "!<" & AddInInst.ProgId & ">"
' Set the picture property -- if you are using the Mask property, this
' property must be set before you set the Mask property.
.Picture = oPic
' Set the Mask property.
.Mask = oMask
' Show the button.
.Visible = True
End With
End Sub
Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode As _
AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
' Delete the button.
oButton.Delete
' Release references.
Set oButton = Nothing
Set oExcel = Nothing
End Sub
Private Sub oButton_Click(ByVal Ctrl As Office.CommandBarButton, _
CancelDefault As Boolean)
' Our button was pressed.
MsgBox "The button was pressed!"
End Sub
- Guardar o projecto e criar o suplemento na pasta em que os mapas de bits são armazenados.
- Inicie o Excel. Aparece um novo controlo com um círculo amarelo no CommandBar padrão. Note que a área à volta do círculo amarelo é transparente.
notas adicionais Como anteriormente estabelecida interface
IPictureDisp não pode ser organizada em limites de processos. Tentativas para definir o resultado de out-of-process de propriedades de
imagem e a
máscara o seguinte erro:
Run-time error '-2147418113(8000ffff) ':
Método 'Imagem' do objecto '_CommandBarButton' falhou
Por conseguinte, não é possível definir estas propriedades para um
CommandBarButton a partir de qualquer cliente de automatização de fora de processo ou de um componente em processo que esteja a utilizar o modo de depuração no IDE do Visual Basic. Se executar o exemplo Add-in descrito neste artigo a partir do IDE do Visual Basic, receberá esta mensagem de erro. Para evitar o erro durante a depuração, pode comentar as linhas que definir as propriedades
Picture e a
máscara ou utilizar compilação condicional, como, por exemplo, um
#If... Then... #Else directiva.
Para obter informações adicionais, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
238228
(http://support.microsoft.com/kb/238228/
)
Como criar um Office 2000 COM suplemento no Visual Basic
230689
(http://support.microsoft.com/kb/230689/
)
EXEMPLO: Comaddin.exe Office 2000 COM suplemento escrita no Visual C++
150034
(http://support.microsoft.com/kb/150034/
)
PROBLEMA: LPPICTUREDISP não é possível ser transmitidos através de limites de processo
Para mais informações, consulte o seguinte Web site da Microsoft:
Artigo: 286460 - Última revisão: segunda-feira, 29 de Janeiro de 2007 - Revisão: 4.6
A informação contida neste artigo aplica-se a:
- Microsoft Visual Basic Enterprise Edition for Windows 6.0
- Microsoft Visual Basic 6.0 Professional Edition
- Microsoft Office Access 2003
- Microsoft Access 2002 Standard Edition
- Microsoft Office Excel 2003
- Microsoft Excel 2002 Standard Edition
- Microsoft Office Word 2003
- Microsoft Word 2002 Standard Edition
- Microsoft Office FrontPage 2003
- Microsoft FrontPage 2002 Standard Edition
- Microsoft Office Outlook 2003
- Microsoft Outlook 2002 Standard Edition
- Microsoft Office PowerPoint 2003
- Microsoft PowerPoint 2002 Standard Edition
| kbmt kbautomation kbhowto KB286460 KbMtpt |
Tradução automáticaIMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo:
286460
(http://support.microsoft.com/kb/286460/en-us/
)