![]() |
Форум visio.getbb.ru |
О форумах
Библиотека | Частые вопросы | Литература | Склад материалов Visio Navigator | Blog | Полезные ссылки | О сайте История Visio | Продукты Visio |
Для русскоязычных пользователей Visio. Начинающих и профессионалов. Где взять, как сделать, что купить и т.д. |
Буквально после первых шагов в Visio возникает ситуация, когда еще страшно браться за программирование, но уже хочется поглубже влезть в управление шейпами. Делать свои шейпы, в том числе смарт-шейпы, связывать шейпы с данными, сделать специфический стиль линнии или заливку и т.д. Наконец, требуется добавить интерактивность, например, переключить видимое изображение шейпа или настроить шейп (выбрать ту или иную опцию).
Visio позволяет очень много делать и без программирования. Основной инструмент при этом - шейп-лист (ShapeSheet или как его еще иногда называют - "таблица фигур").
Обычно возникают такие вопросы:
- как добиться того или иного поведения шейпа и можно ли это вообще сделать без программирования;
- как делать некоторые специфические виды шейпов (легенды, data graphics, контейнеры...);
- как создавать и изменять темы, стили линий, заливки;
- как сделать шейп чувствительным к командам пользователя
Примеры задач, которые решаются с помощью шейп-листа:
- Сделать шейп, высота которого изменяется в зависимости от количества текста в шейпе.
- Сделать "мультифигуру", чтобы шейп содержал несколько изображений и можно было выбрать нужное.
- Сделать шейп, изображение которого изменяется на отраженное при "правом" и "левом" подключении к родительскому шейпу.
- Сделать шейп невидимым после удалении текста.
- Добавить контекстное меню для выбора одной из возможных конфигураций изображения.
- Подкрашивать шейп при перемещении.
И этот список можно наращивать до бесконечности. Большинство из таких возможностей реализуется как зависимости между ячейками шейп-листа. В ячейке может находиться либо постоянное значение, либо формула, связывающая ячейку с значением другой ячейки. Как только появляются хитрые связи с формулами, так шейп становится "умным", приобретает специфическое поведение.
Чаще всего достаточно иметь просто зависимость между ячейками. Тогда изменение одной ячейки будет автоматически приводить к изменению другой, зависимой. Однако иногда требуется "толкнуть" первичное изменение, причем сделать эту операцию поудобнее для неподготовленного пользователя. Смотрим, что предлагает шейп-лист для такого случая:
- изменение ShapeData;
- использование секции Action для создания контекстного меню;
- использование встроенных событий;
- настройка поведения шейпа по двойному щелчку.
Заметьте, что перечислены только варианты, позволяющие обойтись без программирования. С программированием набор существенно расширяется, причем программы как правило взаимодействуют с шейпом тоже через шейп-лист.
Изменение ShapeData. Простейший способ настройки шейпа. Простейший, потому что достаточно задать просто данные шейпа, а все остальное выполняется штатным инструментарием. Уже есть специальное окно, которое и отобразит данные шейпа, и примет изменения данных.
Секция Action немного посложнее. Нужно будет уметь добавить секцию к шейпу, добавить и настроить строки секции. Зато шейп приобретает удобное контекстное меню. При этом для исполнения команды требуется буквально два клика и все делается рядом с шейпом источником без открывания дополнительных окон.
Встроенные события. Привычный подход к обработке событий - это когда пишется (например, на VBA) код обработчика, который запускается при наступлении события. Но есть несколько событий, которые привязаны к каждому шейпу и могут работать даже без программного кода. Это перемещение шейпа, изменение текста, "опускание" шейпа на страницу и двойной щелчок по шейпу.
Действия по двойному щелчку, помимо прямого ввода формул в ячейку, могут настраиваться и через специальное диалоговое окно Format / Behavior, что несколько упрощает работу с ячейкой EventDblClick.
Рекомендуемые источники информации по работе с шейп-листом
Подфорумы visguy и visio.getbb.ru
13.06.2022
19.07.2019
27.06.2019
26.08.2018
20.02.2017
09.02.2017
08.01.2017
12.07.2016
13.10.2011
01.01.2010
05.11.2007
Сортировка меню Action
Я пытаюсь создать меню Action, что делал уже несколько раз. Но теперь мне нужно, чтобы пункты располагались в самом низу списка. Знаю, что есть свойство Sort Order. Но оно действует только в верхней части, выше пункта Show ShapeSheet. Можно ли расположить свой пункт в самом низу списка?
Просто вставьте знак % перед текстом меню. Например %Mark for Delete. Напомню, что есть еще специальные знаки:Знак "&" для подчеркивания следующего символа. Знак "_" для вставки разделителя. Источник - http://visguy.com/vgforum/index.php?topic=8816