Практическое руководство. Доступ к данным приложений с помощью объектной модели InfoPath 2003
Объектная модель, совместимая с InfoPath 2003, предоставляет объекты и семейства, которые можно использовать для получения доступа к сведениям о приложении InfoPath, включая сведения, связанные с базовым XML-документом формы и файлом определения формы (.xsf). Доступ к этим данным предоставляется посредством объекта верхнего уровня в иерархии объектной модели InfoPath, который создается с помощью интерфейса Application.
Проект шаблона формы с управляемым кодом, совместимый с InfoPath 2003 и созданный с помощью Набор средств Microsoft Visual Studio для приложений (VSTA), Visual Studio 2005 с Набор средств Microsoft Visual Studio 2005 для Microsoft Office System 2007 или Visual Studio 2008 с Visual Studio Tools для Office, инициализирует переменную thisApplication
в методе _Startup
класса кода формы, которую можно использовать для доступа к элементам интерфейса Application. В следующем примере свойства Name и Version интерфейса Application используются для возвращения имени и номера версии запущенного интерфейса InfoPath. Эти сведения отображаются в окне сообщения с помощью метода Alert интерфейса UI2.
thisXDocument.UI.Alert("Application name: " + thisApplication.Name +
"\nApplication version: " + thisApplication.Version);
thisXDocument.UI.Alert("Application name: " & thisApplication.Name & _
vbNewLine & "Application version: " & thisApplication.Version)
В примере для Visual C# ссылка на символ \n
в строке оповещения обрабатывается неуправляемым кодом InfoPath в качестве обычного нового перевода строки, прерывающего текст и помещающего его на новую строку окна сообщения. Чтобы явно использовать значение новой строки, указанное для текущей среды и платформы, используйте вместо этого свойство Environment.NewLine, как показано в следующем примере.
thisXDocument.UI.Alert("Application name: " + thisApplication.Name +
Environment.NewLine + "Application version: " +
thisApplication.Version);
Доступ к данным из базового XML-документа формы
Разработчики могут использовать интерфейс XDocument для получения доступа к сведениям о базовом XML-документе формы, включая ссылку на модель XML DOM, где содержатся исходные XML-данные формы.
В следующем примере в первом окне сообщения отображаются некоторые данные, которые доступны из интерфейса XDocument, например, был ли изменен базовый XML-документ (с помощью свойства IsDirty) и был ли он снабжен цифровой подписью (с помощью свойства IsSigned). В следующем окне сообщения используется интерфейс XDocument со свойством DOM, чтобы отобразить исходные XML-данные базового XML-документа формы.
thisXDocument.UI.Alert("\nIsDirty: " + thisXDocument.IsDirty +
"\nIsDOMReadOnly: " + thisXDocument.IsDOMReadOnly +
"\nIsNew: " + thisXDocument.IsNew +
"\nIsReadOnly: " + thisXDocument.IsReadOnly +
"\nIsSigned: " + thisXDocument.IsSigned);
thisXDocument.UI.Alert(thisXDocument.DOM.xml);
thisXDocument.UI.Alert("IsDirty: " & thisXDocument.IsDirty & vbNewLine & _
"IsDOMReadOnly: " & thisXDocument.IsDOMReadOnly & vbNewLine & _
"IsNew: " & thisXDocument.IsNew & vbNewLine & _
"IsReadOnly: " & thisXDocument.IsReadOnly & vbNewLine & _
"IsSigned: " & thisXDocument.IsSigned)
thisXDocument.UI.Alert(thisXDocument.DOM.xml)
Использованное в предыдущем примере свойство xml является свойством модели XML DOM. Дополнительные сведения о модели XML DOM см. в документации MSXML 5.0 SDK.
Доступ к данным из файла определения формы
Сведения о файле .xsf для формы, включая ссылку XML DOM на содержащиеся в ней исходные XML-данные, также можно получить с помощью интерфейса XDocument. Доступ к этим сведениям предоставляется с помощью свойства Solution, которое возвращает ссылку на интерфейс SolutionObject.
В следующем примере в первом оповещении отображаются некоторые данные, которые доступны через интерфейс SolutionObject, например расположение URI-идентификатора (с помощью свойства URI) и номер его версии (с помощью свойства Version). В следующем оповещении используется свойство DOM интерфейса SolutionObject для отображения исходных XML-данных файла .xsf.
thisXDocument.UI.Alert("PackageURL: " +
thisXDocument.Solution.PackageURL +
"\nURI: " + thisXDocument.Solution.URI +
"\nVersion: " + thisXDocument.Solution.Version);
thisXDocument.UI.Alert(thisXDocument.Solution.DOM.xml);
thisXDocument.UI.Alert("PackageURL: " & _
thisXDocument.Solution.PackageURL & vbNewLine & _
"URI: " & thisXDocument.Solution.URI & vbNewLine & _
"Version: " & thisXDocument.Solution.Version)
thisXDocument.UI.Alert(thisXDocument.Solution.DOM.xml)