Compartir a través de


Cómo: Mostrar alertas y cuadros de diálogo con el modelo de objetos de InfoPath 2003

Cuando se escribe código para ampliar la funcionalidad de una plantilla de formulario que utiliza el modelo de objetos de InfoPath 2003, con frecuencia resulta útil proporcionar al usuario información en un cuadro de diálogo. Para mostrar mediante programación un cuadro de diálogo y los elementos relacionados de la interfaz de usuario en InfoPath, se utilizan los métodos de la interfaz UIObject.

Información general sobre la interfaz UIObject

La interfaz UIObject proporciona los siguientes métodos que los programadores de formularios pueden utilizar para mostrar distintos tipos de cuadros de diálogo a los usuarios de InfoPath mientras rellenan un formulario.

Nombre Descripción

Alert

Muestra un cuadro de mensaje sencillo que contiene una cadena de mensaje especificada. Utilice este método si no necesita obtener información del usuario y sólo desea mostrar un mensaje. El cuadro de diálogo que se muestra se cierra haciendo clic en el botón Aceptar.

Confirm

Muestra un cuadro de mensaje con botones para obtener información de un usuario. El valor que se devuelve es una de las constantes enumeradas XdConfirmChoice.

SetSaveAsDialogFileName

Establece el nombre de archivo predeterminado de un formulario en el cuadro de diálogo Guardar como.

SetSaveAsDialogLocation

Establece la ubicación inicial desde la que empieza a examinar el cuadro de diálogo Guardar como al abrirlo.

ShowMailItem

Crea un mensaje de correo electrónico nuevo en la aplicación de correo electrónico predeterminada y le adjunta el formulario abierto en ese momento.

ShowModalDialog

Muestra un cuadro de diálogo modal basado en el archivo .html especificado y en los argumentos posicionales. Deberá utilizar este método si desea mostrar más de un simple mensaje al usuario y necesita obtener de éste datos que van más allá de la confirmación que proporcionan los botones | No | Cancelar que se muestran en el método Confirm.

ShowSignatureDialog

Muestra el cuadro de diálogo integrado Firmas digitales.

Uso de la interfaz UIObject

El acceso a la interfaz UIObject se obtiene mediante la propiedad UI de la interfaz XDocument, a la que a su vez se obtiene acceso mediante la variable thisXDocument que se inicializa en el método _Startup de la clase de código de formulario. En el siguiente ejemplo, se muestra el uso de los métodos ShowMailItem y Alert de la interfaz UIObject:

thisXDocument.UI.ShowMailItem("someone@example.com","", "", 
   "Updated Form", "Here is the updated form that you requested.");

thisXDocument.UI.Alert("The e-mail message has been created.");
thisXDocument.UI.ShowMailItem("someone@example.com", "", "", _
   "Updated Form", "Here is the updated form that you requested.")

thisXDocument.UI.Alert("The e-mail message has been created.")

Uso del método ShowModalDialog

En el siguiente ejemplo, se muestra cómo utilizar el método ShowModalDialog de la interfaz UIObject para mostrar un cuadro de diálogo personalizado definido en el archivo HTML show.html.

public void CTRL1_5_OnClick(DocActionEvent e)
{
   // Write your code here.
   thisXDocument.UI.ShowModalDialog(
      "show.html",(object)thisXDocument,200,450,50,50);
}
Public Sub CTRL1_5_OnClick(ByVal e As DocActionEvent)
   ' Write your code here.
   thisXDocument.UI.ShowModalDialog( _
      "show.html", _
      DirectCast(thisXDocument, Object), 200, 450, 50, 50)
End Sub

Tanto los ejemplos de C# como los de Visual Basic dependen de un archivo HTML denominado "show.html" que define el cuadro de diálogo que invoca el método ShowModalDialog. Este archivo HTML muestra algunos datos del formulario y un cuadro de texto al usuario para que éste escriba un valor. El valor del cuadro de texto se devuelve al formulario al cerrar el cuadro de diálogo.

<HTML>
   <HEAD>
      <script language="JScript">
function BtnClick()
{
   xdocument = window.dialogArguments;
   myXml = xdocument.DOM.xml
   aForm = oForm.elements;
   aForm.textBox.value = myXml;
}
      </script>
   </HEAD>
   <BODY>
      <H1><FONT face="Arial">This is a modal dialog box</FONT> &nbsp;
      </H1>
      <BUTTON onclick="BtnClick()" id="BUTTON1" type="button">
         Get XML DOM
      </BUTTON>
      <FORM ID="oForm">
         <INPUT Type="text" name="textBox">
      </FORM>
   </BODY>
</HTML>

Importante

El método ShowModal requiere plena confianza para su ejecución o vista previa. Para obtener más información, vea Cómo: Obtener una vista previa y depurar plantillas de formulario con código administrado que requieren plena confianza.

En lugar de utilizar un archivo HTML para mostrar el contenido de un cuadro de diálogo, como en el ejemplo anterior, puede usar un formulario de Windows Forms como cuadro de diálogo de un formulario de InfoPath. En este ejemplo, se explica cómo mostrar un formulario de Windows Forms como cuadro de diálogo de un botón denominado ShowDialog en un formulario de InfoPath. No es necesario utilizar la interfaz UIObject ni ningún otro miembro del modelo de objetos de InfoPath.

Nota

No se puede crear ni añadir un formulario de Windows Forms a una plantilla de formulario de InfoPath creada con Microsoft Visual Studio Tools para aplicaciones (VSTA). Para crear y añadir un formulario de Windows Forms a un proyecto de plantilla de formulario, use Microsoft Visual Studio 2005 Tools para 2007 Microsoft Office System y Visual Studio 2005 o Visual Studio 2008 con Visual Studio Tools para Office.

public void ShowDialog_OnClick(DocActionEvent e)
{
   // Instantiate and show Form1.
   Form1 myform = new Form1();
   myform.Show();
}
Public Sub ShowDialog_OnClick(ByVal e As DocActionEvent)
   ' Instantiate and show Form1.
   Dim MyForm As New Form1()
   MyForm.Show()
End Sub

Tanto los ejemplos de Visual C# como los de Visual Basic dependen de un formulario de Windows Froms denominado "Form1" que define el cuadro de diálogo que invoca el controlador de eventos para el botón ShowDialog del formulario de InfoPath. Para agregar Form1 al proyecto de InfoPath, utilice el procedimiento siguiente.

Adición de un formulario Windows Forms a un proyecto de InfoPath

  1. En el Explorador de soluciones, haga clic con el botón secundario en el proyecto de código de formulario (nombredeproyectoFormCode), seleccione Agregar y, a continuación, haga clic en Agregar Windows Form.

  2. En el cuadro de diálogo Agregar nuevo elemento, escriba el nombre del formulario y, a continuación, haga clic en Abrir.

  3. Desde el Cuadro de herramientas, arrastre un control Botón hasta el formulario.

  4. Haga doble clic en el botón y, a continuación, añada el código siguiente al controlador de eventos del botón.

   // Close the form.
   this.Close();
   ' Close the form.
   Me.Close()