В Visio 2010 представлен новый компонент, службы схем, который определяет, какие поведения схем используются в документе. Одни службы схем контролируют поведение компонента «Авторазмер страницы», а другие — поведение контейнеров, списков и выносок. Включение и выключение этих служб выполняется на уровне документа. Если служба выключена, изменения, вносимые в схему средствами автоматизации, не будут запускать поведения схемы, связанные с этой службой (к изменениям, вносимым посредством интерфейса пользователя, не применяется состояние службы схем).
Например, функция «Авторазмер страницы» отвечает за расширение размера страницы, если фигура помещается за пределами страницы. Однако если фигура помещается за пределами страницы в автоматическом режиме, функция авторазмера страницы не работает, если не включена соответствующая служба. Аналогично, помещение фигуры поверх контейнера, как правило, приводит к ее включению в контейнер и соответствующему изменению его размера. Однако если включение в контейнер выполняется автоматически, функция «Контейнер» отвечает, только если включена служба структурированных схем.
Включение в Visio 2010 такой возможности связано с тем, что некоторые решения не предполагают постоянного запуска указанных поведений схем при работе с фигурами в схеме. В качестве примера таких решений можно привести существующие приложения, которые не поддерживают новые поведения Visio 2010 и ожидают стандартные поведения фигур, использовавшиеся в Visio 2007. Чтобы обеспечить надлежащую работу имеющихся решений, все службы схем в Visio 2010 по умолчанию отключены. Для использования новых поведений схем решения должны явно указывать это в документе. Учтите, что состояния служб схем применяются к свойствам и методам автоматизации, которые использовались в Visio 2007. Если новый метод автоматизации Visio 2010 явно вызывается решением (см. примеры ниже), состояние службы игнорируется. Предполагается, что решению требуется использовать режим Visio 2010, связанный с этим методом.
За проверку и изменение состояний служб схем отвечает свойство Document.DiagramServicesEnabled. Значение этого свойства — это маска для всех служб, включенных на данный момент. Доступные службы и значения перечислены в таблице ниже. Решение может «явно согласиться» только на одну службу, на все службы, поддерживаемые в Visio 2010, или даже на все существующие и будущие службы.
Значения VisDiagramServices:
Для поведений структурированных схем предусмотрены две службы. Служба StructureBasic обслуживает существующие отношения, но не создает новые отношения. Она подходит для решений, которые предполагают учет использования контейнеров, списков и выносок пользователем, но не произвольное формирование отношений самим решением при перемещении фигур по странице. Служба StructureFull поддерживает существующие отношения и может также формировать новые, что соответствует поведениям, запускаемым в пользовательском интерфейсе. Если включены обе службы, по умолчанию используется набор поведений службы StructureFull.
Отключение режимов структурированных схем в решениях
Как описывалось выше, поведения структурированных схем, запускаемые посредством автоматизации, по умолчанию отключены. Для их включения в решениях используется компонент «Службы схем». Поведения структурированных схем, запускаемые из интерфейса пользователя, по умолчанию включены и к ним не применяется состояние служб схем.
Все поведения структурированных схем, как в интерфейсе пользователя, так и в API, можно отключить. Для этого необходимо добавить на лист страницы ячейку User.msvSDStructureDisabled со значением TRUE (ИСТИНА).