CÓMO: Establecer la propiedad Mask y la propiedad Picture de un botón CommandBar en Office 2003

Seleccione idioma Seleccione idioma
Id. de artículo: 824017 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo paso a paso se describe cómo establecer las propiedades Mask y Picture de un control CommandBar de Microsoft Office 2003 procedente de una extensión de código administrado creada con Visual Studio Tools for the Microsoft Office System. Las propiedades Picture permiten establecer la imagen que aparece en un control CommandBar. Las propiedades Mask pueden utilizarse para crear un fondo transparente para dicha imagen.


Crear un proyecto nuevo de libro de Excel en Visual Basic .NET

  1. En el menú Archivo de Microsoft Visual Studio .NET 2003, seleccione Nuevo y, a continuación, haga clic en Proyecto.

    Aparecerá el cuadro de diálogo Nuevo proyecto.
    1. En la lista Tipos de proyecto, expanda Proyectos de Microsoft Office System y, a continuación, haga clic en Proyectos de Visual Basic.
    2. En la lista Plantillas, haga clic en Libro de Excel.
    3. En el cuadro Nombre, escriba ExcelCommandbar y, a continuación, haga clic en Aceptar.

      Aparecerá el Asistente para proyectos de Microsoft Office.
    4. Haga clic en Finalizar.
  2. En el menú Proyecto, haga clic en Agregar referencia.

    Aparecerá el cuadro de diálogo Agregar referencia.
    1. Haga clic en la ficha .NET. En la lista de componentes, haga clic en System.Drawing.dll y, a continuación, en Seleccionar.
    2. En la lista de componentes, haga clic en stdole y, a continuación, en Seleccionar.
    3. Haga clic en Aceptar.
  3. Agregue la directiva siguiente al principio de ThisWorkbook.vb:
    Imports System.Reflection

Agregar recursos de imágenes a un proyecto

En este apartado, agregaremos dos recursos de imágenes incrustadas al proyecto. Uno de ellos se empleará para las propiedades Picture del control CommandBar. El otro será para las propiedades Mask.

Agregar un recurso de imagen al proyecto que sirva como imagen del control CommandBar
  1. En el menú Proyecto, haga clic en Agregar componente. Aparecerá el cuadro de diálogo Agregar nuevo elemento.
  2. En la lista Plantillas, haga clic en Archivo de mapa de bits.
  3. Denomine Picture.bmp a la imagen y, a continuación, haga clic en Abrir.

    El mapa de bits se abrirá para su edición en el Editor de mapas de bits.
  4. En el menú Ver, haga clic en Ventana Propiedades. Establezca las propiedades Ancho y Alto del mapa de bits en 16.
  5. Rellene toda la superficie del mapa de bits con color rojo y, a continuación, dibuje un círculo verde en el centro.
  6. En el Explorador de soluciones, haga clic con el botón secundario del mouse en Picture.bmp y, después, seleccione Propiedades. Cambie la propiedad Acción de generación a Recurso incrustado.
  7. En el menú Archivo, haga clic en Guardar Picture.bmp.
Agregar un recurso de imagen al proyecto que sirva como máscara del control CommandBar
  1. En el Explorador de soluciones, haga clic en Picture.bmp.
  2. En el menú Archivo, haga clic en Copiar.
  3. En el menú Archivo, haga clic en Pegar.

    Se agregará al proyecto un nuevo archivo denominado Copia de Picture.bmp.
  4. En el Explorador de soluciones, haga clic con el botón secundario del mouse en Mask.bmp y, después, seleccione Cambiar nombre. Cambie el nombre a Mask.bmp.
  5. En el Explorador de soluciones, haga clic con el botón secundario del mouse en Mask.bmp y, después, seleccione Abrir. Cambie el color de fondo de la imagen al blanco y el color del círculo al negro.

    Nota al agregar la imagen con la máscara al control CommandBar, las áreas en negro de la máscara serán visibles. Las áreas en blanco quedarán como transparentes.
  6. En el menú Archivo, haga clic en Guardar Mask.bmp.

