Практическое руководство. Работа с окнами форм с помощью объектной модели InfoPath 2003
При работе с формой InfoPath программным образом можно написать код для доступа к окнам формы, а затем настроить некоторые содержащиеся в них элементы. Объектная модель, совместимая с InfoPath 2003, поддерживает доступ к окнам форм посредством использования интерфейса WindowObject в сочетании с интерфейсом WindowsCollection.
В InfoPath существует два типа окон:
Окно редактирования, которое используется при заполнении формы пользователем.
Окно разработки, которое используется при разработке пользователем шаблона формы.
При написании кода в шаблоне формы наиболее удобные функциональные возможности обеспечивает окно редактирования, поскольку оно позволяет использовать экземпляр WindowObject, который указывает на него для доступа к целому ряду свойств и методов, которые можно использовать для настройки процесса редактирования формы.
Обзор интерфейса WindowsCollection
Интерфейс WindowsCollection предоставляет указанные ниже свойства, которыми разработчики форм могут пользоваться для управления экземплярами WindowObject, содержащимися в интерфейсе.
Имя | Описание |
---|---|
CountP:Microsoft.Office.InfoPath.Window.XmlForm |
Возвращает количество объектов Window в семействе. |
ItemP:Microsoft.Office.InfoPath.WindowCollection.Item(System.Int32) |
Возвращает ссылку на указанный объект Window.
Заметка
Приложение Visual C# осуществляет доступ к семействам с помощью индексатора, а не вызова свойства Item. Например,
thisApplication.Windows[0].Caption .
|
Обзор объекта Window
Интерфейс WindowObject предоставляет указанные ниже методы и свойства, которыми разработчики форм могут пользоваться для взаимодействия с окном InfoPath. Поддержка этих методов и свойств зависит от типа окна (XdWindowType), с которым осуществляется работа. Некоторые методы и свойства работают только с окном редактора (XdWindowType.xdEditorWindow). Остальные методы и свойства работают как с окном редактора, так и с окном конструктора (XdWindowType.xdDesignerWindow). Кроме того, как и для всех членов объектной модели InfoPath, при вызове из шаблона формы поддержка методов и свойств может изменяться в зависимости от уровня безопасности и метода развертывания формы.
Имя | Описание | Поддержка типов окон |
---|---|---|
ActivateM:Microsoft.Office.InfoPath.Window.Close |
Обозначает окно как активное в данный момент окно. |
Типы xdDesignWindow и xdEditorWindow |
ActiveP:Microsoft.Office.InfoPath.Window.Width |
Возвращает логическое (Boolean) значение, указывающее, является ли окно активным в данный момент. |
Типы xdDesignWindow и xdEditorWindow |
CaptionP:Microsoft.Office.InfoPath.UserPermission.Permission |
Свойство чтения и записи, которое возвращает или задает текст заголовка окна, представленного объектом Window. |
Только тип xdEditorWindow |
CloseM:Microsoft.Office.InfoPath.Window.Close(System.Boolean) |
Закрывает окно. |
Только тип xdEditorWindow |
CommandBarsP:Microsoft.Office.InfoPath.Window.Width |
Возвращает ссылку на объект Microsoft Office CommandBars. |
Типы xdDesignWindow и xdEditorWindow |
HeightP:Microsoft.Office.InfoPath.Window.Width |
Свойство чтения и записи с типом "длинное целое", которое указывает высоту окна, представленную объектом Window и измеряемую в точках. |
Типы xdDesignWindow и xdEditorWindow |
LeftP:Microsoft.Office.InfoPath.Window.XmlForm |
Свойство чтения и записи с типом "длинное целое", которое указывает горизонтальную позицию окна, представленную объектом Window и измеряемую в точках. |
Типы xdDesignWindow и xdEditorWindow |
Свойство MailEnvelope |
Возвращает ссылку на объект MailEnvelopeObject. |
Только тип xdEditorWindow |
TaskPanesP:Microsoft.Office.InfoPath.Window.Width |
Возвращает ссылку на семейство TaskPanesCollection. |
Типы xdDesignWindow и xdEditorWindow |
TopP:Microsoft.Office.InfoPath.Window.XmlForm |
Свойство чтения и записи с типом "длинное целое", которое указывает вертикальную позицию окна, представленную объектом Window и измеряемую в точках. |
Типы xdDesignWindow и xdEditorWindow |
WindowTypeP:Microsoft.Office.InfoPath.Window.XmlForm |
Возвращает номер, указывающий тип окна на основе нумерации XdWindowType. |
Типы xdDesignWindow и xdEditorWindow |
WidthP:Microsoft.Office.InfoPath.Window.Width |
Свойство чтения и записи с типом "длинное целое", которое указывает ширину окна, представленную объектом Window и измеряемую в точках. |
Типы xdDesignWindow и xdEditorWindow |
WindowStateP:Microsoft.Office.InfoPath.Window.Top |
Свойство чтения и записи с типом XdWindowState, которое возвращает или задает состояние окна, представленное объектом Window. |
Типы xdDesignWindow и xdEditorWindow |
Свойство XDocument |
Возвращает ссылку на объект _XDocument, связанный с окном. |
Только тип xdEditorWindow |
Использование интерфейсов WindowsCollection и Window
Доступ к интерфейсу WindowsCollection предоставляется через свойство Windows интерфейса Application. При использовании интерфейса WindowsCollection для доступа к окнам форм используется индексатор (в Visual C#) или передача длинного целого для свойства Item (в Visual Basic), чтобы вернуть ссылку на экземпляр интерфейса WindowObject. Например, следующий код задает ссылку на первый объект WindowObject, содержащийся в WindowsCollection.
WindowObject objWindow = thisApplication.Windows[0];
Dim objWindow As WindowObject = thisApplication.Windows(0)
Однако доступ к открытому в данный момент окну можно получить и непосредственно, используя свойство ActiveWindow интерфейса Application без использования семейства WindowsCollection, что демонстрируется в следующем коде.
WindowObject objWindow = thisApplication.ActiveWindow;
Dim objWindow As WindowObject = thisApplication.ActiveWindow
Заметка |
---|
При отладке проекта InfoPath с управляемым кодом свойство ActiveWindow всегда будет возвращать null, поскольку окно отладки активно. |
Доступ к WindowObject также можно получить с помощью свойства Window интерфейса View, связанного с базовым XML-документом формы. Свойство View интерфейса XDocument используется для доступа к объекту View. Например, следующий код задает ссылку на объект WindowObject, который связан с представлением базового XML-документа формы.
WindowObject objWindow = thisXDocument.View.Window;
Dim objWindow As WindowObject = thisXDocument.View.Window
Заметка |
---|
Некоторые свойства и методы объекта Window предназначены только для редактирования окон. При использовании для разработки окон они будут возвращать ошибку. Свойства и методы, которые поддерживаются для каждого типа окон, перечислены в таблице, приведенной ранее в этой теме. Чтобы определить, с каким типом окна осуществляется работа, можно воспользоваться в коде свойством WindowType. |