Идея - вынести макросы из основного документа в трафарет - не нова и используется довольно часто. Понятно, что она не всегда осуществима. Например, те же обработчики событий поневоле будут размещены в основном документе. Но существует множество документов, в которых нет специальных обработчиков. Кроме того, бывают вообще "инструментальные" макросы, который не связаны с определенным документом, а реализуют некоторые универсальные операции, типа формирования универсального отчета, подсчет шейпов, мастеров и т.д. Уж они-то прямо напрашиваются для выноса в трафарет.
- Категория: Как это устроено

Описание задачи. Шейп имеет два поля данных. Оба - фиксированные списки. Причем второй список зависит от того, какое значение выбрано в первом списке. По-существу, получается двух уровневый список в Shape Data.
- Категория: Как это устроено

Картинка на заставке иллюстрирует способ автоматического создания довольно специфичной диаграммы. Диаграмма создается буквально одним движением мыши путем перетаскивания нескольких строк из окна внешних данных на страницу рисунка.
Интересно то, что макросы здесь не используются. Существует только один специальный шейп, который все делает. Посмотрим, как это сделано.
- Категория: Как это устроено

Требования, которые были выдвинуты как задание на шейп:
Шейп предназначен для использования на плане помещения.
Шейп должен выглядеть как иконка с переключаемым изображением, подсветкой и числовой индикацией.
Набор данных: Бренд, Модель, Тип, Технология, Формат, Цвет. Модель однозначно определяет остальные поля.
Выбор одной из 5 иконок в зависимости от типа устройства. 1 - круг (тип не задан). 2 - Принтер. 3 - МФУ, Копир, Дупликатор. 4 - Сканер, Факс. 5 - Инж.сист.
Индикатор цвета на два положения (дополнительное кольцо): цветной, монохромный.
Индикатор формата: буквенное обозначение для принтера А3.
Индикатор технологии на 4 положения (подсветка): 1 - не указана. 2 - струйная. 3 - матричная. 4 - светодиодная, лазерная, твердочернильная.
Данные принимаются из справочника (Excel).
Индикатор номера (в пределах документа). Число в правом верхем углу. Формируется автоматом при опускании шейпа на страницу или задается вручную.
Два варианта установки связи с данными: 1. Drag&Drop из окна внешних данных; 2 - выбор модели в специальном окне с возможностью предварительной фильтрации по текстовому фрагменту (сокращение списка выбора).
Версия Visio - 2019 Pro.
- Категория: Как это устроено
Еще один пример смарт-шейпа в виде иконки. На этот раз конфигурация шейпа мало изменяется, в основном данные превращаются в изменения цвета или толщины линии.
- Категория: Как это устроено

В Visio существует несколько типов диаграмм с похожим поведением при перемещении шейпов. Это древовидные диаграммы, в которых перемещение старшего по иерархии узла вызывает аналогичное перемещение подчиненных узлов. Так ведут себя Brainstorming диаграммы, организационные схемы.
Для пользователя это очень удобно и существенно ускоряет получение наиболее удобного для восприятия изображения. В Brainstorming диаграммах есть еще и дополнительный плюс - когда вершина куста пересекает центр родительского шейпа, то куст зеркально отражается. Причем это действует как по горизонтали, так и по вертикали. В организационных структурах такое отражение отсутствует, да там оно и не требуется.
Попробуем разобраться, как это сделано и как может быть повторено в своих решениях.
Brainstorming
Для начала рассмотрим шейп-лист одного из подчиненных узлов Brainstorming диаграммы.
- Категория: Как это устроено

Задача: имеется диаграмма, состоящая из двумерных шейпов, соединенных коннекторами. Диаграмма
должна динамически отображать текущие соединения путем изменения окраски присоединенных шейпов.
Решение реализовано в виде шаблона и трафарета, оба с макросами. В шаблон вынесена не зависящая от
функционала часть. Это минимальные обработчики событий, задача которых - вызвать функциональные
макросы из трафарета.
Трафарет содержит мастер-шейпы и логику изменения окраски. Предполагается, что логика со временем
может изменяться и размещение макросов в трафарете облегчит проведение изменений. Для изменения
достаточно будет просто заменить трафарет. Основной документ остается неизменным.
- Категория: Как это устроено