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

Ha finalizado el soporte técnico para Office 2003

Microsoft puso fin al soporte técnico para Office 2003 el 8 de abril de 2014. Este cambio ha afectado a las actualizaciones de software y las opciones de seguridad. Sepa qué significa esto en su caso y cómo puede mantenerse protegido.

Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
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.

Volver al principio

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
Volver al principio

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.
Volver al principio

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 FunctionEnd 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.
Volver al principio

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
Volver al principio
Propiedades

Id. de artículo: 824017 - Última revisión: 02/27/2014 16:01:13 - Revisión: 2.0

  • Microsoft Visual Studio Tools for the Microsoft Office System
  • Microsoft Office Excel 2003
  • Microsoft Office Word 2003
  • kbnosurvey kbarchive kbhowtomaster kbpia KB824017
Comentarios