Share via


Tutorial: Creación de una plantilla mediante controles de contenido

Este tutorial muestra cómo crear una personalización de nivel de documento que usa controles de contenido para crear contenido estructurado y reutilizable en una plantilla de Microsoft Office Word.

Se aplica a: la información de este tema se aplica a proyectos de nivel de documento para Word. Para obtener más información, consulte Características disponibles por aplicación de Office lication y tipo de proyecto.

Word le permite crear una colección de elementos de documento reutilizables, denominados bloques de creación. Este tutorial muestra cómo crear dos tablas como bloques de creación. Cada tabla contiene varios controles de contenido que pueden contener diferentes tipos de contenido, como texto sin formato o fechas. Una de las tablas contiene información sobre un empleado y la otra tabla contiene los comentarios del cliente.

Después de crear un documento a partir de la plantilla, puede agregar cualquiera de las tablas al documento usando varios objetos BuildingBlockGalleryContentControl, que muestran los bloques de creación disponibles en la plantilla.

En este tutorial se muestran las tareas siguientes:

  • Crear tablas que contienen controles de contenido en una plantilla de Word en tiempo de diseño.

  • Rellenar un control de contenido de cuadro combinado y un control de contenido de lista desplegable mediante programación.

  • Impedir que los usuarios editen una tabla especificada.

  • Agregar tablas a la colección de bloques de creación de una plantilla.

  • Crear un control de contenido que muestra los bloques de creación disponibles en la plantilla.

    Nota:

    Es posible que tu equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones. 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 Personalizar el IDE.

Requisitos previos

Necesitará los componentes siguientes para completar este tutorial:

Crear un nuevo proyecto de plantilla de Word

Cree una plantilla de Word para que los usuarios pueden crear fácilmente sus propias copias.

Para crear un nuevo proyecto de plantilla de Word

  1. Cree un proyecto de plantilla de Word con el nombre MyBuildingBlockTemplate. En el asistente, cree un nuevo documento en la solución. Para obtener más información, vea Cómo: Crear proyectos de Office en Visual Studio.

    Visual Studio abre la nueva plantilla de Word en el diseñador y agrega el proyecto MyBuildingBlockTemplate a Explorador de soluciones.

Creación de la tabla employee

Cree una tabla que contenga cuatro tipos diferentes de controles de contenido donde el usuario pueda escribir información sobre un empleado.

Para crear la tabla de empleados

  1. En la plantilla de Word hospedada en el diseñador de Visual Studio, en la cinta de opciones, haga clic en la pestaña Insertar .

  2. En el grupo Tablas , haga clic en Tabla e inserte una tabla con dos columnas y cuatro filas.

  3. Escriba texto en la primera columna de modo que se parezca a la siguiente columna:

    Nombre del empleado
    Fecha de contratación
    Título
    Imagen
  4. Haga clic en la primera celda de la segunda columna (junto a Nombre del empleado).

  5. En la cinta de opciones, haga clic en la pestaña Desarrollador .

    Nota:

    Si la pestaña Desarrollador no está visible, primero debe mostrarla. Para obtener más información, vea Cómo: Mostrar la pestaña programador en la cinta de opciones.

  6. En el grupo Controles, haga clic en el botón PlainTextContentControl Texto para agregar un PlainTextContentControl elemento a la primera celda.

  7. Haga clic en la segunda celda de la segunda columna (junto a Fecha de contratación).

  8. En el grupo Controles, haga clic en el botón DatePickerContentControl Selector de fecha para agregar un DatePickerContentControl elemento a la segunda celda.

  9. Haga clic en la tercera celda de la segunda columna (junto a Título).

  10. En el grupo Controles, haga clic en el botón ComboBoxContentControl Cuadro combinado para agregar un ComboBoxContentControl elemento a la tercera celda.

  11. Haga clic en la última celda de la segunda columna (junto a Imagen).

  12. En el grupo Controles, haga clic en el botón PictureContentControl Control de contenido de imagen para agregar un PictureContentControl elemento a la última celda.

Creación de la tabla de comentarios del cliente

Cree una tabla que contenga tres tipos diferentes de controles de contenido donde el usuario pueda escribir información sobre los comentarios de los clientes.

Para crear la tabla de comentarios de clientes

  1. En la plantilla de Word, haga clic en la línea después de la tabla employee que agregó anteriormente y presione Entrar para agregar un nuevo párrafo.

  2. En la cinta de opciones, haga clic en la pestaña Insertar .

  3. En el grupo Tablas , haga clic en Tabla e inserte una tabla con dos columnas y tres filas.

  4. Escriba texto en la primera columna de modo que se parezca a la siguiente columna:

    Nombre del cliente
    Clasificación de satisfacción
    Comentarios
  5. Haga clic en la primera celda de la segunda columna (junto a Nombre del cliente).

  6. En la cinta de opciones, haga clic en la pestaña Desarrollador .

  7. En el grupo Controles, haga clic en el botón PlainTextContentControl Texto para agregar un PlainTextContentControl elemento a la primera celda.

  8. Haga clic en la segunda celda de la segunda columna (junto a Clasificación de satisfacción).

  9. En el grupo Controles, haga clic en el botón DropDownListContentControl Lista desplegable para agregar un DropDownListContentControl elemento a la segunda celda.

  10. Haga clic en la última celda de la segunda columna (junto a Comentarios).

  11. En el grupo Controles, haga clic en el botón RichTextContentControl Texto enriquecido para agregar un RichTextContentControl elemento a la última celda.

