Cómo: Trabajar con ventanas de formularios usando el modelo de objetos de InfoPath 2003
Cuando se trabaja con un formulario de InfoPath mediante programación, es posible escribir código para tener acceso a las ventanas del formulario y, a continuación, personalizar algunos de los elementos que contienen. El modelo de objetos compatible con InfoPath admite el acceso a las ventanas de los formularios mediante la interfaz WindowObject en asociación con la interfaz WindowsCollection.
Hay dos tipos de ventanas en InfoPath:
La ventana de edición, que se usa cuando un usuario rellena un formulario.
La ventana de diseño, que se usa cuando un usuario diseña una plantilla de formulario.
Cuando se escribe código en una plantilla de formulario, la ventana de edición es la que proporciona la funcionalidad más práctica, puesto que permite utilizar una instancia de WindowObject que haga referencia al mismo para tener acceso a gran variedad de propiedades y métodos para personalizar la experiencia de edición del formulario.
Información general sobre la interfaz WindowsCollection
La interfaz WindowsCollection proporciona las siguientes propiedades que los programadores de plantillas pueden utilizar para administrar las instancias de WindowObject que contiene.
Nombre | Descripción |
---|---|
Propiedad Count |
Devuelve el número de objetos Window que contiene una colección. |
Propiedad Item |
Devuelve una referencia al objeto Window especificado.
Nota:
Visual C# obtiene acceso a las colecciones mediante un indizador, en lugar de llamar a la propiedad Item. Por ejemplo,
thisApplication.Windows[0].Caption .
|
Información general del objeto Window
La interfaz WindowObject proporciona el método y las propiedades siguientes que los programadores de formularios pueden utilizar para interactuar con una ventana de InfoPath. La compatibilidad con estos métodos y propiedades varía según el tipo de ventana (XdWindowType) con el que se esté trabajando. Algunos métodos y propiedades sólo funcionan con el tipo de ventana de editor (XdWindowType.xdEditorWindow). Los demás métodos y propiedades funcionan tanto con el tipo de ventana de editor como con el tipo de ventana de diseñador (XdWindowType.xdDesignerWindow). Asimismo, como sucede con todos los miembros del modelo de objetos de InfoPath, cuando se llama desde una plantilla de formulario, la compatibilidad con métodos y propiedades varía según el nivel de seguridad y la forma en que se haya implementado el formulario.
Nombre | Descripción | Compatibilidad con el tipo de ventana |
---|---|---|
Método Activate |
Designa la ventana como la que está activa en ese momento. |
Tanto el tipo xdDesignWindow como el tipo xdEditorWindow |
Propiedad Active |
Devuelve un valor Boolean que indica si la ventana es la que está activa en ese momento |
Tanto el tipo xdDesignWindow como el tipo xdEditorWindow |
Propiedad Caption |
Propiedad de lectura y escritura que devuelve o establece el texto del título de la ventana representada por el objeto Window. |
Sólo el tipo xdEditorWindow |
Método Close |
Cierra una ventana. |
Sólo el tipo xdEditorWindow |
Propiedad CommandBars |
Devuelve una referencia al objeto CommandBars de Microsoft Office. |
Tanto el tipo xdDesignWindow como el tipo xdEditorWindow |
Propiedad Height |
Una propiedad de lectura y escritura del tipo de entero largo que especifica el alto de la ventana representada por el objeto Window se mide en puntos. |
Tanto el tipo xdDesignWindow como el tipo xdEditorWindow |
Propiedad Left |
Una propiedad de lectura y escritura del tipo de entero largo que especifica la posición horizontal de la ventana representada por el objeto Window se mide en puntos. |
Tanto el tipo xdDesignWindow como el tipo xdEditorWindow |
Propiedad MailEnvelope |
Devuelve una referencia al objeto MailEnvelopeObject. |
Sólo el tipo xdEditorWindow |
Propiedad TaskPanes |
Devuelve una referencia a la colección TaskPanesCollection. |
Tanto el tipo xdDesignWindow como el tipo xdEditorWindow |
Propiedad Top |
Una propiedad de lectura y escritura del tipo de entero largo que especifica la posición vertical de la ventana representada por el objeto Window se mide en puntos. |
Tanto el tipo xdDesignWindow como el tipo xdEditorWindow |
Propiedad WindowType |
Devuelve un número que indica el tipo de ventana, basándose en la enumeración XdWindowType. |
Tanto el tipo xdDesignWindow como el tipo xdEditorWindow |
Propiedad Width |
Una propiedad de lectura y escritura del tipo de entero largo que especifica el ancho de la ventana representada por el objeto Window, se mide en puntos. |
Tanto el tipo xdDesignWindow como el tipo xdEditorWindow |
Propiedad WindowState |
Una propiedad de lectura o escritura del tipo XdWindowState que devuelve o establece el estado de la ventana que representa el objeto Window. |
Tanto el tipo xdDesignWindow como el tipo xdEditorWindow |
Propiedad XDocument |
Devuelve una referencia al objeto _XDocument asociado a la ventana. |
Sólo el tipo xdEditorWindow |
Uso de las interfaces WindowsCollection y Window
El acceso a la interfaz WindowsCollection se puede obtener a través de la propiedad Windows de la interfaz Application. Al utilizar la interfaz WindowsCollection para obtener acceso a las ventanas de un formulario, se utiliza un indizador (en Visual C#) o se transmite un número entero largo a la propiedad Item (en Visual Basic) para devolver una referencia a una instancia de la interfaz WindowObject. Por ejemplo, el código siguiente establece una referencia a la primera interfaz WindowObject contenida en la interfaz WindowsCollection.
WindowObject objWindow = thisApplication.Windows[0];
Dim objWindow As WindowObject = thisApplication.Windows(0)
No obstante, se puede tener acceso a la ventana que está actualmente abierta directamente mediante la propiedad ActiveWindow de la interfaz Application, sin tener que utilizar la interfaz WindowsCollection, como se muestra en el siguiente ejemplo de código:
WindowObject objWindow = thisApplication.ActiveWindow;
Dim objWindow As WindowObject = thisApplication.ActiveWindow
Nota: |
---|
Al depurar un proyecto de código administrado de InfoPath, la propiedad ActiveWindow devuelve siempre el valor null porque la ventana de depuración está activa. |
El acceso a la interfaz WindowObject se puede obtener mediante la propiedad Window de la interfaz View, que está asociada al documento XML subyacente del formulario. La propiedad View de la interfaz XDocument se utiliza para obtener acceso al objeto View. Por ejemplo, el código siguiente establece una referencia a la interfaz WindowObject asociada a la vista del documento XML subyacente de un formulario:
WindowObject objWindow = thisXDocument.View.Window;
Dim objWindow As WindowObject = thisXDocument.View.Window
Nota: |
---|
Algunos de los métodos y las propiedades del objeto Window se utilizan sólo para editar el tipo de ventana; si se utilizan con el tipo de ventana de diseño, devolverán un error. Los métodos y propiedades que admite cada tipo de ventana se muestran en la tabla anterior. Puede utilizar la propiedad WindowType en el código para averiguar con qué tipo de ventana está trabajando. |