Настраиваемые контейнеры


Несмотря на наличие в Visio 2010 множества готовых фигур контейнеров, списков и выносок, любую двумерную фигуру можно использовать в качестве контейнера, списка или выноски. В этом посте мы рассмотрим способы создания собственных фигур структурированных схем.

Чтобы назначить любую фигуру в качестве контейнера, списка или выноски, необходимо просто добавить одну определяемую пользователем ячейку с именем User.msvStructureType. В качестве значения ячейки укажите «Контейнер», «Список» или «Выноска». Этот параметр указывает Visio, что фигура является элементом структурированной схемы, кроме того, фигуре присваиваются различные режимы структурированной схемы. На рисунке ниже приведен пример прямоугольной фигуры, преобразованной в контейнер путем добавления ячейки User.msvStructureType со значением «Container» (Контейнер).

Любая фигура, для ячейки User.msvStructureType которой установлено значение «Container», воспринимается Visio как контейнер, однако выбранная фигура должна быть двумерной, а для ее параметра «Angle» должно быть установлено значение «0» (ноль). Для настройки вида и поведения фигуры предусмотрены дополнительные параметры. Следующие ячейки таблицы свойств фигуры определяют свойства таких контейнеров, многие из которых можно настроить на контекстной вкладке «Инструменты для контейнера» ленты.

Название ячейки Описание
User.msvSDContainerMargin Расстояние между границей контейнера и входящими в него элементами.
User.msvSDContainerResize Автоматический режим изменения размера фигуры (0 = не изменять размер автоматически; 1 = увеличивать при необходимости; 2 = всегда по размеру содержимого).
User.msvSDContainerStyle Значение индекса, отсчитываемое от единицы, представляющее текущий стиль оформления контейнера.
User.msvSDContainerStyleCount Общее количество стилей оформления, поддерживаемых контейнером.
User.msvSDHeadingStyle Значение индекса, отсчитываемое от единицы, представляющее текущий стиль оформления заголовка контейнера.
User.msvSDHeadingStyleCount Общее количество стилей оформления, поддерживаемых заголовком контейнера.
User.msvSDContainerLocked Логическое значение, предотвращающее изменение членства элемента в контейнере.
User.msvSDContainerRequiredCategories Список имен категорий, разделяемых точкой с запятой. Другие фигуры должны иметь как минимум одно совпадающее имя, чтобы их можно было назначить элементами контейнера.
User.msvSDContainerExcludedCategories Список имен категорий, разделяемых точкой с запятой. Другие фигуры, имеющие как минимум одно совпадающее имя, не могут быть участниками контейнера.
User.msvSDContainerNoHighlight Логическое значение, предотвращающее выделение контейнера при выборе или добавлении в контейнер элементов.
User.msvSDContainerNoRibbon Логическое значение, скрывающее контекстную вкладку «Инструменты для контейнера» на ленте для этого контейнера.
User.msvSDContainerHeadingEdge Строка, указывающая расположение внутренней части контейнера относительно заголовка контейнера. Может принимать одно из значений «Left» (Слева), «Right» (Справа), «Top» (Сверху) или «Bottom» (Снизу).
User.msvSDMembersOnHiddenLayer Логическое значение, определяющее, будет ли Visio разрывать отношения контейнера, когда контейнер или участник перемещаются на скрытый уровень. При выборе значения «True» (Истина) Visio разрешает существование отношений на скрытом уровне, при выборе значения «False» (Ложь) Visio разрывает отношения.

Создание стиля оформления

По умолчанию на вкладке «Инструменты для контейнера» для фигур контейнера не отображаются пункты «Стиль контейнера» или «Стиль заголовка». Стили представляют собой способ изменения вида контейнера посредством изменения сочетания контура и форматирования. Для фигуры контейнера можно определить несколько стилей оформления с помощью ячеек User.msvSDContainerStyle, User.msvSDContainerStyleCount, User.msvSDHeadingStyle и User.msvSDHeadingStyleCount (то есть ячеек Style (стиль) и Count (счет)). Ячейки Count используются для указания Visio количества стилей, поддерживаемых фигурой для всего контейнера или заголовка. Затем следует определить, какие ячейки таблицы свойств фигуры будут заданы для каждого стиля. В каждую из этих ячеек необходимо поместить формулу, зависящую от значения ячеек Style. Visio выполнит проверку количества стилей и поместит в коллекцию ленты все стили, определенные фигурой контейнера. При выборе пользователем нового стиля из коллекции Visio поместит индекс этого стиля обратно в ячейку Style, чтобы обновить оформление контейнера.


Фигуры контейнера Visio 2010 имеют различный уровень сложности. К контейнерам в коллекции «Вставка контейнера» можно применить различные стили оформления и формулы для изменения внешнего вида фигур. В группе фигур проволочной диаграммы можно встретить более простые примеры — для каждой из этих фигур предусмотрено всего несколько стилей.

Управление членством в контейнере

В Visio 2010 впервые используются категории фигур, предназначенные для уточнения поведения элементов контейнера. Этот механизм используется такими компонентами, как «Функциональная блок-схема» и «Условные обозначения рисунка, связанного с данными», гарантируя, что в контейнере или списке будут участвовать только выбранные типы фигур. Участие в контейнере можно ограничить, определив категории исключаемых фигур. Для этого потенциальная фигура-участник должна содержать в своей таблице свойств фигуры определяемую пользователем ячейку User.msvShapeCategories. Одно или несколько имен категорий для потенциальной фигуры-участника перечисляются в строке через точку с запятой. Чтобы разрешить участие только для фигур определенной категории, необходимо указать это имя категории в ячейке User.msvSDContainerRequiredCategories контейнера. Чтобы разрешить участие большинства фигур, исключая определенную категорию, необходимо указать имя этой категории в ячейке User.msvSDContainerExcludedCategories контейнера. Потенциальные фигуры, не относящиеся к определенным пользователем категориям, нельзя будет добавлять в контейнер с обязательными категориями, но можно будет добавлять в контейнер с категориями-исключениями. Фигуры, имеющие некоторое число включенных категорий, и фигуры, категории которых исключены, будут исключены из контейнера.

Создание вложенной фигуры заголовка

Заголовок контейнера, как правило, является просто текстом фигуры контейнера. Тем не менее, можно реализовать более сложные стили оформления, если создать заголовок в виде отдельной фигуры. В такой структуре контейнер становится группой, и заголовок добавляется в качестве вложенной фигуры группы. Основным преимуществом этой структуры является то, что Visio может учитывать вложенную фигуру заголовка в операциях изменения размера и макета, что позволяет избежать размещения фигур-участников поверх заголовка. Чтобы назначить вложенную фигуру заголовком контейнера, добавьте во вложенную фигуру ячейку User.msvStructureType и присвойте ей значение «Заголовок». Также необходимо задать во вложенной фигуре ячейку User.msvSDContainerHeadingEdge. Эта ячейка указывает Visio способ размещения заголовка относительно внутренней части контейнера. Например, если заголовок располагается возле левой кромки контейнера, то правильным значением ячейки будет «Справа» (независимо от угла заголовка) — внутренняя часть контейнера находится справа от заголовка.