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

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

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

Интересно то, что макросы здесь не используются. Существует только один специальный шейп, который все делает. Посмотрим, как это сделано.

Еще один пример смарт-шейпа в виде иконки. На этот раз конфигурация шейпа мало изменяется, в основном данные превращаются в изменения цвета или толщины линии.