Agregar código para crear un CommandBar y un control CommandBar

En esta sección, agregaremos código al proyecto para cargar los recursos de imágenes incrustadas en secuencia, generaremos CommandBar y el control CommandBar y, tras ello, estableceremos las propiedades Picture y Mask del control CommandBar.
  1. Agregue la siguiente variable de clase a la clase OfficeCodeBehind:
    WithEvents CBarButton As Office.CommandBarButton
  2. En ThisWorkbook.vb, agregue el código siguiente al controlador de eventos ThisWorkbook_Open:
        'Get a reference to this assembly.
        Dim ThisAssembly As [Assembly]
        ThisAssembly = [Assembly].GetExecutingAssembly()
    
        'Load the Picture and the Mask image resources.
        Dim imgStreamPic As System.IO.Stream, imgStreamMask As System.IO.Stream
        imgStreamPic = ThisAssembly.GetManifestResourceStream("ExcelCommandBar.Picture.bmp")
        imgStreamMask = ThisAssembly.GetManifestResourceStream("ExcelCommandBar.Mask.bmp")
    
        'Obtain references to IPictureDisp for both images.
        Dim ax As New MyAxHost
        Dim Pic As stdole.IPictureDisp, Mask As stdole.IPictureDisp
        Pic = ax.IPictureDisp(Drawing.Image.FromStream(imgStreamPic))
        Mask = ax.IPictureDisp(Drawing.Image.FromStream(imgStreamMask))
    
        'Add a temporary CommandBar and a CommandBar button.
        Dim CBar As Office.CommandBar
        CBar = ThisApplication.CommandBars.Add("My CommandBar", , , True)
        CBarButton = CType(CBar.Controls.Add(Office.MsoControlType.msoControlButton), _
                    Office.CommandBarButton)
        CBarButton.Style = Office.MsoButtonStyle.msoButtonIconAndCaption
        CBarButton.Caption = "My Button"
        CBarButton.Tag = "My_Button"
        CBarButton.Picture = Pic
        CBarButton.Mask = Mask
        CBar.Visible = True
    
    
  3. En ThisWorkbook.vb, agregue la clase MyAxHost inmediatamente después del controlador de eventos ThisWorkbook_Open:
    Public Class MyAxHost
    
        Inherits System.Windows.Forms.AxHost
    
        Public Sub New()
            MyBase.New("59EE46BA-677D-4d20-BF10-8D8067CB8B33")
        End Sub
    
        Public Shared Function IPictureDisp(ByVal Image As System.Drawing.Image) As stdole.IPictureDisp
            IPictureDisp = CType(AxHost.GetIPictureDispFromPicture(Image), stdole.IPictureDisp)
        End Function
    
    End Class
  4. Agregue la siguiente función a la clase OfficeCodeBehind:
    Private Sub CBarButton_Click(ByVal Ctrl As Microsoft.Office.Core.CommandBarButton,  _
        ByRef CancelDefault As Boolean) Handles CBarButton.Click
        MessageBox.Show("You clicked My Button!")
    End Sub
  5. Presione F5 para generar el proyecto y, a continuación, ejecútelo.

    Observará cómo se abre ExcelCommandBar.xls en Excel. Cuando el libro de trabajo se abra, aparecerá My CommandBar. My CommandBar tendrá un control CommandButton con una imagen transparente.


Referencias

Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
286460 HOWTO: Set the Mask and Picture Properties for Office XP CommandBars

Propiedades

Id. de artículo: 824017 - Última revisión: jueves, 27 de febrero de 2014 - Versión: 2.0
La información de este artículo se refiere a:
  • Microsoft Visual Studio Tools for the Microsoft Office System
  • Microsoft Office Excel 2003
  • Microsoft Office Word 2003
Palabras clave: 
kbnosurvey kbarchive kbhowtomaster kbpia KB824017

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com