Tutorial: Crear menús de acceso directo para marcadores
Actualización: noviembre 2007
Se aplica a |
---|
La información de este tema sólo se aplica a los proyectos y versiones especificados de Visual Studio Tools para Office de Microsoft Office. Tipo de proyecto
Versión de Microsoft Office
Para obtener más información, consulte Características disponibles por aplicación y tipo de proyecto. |
En este tutorial se muestra cómo crear menús de acceso directo para los controles Bookmark de una personalización en el nivel del documento para Word. Cuando un usuario hace clic con el botón secundario en el texto de un marcador, aparece un menú de acceso directo que proporciona las opciones de usuario para dar formato al texto.
Este tutorial ilustra las tareas siguientes:
Agregar texto y marcadores al documento de un proyecto en el nivel del documento en tiempo de diseño.
Crear un menú de acceso directo.
Comprobar la superposición de marcadores.
Nota: |
---|
Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio incluidos en las instrucciones siguientes. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Valores de configuración de Visual Studio. |
Requisitos previos
Necesita los componentes siguientes para completar este tutorial:
Visual Studio Tools para Office (componente opcional de Visual Studio 2008 Professional y Visual Studio Team System).
Microsoft Office Word 2003 o Microsoft Office Word 2007.
Visual Studio Tools para Office se instala, de forma predeterminada, con las versiones que se enumeran de Visual Studio. Para comprobar si está instalado, consulte Instalar Visual Studio Tools para Office.
Crear el proyecto
El primer paso es crear un proyecto de documento de Word en Visual Studio.
Para crear un nuevo proyecto
Cree un proyecto de documento de Word con el nombre Mi menú de acceso directo de marcador. En el asistente, seleccione Crear un nuevo documento. Para obtener más información, consulte Cómo: Crear proyectos de Visual Studio para Office.
Visual Studio abrirá el nuevo documento de Word en el diseñador y agregará el proyecto Mi menú de acceso directo de marcador al Explorador de soluciones.
Agregar texto y marcadores al documento
Agregue texto al documento y, a continuación, agregue dos marcadores superpuestos.
Para agregar texto al documento
Escriba el texto siguiente.
Éste es un ejemplo de cómo crear un menú de acceso directo al hacer clic con el botón secundario del mouse en el texto de un marcador.
Para agregar un control para marcador al documento
Desde la ficha Controles de Word del Cuadro de herramientas, arrastre un control Bookmark al documento.
Aparece el cuadro de diálogo Agregar control de marcador.
En el documento, seleccione las palabras crear un menú de acceso directo al hacer clic con el botón secundario en el texto y, después, haga clic en Aceptar.
bookmark1 se agregará al documento.
Agregue otro control Bookmark a las palabras haga clic con el botón secundario del mouse en el texto de un marcador.
bookmark2 se agregará al documento.
Nota: Las palabras al hacer clic con el botón secundario en el texto aparecerán tanto en bookmark1 como en bookmark2.
Al agregar un marcador a un documento en tiempo de diseño, se crea un control Bookmark. Puede programar en respuesta a varios eventos del marcador. Se puede escribir código en el evento BeforeRightClick del marcador para que aparezca un menú de acceso directo cuando el usuario haga clic con el botón secundario en el texto del marcador.
Crear el menú de acceso directo
Para crear el menú de acceso directo
En el Explorador de soluciones, haga clic con el botón secundario en ThisDocument y, después, haga clic en Ver código.
Declare las variables CommandBar y una variable de marcador en el nivel de clase.
Private commandBar As Office.CommandBar Private selectedBookmark As Microsoft.Office.Tools.Word.Bookmark WithEvents boldText As Office.CommandBarButton WithEvents ItalicText As Office.CommandBarButton
private Office.CommandBar commandBar; private Office.CommandBarButton boldText; private Office.CommandBarButton italicText; private Microsoft.Office.Tools.Word.Bookmark selectedBookmark; const int WordTrue = -1; const int WordFalse = 0;
Agregue un método para crear el menú.
Private Sub AddPopUp() commandBar = Application.CommandBars.Add( _ "FormatText", Office.MsoBarPosition.msoBarPopup, , True) ' Add a button and set the style, caption, icon and tag. boldText = CType(commandBar.Controls.Add(1), Office.CommandBarButton) With boldText .Style = Office.MsoButtonStyle.msoButtonIconAndCaption .Caption = "Bold" .FaceId = 113 .Tag = "0" End With ' Add a button and set the style, caption, icon and tag. ItalicText = CType(commandBar.Controls.Add(1), Office.CommandBarButton) With ItalicText .Style = Office.MsoButtonStyle.msoButtonIconAndCaption .Caption = "Italic" .FaceId = 114 .Tag = "1" End With CType(Me.AttachedTemplate, Microsoft.Office.Interop.Word.Template).Saved = True End Sub
private void AddPopUp() { commandBar = Application.CommandBars.Add("FormatText", Office.MsoBarPosition.msoBarPopup, missing, true); // Add a button and set the style, caption, icon and tag. boldText = (Office.CommandBarButton)commandBar.Controls.Add( 1, missing, missing, missing, missing); boldText.Style = Office.MsoButtonStyle.msoButtonCaption; boldText.Caption = "Bold"; boldText.FaceId = 113; boldText.Tag = "0"; // Add a button and set the style, caption, icon and tag. italicText = (Office.CommandBarButton)commandBar.Controls.Add( 1, missing, missing, missing, missing); italicText.Style = Office.MsoButtonStyle.msoButtonCaption; italicText.Caption = "Italic"; italicText.FaceId = 114; italicText.Tag = "1"; // Handle the click events with the ButtonClick procedure. boldText.Click += new Microsoft.Office.Core ._CommandBarButtonEvents_ClickEventHandler(ButtonClick); italicText.Click += new Microsoft.Office.Core ._CommandBarButtonEvents_ClickEventHandler(ButtonClick); ((Microsoft.Office.Interop.Word.Template)this.AttachedTemplate).Saved = true; }
Llame al método AddPopup desde el evento Startup de ThisDocument.
Private Sub ThisDocument_Startup(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Me.Startup AddPopUp() End Sub
private void ThisDocument_Startup(object sender, System.EventArgs e) { AddPopUp(); }
Para aplicar formato al texto del marcador
Agregue un controlador de eventos ButtonClick para aplicar formato al marcador:
Private Sub ButtonClick(ByVal ctrl As Office.CommandBarButton, _ ByRef Cancel As Boolean) Handles boldText.Click, ItalicText.Click Select Case ctrl.Caption Case "Bold" selectedBookmark.Bold = Not selectedBookmark.Bold Case "Italic" selectedBookmark.Italic = Not selectedBookmark.Italic End Select Me.ActiveWindow.SetFocus() End Sub
private void ButtonClick(Microsoft.Office.Core.CommandBarButton Ctrl, ref bool CancelDefault) { if (Ctrl.Caption == "Bold") { if (selectedBookmark.Bold == WordTrue) { selectedBookmark.Bold = WordFalse; } else { selectedBookmark.Bold = WordTrue; } } else if (Ctrl.Caption == "Italic") { if (selectedBookmark.Italic == WordTrue) { selectedBookmark.Italic = WordFalse; } else { selectedBookmark.Italic = WordTrue; } } }
Agregue un controlador de eventos showPopupMenu para controlar los eventos BeforeRightClick de ambos marcadores.
Nota: Deberá escribir código para controlar las situaciones en que se superpongan los marcadores. De lo contrario, se llamará de forma predeterminada al código de todos los marcadores de la selección.
Private Sub showPopupMenu(ByVal sender As Object, ByVal e _ As Microsoft.Office.Tools.Word.ClickEventArgs) _ Handles Bookmark1.BeforeRightClick, Bookmark2.BeforeRightClick Dim startPosition As Integer = 0 Dim i As Integer ' If bookmarks overlap, get bookmark closest to cursor. For i = 1 To e.Selection.Bookmarks.Count If e.Selection.Bookmarks(i).Start > startPosition Then startPosition = e.Selection.Bookmarks(i).Start End If Next ' If closest bookmark is the sender, show the popup. If DirectCast(sender, Microsoft.Office.Tools.Word.Bookmark).Start = _ startPosition Then selectedBookmark = DirectCast(sender, Microsoft.Office.Tools.Word.Bookmark) commandBar.ShowPopup() e.Cancel = True End If End Sub
private void showPopupMenu(object sender, Microsoft.Office.Tools.Word.ClickEventArgs e) { int startPosition = 0; // If bookmarks overlap, get bookmark closest to cursor. for (int i = 1; i <= e.Selection.Bookmarks.Count; i++) { object o = i; if (e.Selection.Bookmarks.get_Item(ref o).Start > startPosition) { startPosition = e.Selection.Bookmarks.get_Item(ref o).Start; } } // If closest bookmark is the sender, show the popup. if (((Microsoft.Office.Tools.Word.Bookmark)sender).Start == startPosition) { selectedBookmark = (Microsoft.Office.Tools.Word.Bookmark)sender; commandBar.ShowPopup(missing, missing); e.Cancel = true; } }
En C#, debe agregar controladores de eventos para los controles de marcadores al evento Startup. Para obtener más información sobre cómo crear controladores de eventos, vea Cómo: Crear controladores de eventos en Visual Studio Tools para Office
this.bookmark1.BeforeRightClick += new Microsoft.Office.Tools.Word. ClickEventHandler(showPopupMenu); this.bookmark2.BeforeRightClick += new Microsoft.Office.Tools.Word. ClickEventHandler(showPopupMenu);
Probar la aplicación
Pruebe el documento para comprobar si los elementos de menú en negrita y cursiva aparecen en el menú de acceso directo al hacer clic con el botón secundario en el texto de un marcador y si se ha aplicado formato al texto de forma correcta.
Para probar el documento
Presione F5 para ejecutar el proyecto.
Haga clic con el botón secundario en el primer marcador y, a continuación, haga clic en Negrita.
Compruebe que todo el texto de bookmark1 aparece en negrita.
Haga clic con el botón secundario en el texto donde los marcadores se superponen, y, a continuación, haga clic en Cursiva.
Compruebe que todo el texto de bookmark2 está en cursiva y que únicamente la parte de texto de bookmark1 que se superpone a bookmark2 está en cursiva.
Pasos siguientes
Éstas son algunas de las tareas que pueden venir a continuación:
Escribir código de respuesta a los eventos de controles host en Excel. Para obtener más información, consulte Tutorial: Programar basándose en los eventos de un control NamedRange.
Utilizar una casilla para cambiar el formato de un marcador. Para obtener más información, vea Tutorial: Cambiar el formato de un documento utilizando controles CheckBox.
Vea también
Conceptos
Personalización de la interfaz de usuario de Office
Descripción de los parámetros opcionales en las soluciones de Office