Rellenar el cuadro combinado y la lista desplegable mediante programación

Puede inicializar controles de contenido en tiempo de diseño mediante la ventana Propiedades de Visual Studio. También puede inicializarlos en tiempo de ejecución, lo que le permite establecer sus estados iniciales dinámicamente. Para este tutorial, use código para rellenar las entradas en ComboBoxContentControl y DropDownListContentControl en tiempo de ejecución para que pueda ver cómo funcionan estos objetos.

Para modificar la interfaz de usuario de los controles de contenido mediante programación

  1. En Explorador de soluciones, haga clic con el botón derecho en ThisDocument.cs o ThisDocument.vb y, a continuación, haga clic en Ver código.

  2. Agregue el siguiente código a la clase ThisDocument . Este código declara varios objetos que usará más adelante en este tutorial.

    private Microsoft.Office.Tools.Word.GroupContentControl groupControl1;
    private Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl buildingBlockControl1;
    private Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl buildingBlockControl2;
    
  3. Agregue el siguiente código al método ThisDocument_Startup de la clase ThisDocument. Este código agrega entradas a ComboBoxContentControl y DropDownListContentControl en las tablas y establece el texto del marcador de posición que se muestra en cada uno de estos controles antes de que el usuario los edite.

    comboBoxContentControl1.PlaceholderText = "Choose a title, or enter your own";
    comboBoxContentControl1.DropDownListEntries.Add("Engineer", "Engineer", 0);
    comboBoxContentControl1.DropDownListEntries.Add("Designer", "Designer", 1);
    comboBoxContentControl1.DropDownListEntries.Add("Manager", "Manager", 2);
    
    dropDownListContentControl1.PlaceholderText =
        "Choose a rating (1 lowest, 3 highest)";
    dropDownListContentControl1.DropDownListEntries.Add("1", "1", 0);
    dropDownListContentControl1.DropDownListEntries.Add("2", "2", 1);
    dropDownListContentControl1.DropDownListEntries.Add("3", "3", 2);
    

Impedir que los usuarios editen la tabla de empleados

Use el objeto GroupContentControl que declaró anteriormente para proteger la tabla de empleados. Después de proteger la tabla, los usuarios todavía pueden editar los controles de contenido de la tabla. Sin embargo, no se puede editar el texto de la primera columna ni modificar la tabla de otras maneras, por ejemplo agregando o eliminando filas y columnas. Para obtener más información sobre cómo usar para GroupContentControl proteger una parte de un documento, vea Controles de contenido.

Para impedir que los usuarios editen la tabla de empleados

  1. Agregue el código siguiente al método ThisDocument_Startup de la clase ThisDocument después del código que agregó en el paso anterior. Este código impide que los usuarios editen la tabla de empleados al colocarla dentro del objeto GroupContentControl que declaró anteriormente.

    this.Tables[1].Range.Select();
    groupControl1 = this.Controls.AddGroupContentControl("groupControl1");
    

Adición de las tablas a la colección de bloques de creación

Agregue las tablas a una colección de bloques de creación de documentos en la plantilla para que los usuarios puedan insertar las tablas creadas en el documento. Para obtener más información sobre los bloques de creación de documentos, consulte Controles de contenido.

Para agregar las tablas a los bloques de creación en la plantilla

  1. Agregue el código siguiente al método ThisDocument_Startup de la clase ThisDocument después del código que agregó en el paso anterior. Este código agrega nuevos bloques de creación que contienen las tablas a la colección Microsoft.Office.Interop.Word.BuildingBlockEntries, que contiene todos los bloques de creación reutilizables de la plantilla. Los nuevos bloques de creación se definen en una nueva categoría denominada Employee y Customer Information y se les asigna el tipo Microsoft.Office.Interop.Word.WdBuildingBlockTypes.wdTypeCustom1de bloque de creación .

    Word.Template template1 = this.AttachedTemplate as Word.Template;
    
    if (template1 != null)
    {
        object description = null;
        template1.BuildingBlockEntries.Add("Employee Table",
            Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information",
            this.Tables[1].Range, ref description, Word.WdDocPartInsertOptions.wdInsertContent);
        template1.BuildingBlockEntries.Add("Customer Table",
            Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information",
            this.Tables[2].Range, ref description, Word.WdDocPartInsertOptions.wdInsertContent);
    }
    
  2. Agregue el código siguiente al método ThisDocument_Startup de la clase ThisDocument después del código que agregó en el paso anterior. Este código elimina las tablas de la plantilla. Las tablas ya no son necesarias, ya que se agregaron a la galería de bloques de creación reutilizables de la plantilla. El código sitúa primero el documento en modo de diseño para que se pueda eliminar la tabla de empleados protegida.

    if (!this.FormsDesign)
    {
        this.ToggleFormsDesign();
    }
    this.Tables[2].Delete();
    this.Tables[1].Delete();
    this.ToggleFormsDesign();
    

