Сведения о графическом отображении данных (Visio)
Примечание Функции подключения к данным доступны только лицензированным пользователям Microsoft Visio профессиональный 2013.
Существует четыре аспекта подключения к данным в Visio:
- Подключение к источнику данных
- Связывание фигур с данными
- Графическое представление связанных данных
- Обновление связанных данных, измененных в источнике данных, обновление связанных фигур и разрешение последующих возможных конфликтов
Как правило реализация этих аспектов выполняется в перечисленном порядке. Это означает, что сначала вы подключаете документ Visio к источнику данных, затем связываете фигуры документа с данными в источнике, графически представляете данные в связанных фигурах и обновляете связанные данные при необходимости. С каждым из этих аспектов связаны новые объекты и элементы в объектной модели Visio. В этом разделе рассматриваются третий и четвертый из этих аспектов: графическое отображение связанных данных в фигурах в Visio и обновление данных. Дополнительные сведения о других аспектах подключения к данным см. в следующих статьях:
Для программного отображения связанных данных можно использовать API Visio для отображения данных, который включает следующие объекты и связанные с ними элементы:
- Коллекция GraphicItems
- Объект GraphicItem
После связывания фигур в документе Visio со строками в наборе записей данных можно графически отобразить связанные данные программным способом. Например, предположим, что ваш документ содержит несколько связанных с данными фигур, каждая из которых представляет проект на определенном этапе завершения. Индикатор выполнения можно связать с определенным элементом данных фигуры, например процентом завершения проекта. Затем можно применить индикатор выполнения к выбору фигур проекта и визуально показать ход выполнения каждого проекта.
Обзор графики данных и графических элементов
Чтобы упростить графическое отображение данных, Visio вводит концепцию графики данных и тип объекта Master , который называется графическим хозяином данных, который представлен в перечислении VisMasterTypes значением visTypeDataGraphic. Чтобы добавить объект Master типа visTypeDataGraphic в коллекцию Master , необходимо использовать метод Masters.AddEx .
Visio включает несколько типов образцов, включая образцы фигур. При создании экземпляра образца фигуры он становится фигурой. Visio также включает в себя шаблон заливки, шаблон линий и конечные образцы строк, для которых нельзя создавать экземпляры. Эти образцы применяются к фигурам, чтобы передать шаблон образца фигуре. Образцы графики данных больше похожи на образцы шаблонов, так как их экземпляры не создаются. Вместо этого вы применяете их к фигурам по мере создания шаблонов линий и шаблонов заливки.
Графические образцы данных соответствуют графическим элементам данных, отображаемым в области задач Графика данных в пользовательском интерфейсе Visio. Графический хозяин данных состоит из одного или нескольких графических элементов. Графические элементы — это фигуры Visio, предназначенные для создания готовых визуальных компонентов, которые можно связать с данными фигуры для графического отображения данных на основе заданных вами правил и в позиции относительно указанной фигуры.
Visio предоставляет графические элементы следующих типов:
- Текст Отображает данные в виде текста в выноске в указанном положении относительно фигуры.
- Цвет по значению Изменяет цвет фигуры на основе сравнения данных фигуры с определенным значением или диапазоном значений.
- Панель данных Использует линейчатые диаграммы и графы для отображения данных в указанном положении относительно фигуры.
- Набор значков Отображает один из наборов значков, представляющий значение данных или условие в указанном положении относительно фигуры.
Visio предоставляет различные стандартные графические элементы данных, которые уже заполнены графическими элементами. Если вы хотите применить рисунок данных к фигурам, которые имеют другое сочетание графических элементов, можно создать настраиваемый графический рисунок данных. Рекомендуется использовать пользовательский интерфейс Visio для создания графического элемента данных и добавления в него графических элементов.
Создание графики данных в пользовательском интерфейсе
- На вкладке Данные щелкните Графика данных.
- Щелкните Создать новый графический элемент данных, а затем в диалоговом окне Создать графический элемент данных щелкните Создать элемент.
- В открывшемся диалоговом окне настройте элемент, а затем используйте тот же метод для добавления пользовательских элементов.
Вы также можете создавать графические образцы данных и заполнять их существующими графическими элементами программным способом. Нельзя создавать графические элементы программными средствами, но вы можете настроить поведение существующей графики данных. Кроме того, можно использовать код для изменения поведения и положения графических элементов, а также правил, называемых выражениями, которые определяют, как отдельные графические элементы отображают данные. Выражения могут быть формулами Таблицы фигур или любыми другими допустимыми выражениями ShapeSheet, а также метками данных фигуры (пользовательские свойства). Чтобы задать выражение, которое является меткой данных фигуры, необходимо заключить метку в фигурные скобки ({}), а затем передать ее в качестве второго параметра ( Expression) метода GraphicItem.SetExpression .
После создания рисунка с данными, содержащего настраиваемое сочетание графических элементов и определяющих поведение этих графических элементов, вы можете применить рисунок данных к фигурам, связанным с данными, программным способом.
Объекты и элементы графики данных
Помимо основных объектов типа visTypeDataGraphic , описанных в предыдущем разделе, Visio предоставляет следующие объекты и связанные с ними элементы в API графики данных:
- Коллекция GraphicItems
- Объект GraphicItem
В дополнение к этим объектам, связанным с графическими данными, и их элементами, частью API графики данных являются несколько членов других, более обычных объектов Visio. Например, свойства Shape.DataGraphic и Selection.DataGraphic позволяют применять графику данных к фигурам и выделениям соответственно. Доступное только для чтения свойство Shape.IsDataGraphicCallout указывает, работает ли определенная фигура в качестве графического элемента данных в документе.
Применение графики данных к фигурам, связанным с данными
В следующем примере показано, как использовать свойство Selection.DataGraphic для применения существующего пользовательского рисунка данных, создаваемого в пользовательском интерфейсе, к выбору фигур в документе. Чтобы этот код работал, существующий настраиваемый графический объект данных должен иметь имя MyCustomDataGraphic. Кроме того, можно заменить в коде имя существующего рисунка данных в документе на MyCustomDataGraphic.
Public Sub ApplyDataGraphic()
Dim vsoSelection As Visio.Selection
ActiveWindow.SelectAll
Set vsoSelection = ActiveWindow.Selection
Set vsoSelection.DataGraphic = ActiveDocument.Masters("MyCustomDataGraphic")
End Sub
Настройка поведения графических образцов данных
Используйте свойства Master.DataGraphicHidden и Master.DataGraphicHidesText для настройки определенных аспектов поведения графических мастеров данных.
Свойство DataGraphicHidden определяет, отображается ли образец данных в коллекции графики данных в пользовательском интерфейсе Visio. Если для данного образца задано значение True , он не отображается в списке графики данных в коллекции. Значение по умолчанию свойства — False.
Свойство DataGraphicsHidesText определяет, скрывает ли применение графического элемента данных текст фигуры, к которой он применяется (первичная фигура в случае групповой фигуры). Значение по умолчанию этого свойства также равно False.
Свойство GraphicItem.UseDataGraphicPosition определяет, следует ли использовать текущую позицию выноски по умолчанию для графических элементов графического образца данных, к коллекции GraphicItems которого принадлежит графический элемент. Позиция выноски по умолчанию для графических элементов в коллекции GraphicItems объекта Master типа visTypeDataGraphic определяется параметрами свойств Master.DataGraphicVerticalPosition и Master.DataGraphicHorizontalPosition . Если параметр UseDataGraphicPosition имеет значение True, графический элемент размещается в соответствии с параметром по умолчанию. Если параметр UseDataGraphicPosition имеет значение False, его положение определяется параметрами свойств Graphic Item.VerticalPosition и GraphicItem.HorizontalPosition .
Кроме того, если значения свойств HorizontalPosition и VerticalPosition графического элемента равны значениям свойств DataGraphicHorizontalPosition и DataGraphicVerticalPosition , то для свойства UseDataGraphicPosition для этого графического элемента автоматически устанавливается значение True.
Однако обратите внимание, что вы можете вручную повторно разместить рисунок данных, примененный к фигуре, с помощью маркера элемента управления рисунка данных. Позиция, заданная таким образом, имеет приоритет над позицией, заданной параметрами свойства.
Свойство Master.DataGraphicShowBorder определяет, отображается ли граница вокруг графических элементов, которые находятся в позициях по умолчанию относительно фигуры, к которой применяется рисунок данных. По умолчанию граница скрыта.
Программное сборка графики данных
В следующем примере показано, как создать графический образец данных, добавить в него существующий графический элемент, а затем изменить графический элемент. В этом примере используется метод Masters.AddEx для добавления нового образца рисунка данных в коллекцию Master текущего документа.
Затем используется метод Master.Open , чтобы получить копию существующего образца графических данных для редактирования. Дополнительные сведения о том, почему необходимо изменить копию образца, а не самого образца, см. в разделе Open Method. Затем используется метод GraphicItems.AddCopy для добавления копии существующего графического элемента в коллекцию GraphicItems нового образца, а метод GraphicItem.SetExpression — для изменения поля данных, которое представляет графический элемент. Он также задает свойство GraphicItem.PositionHorizontal для изменения горизонтального положения графического элемента относительно фигуры, к которой он применяется.
Наконец, он задает свойству Master.DataGraphicHidesTextзначение True , чтобы скрыть текст фигуры, и закрывает копию образца, который применяет изменения к существующим фигурам, к которым применяется этот образец данных. Затем можно применить новый графический образец данных к дополнительным фигурам.
Public Sub AddNewDataGraphicMaster()
Dim vsoMaster As Visio.Master
Dim vsoMasterCopy As Visio.Master
Dim vsoMaster_Old As Visio.Master
Dim vsoGraphicItem As GraphicItem
Dim vsoGraphicItem_Old As Visio.GraphicItem
Set vsoMaster = ActiveDocument.Masters.AddEx(visTypeDataGraphic)
Set vsoMasterCopy = vsoMaster.Open
Set vsoMaster_Old = ActiveDocument.Masters("old_master_name")
Set vsoGraphicItem_Old = vsoMaster_Old.GraphicItems(1)
Set vsoGraphicItem = vsoMasterCopy.GraphicItems.AddCopy(vsoGraphicItem_Old)
vsoGraphicItem.SetExpression visGraphicExpression, "new_data_field_name"
vsoGraphicItem.PositionHorizontal = visGraphicLeft
vsoMasterCopy.DataGraphicHidesText = True;
vsoMasterCopy.Close
End Sub
В приведенном выше примере кода предполагается, что известно имя существующего образца графических данных, содержащего один или несколько графических элементов, которые нужно добавить в новый образец, а также идентификаторы одного или нескольких графических элементов, которые вы хотите добавить в образец. Вы можете определить имя существующего графического образца данных, наместив указатель мыши на главный элемент в области задач Графика данных . Вы также можете определить имена и идентификаторы главных элементов, выполнив итерацию по коллекции Master в текущем документе, как показано в следующем коде.
For intCounter = 1 To ActiveDocument.Masters.Count
If ActiveDocument.Masters(intCounter).Type = visTypeDataGraphic Then
Debug.Print ActiveDocument.Masters(intCounter).Name, ActiveDocument.Masters(intCounter).ID
End If
Next
Аналогичным образом можно выполнить итерацию по коллекции GraphicItems образца, чтобы определить значения свойств ID и Tag существующего графического элемента, как показано в следующем примере. Свойство Tag — это строка, которую Visio не использует. По умолчанию он пуст. Однако можно задать его значение, чтобы упростить идентификацию отдельных графических элементов программным способом.
For intCounter = 1 To (vsoMaster_Old.GraphicItems.Count)
Debug.Print vsoMaster_Old.GraphicItems(intCounter).ID, oldMaster.GraphicItems(intCounter).Tag
Next
Чтобы просмотреть пример кода, демонстрирующий программную настройку графики данных, скачайте пакет SDK для Visio и ознакомьтесь с библиотекой примеров кода.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.