Crear un control de contenido que muestre los bloques de creación

Cree un control de contenido que proporcione acceso a los bloques de creación (es decir, las tablas) que creó anteriormente. Los usuarios pueden hacer clic en este control para agregar las tablas al documento.

Para crear un control de contenido que muestra los bloques de creación

  1. Agregue el código siguiente al método ThisDocument_Startup de la clase ThisDocument después del código que agregó en el paso anterior. Este código inicializa el objeto BuildingBlockGalleryContentControl que declaró anteriormente. BuildingBlockGalleryContentControl muestra todos los bloques de creación definidos en la categoría Employee y Customer Information y que tienen el tipo Microsoft.Office.Interop.Word.WdBuildingBlockTypes.wdTypeCustom1de bloque de creación .

    buildingBlockControl1 = this.Controls.AddBuildingBlockGalleryContentControl(
        this.Paragraphs[1].Range, "buildingBlockControl1");
    buildingBlockControl1.BuildingBlockCategory = "Employee and Customer Information";
    buildingBlockControl1.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1;
    buildingBlockControl1.PlaceholderText = "Choose your first building block";
    
    buildingBlockControl2 = this.Controls.AddBuildingBlockGalleryContentControl(
        this.Paragraphs[2].Range, "buildingBlockControl2");
    buildingBlockControl2.BuildingBlockCategory = "Employee and Customer Information";
    buildingBlockControl2.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1;
    buildingBlockControl2.PlaceholderText = "Choose your second building block";
    

Prueba del proyecto

Los usuarios pueden hacer clic en los controles de la galería de bloques de creación del documento para insertar la tabla de empleados o la tabla de comentarios de clientes. Los usuarios pueden escribir o seleccionar las respuestas en los controles de contenido de ambas tablas. Los usuarios pueden modificar otras partes de la tabla de comentarios de clientes, pero no deben poder modificar otras partes de la tabla de empleados.

Para probar la tabla de empleados

  1. Presione F5 para ejecutar el proyecto.

  2. Haga clic en Elegir el primer bloque de creación para mostrar el primer control de contenido de la galería de bloques de creación.

  3. Haga clic en la flecha desplegable situada junto al encabezado Galería personalizada 1 del control y seleccione Tabla de empleados.

  4. Haga clic en la celda situada a la derecha de la celda Nombre del empleado y escriba un nombre.

    Compruebe que solo puede agregar texto a esta celda. PlainTextContentControl permite a los usuarios agregar solo texto, no otros tipos de contenido, como una imagen o una tabla.

  5. Haga clic en la celda situada a la derecha de la celda Fecha de contratación y seleccione una fecha en el selector de fechas.

  6. Haga clic en la celda situada a la derecha de la celda Título y seleccione uno de los títulos de trabajo en el cuadro combinado.

    También puede escribir el nombre de un puesto de trabajo que no está en la lista. Esto es posible porque ComboBoxContentControl permite a los usuarios seleccionar las entradas de una lista o escribir sus propias entradas.

  7. Haga clic en el icono de la celda situada a la derecha de la celda Imagen y vaya a una imagen para mostrarla.

  8. Intente agregar filas o columnas a la tabla e intente eliminar filas y columnas de la tabla. Compruebe que no se puede modificar la tabla. GroupContentControl impide realizar ninguna modificación.

Para probar la tabla de comentarios de clientes

  1. Haga clic en Elegir el segundo bloque de creación para mostrar el segundo control de contenido de la galería de bloques de creación.

  2. Haga clic en la flecha desplegable situada junto al encabezado Galería personalizada 1 del control y seleccione Tabla de clientes.

  3. Haga clic en la celda situada a la derecha de la celda Customer Name (Nombre del cliente) y escriba un nombre.

  4. Haga clic en la celda situada a la derecha de la celda Clasificación de satisfacción y seleccione una de las opciones disponibles.

    Compruebe que no puede escribir una entrada por su cuenta. DropDownListContentControl permite a los usuarios seleccionar solo las entradas de una lista.

  5. Haga clic en la celda situada a la derecha de la celda Comentarios y escriba algunos comentarios.

    También puede agregar contenido que no sea texto, como una imagen o una tabla insertada. Esto es posible porque RichTextContentControl permite a los usuarios agregar contenido que no sea texto.

  6. Compruebe que puede agregar filas o columnas a la tabla y que puede eliminar filas y columnas de la tabla. Esto es posible porque no protegió la tabla colocándola en GroupContentControl.

  7. Cierre la plantilla.

Pasos siguientes

Puede obtener más información sobre cómo usar controles de contenido en este tema: