Форум пользователей Visio
http://visio.getbb.ru/

Создание смарт-шейпа
http://visio.getbb.ru/viewtopic.php?f=5&t=1085
Страница 1 из 1

Автор:  qtrab [ 25 янв 2017, 17:08 ]
Заголовок сообщения:  Создание смарт-шейпа

Всем доброго времени суток!

Помогите пожалуйста разобраться с задачей.
Необходимо сделать универсальный шейп контрола (поля на экранной форме), который меняет форму, при выборе значения из диалогового окна (правый щелчок мыши по элементу).

Во вложении пример того что должно получиться. Подскажите пути решения этой задачи? Объясните алгоритм.

Вложения:
Example.vsd [63 Кб]
Скачиваний: 160

Автор:  Surrogate [ 25 янв 2017, 17:21 ]
Заголовок сообщения:  Re: Создание смарт-шейпа

qtrab
Вложение скачал - там чистый лист ! для корректного отображения вложенных файлов название должно быть написано латиницей (таковы ограничения движка данного форума).
Дополнено позднее: не догадался с первого раза заглянуть в DocumentStencil
Изображение
весь секрет в этих двух секциях! в них происходит управление цветом нижнего прямоугольника и видимостью иконок в нижнем прямоугольнике

Автор:  qtrab [ 25 янв 2017, 18:18 ]
Заголовок сообщения:  Re: Создание смарт-шейпа

Спасибо, это я понял, а где и как настроить связь между элементом шейпа и User-defined Cell.
На данном примере эта связь присутствует. Если устанавливаем значение User.Text = 1, то шейп меняет форму на форму текстового поля.

Я не соображу, как добавить новый элемент на шейп и сделать так, чтобы он устанавливался при выборе в диалоговом окне.

Автор:  Surrogate [ 25 янв 2017, 18:29 ]
Заголовок сообщения:  Re: Создание смарт-шейпа

qtrab писал(а):
На данном примере эта связь присутствует. Если устанавливаем значение User.Text = 1, то шейп меняет форму на форму текстового поля.
внутри смартшейп выглядит так
Изображение
каждая из картинок имеет ячейку, которая смотрит на значение в соответствующую ячейку в родительском смарт-шейпе.
например Calc
Изображение
в зависимости от значения 1 или 0 - картинка или показывается в полном размере или скукоживается в ноль
qtrab писал(а):
Я не соображу, как добавить новый элемент на шейп и сделать так, чтобы он устанавливался при выборе в диалоговом окне.
элемент надо внедрять внутрь смарт-шейпа!
Дополнено позднее: 1. открыть группу смартшейпа
2. вставить в нее нужную картинку
3. добавить ей секцию user-defined cells и одноименную ячейку user.xxx
4. прописать формулы в секции Foreign Image Info по аналогии
Изображение
5. прописать формулы автопозиционирования в секции Shape Transform по аналогии
Изображение
6. закрыть группу смартшейпа
7. добавить в секцию user-defined cells смартшейпа одноименную ячейку user.xxx
8. добавить в секцию actions смартшейпа одноименную ячейку actions.xxx
9. в ячейке actions.xxx в столбцах Menu и Checked прописать соответствующие значения
10. в столбце action прописать формулу

Actions

Action.xxx

SETF("User.MVG",0)+SETF("User.Pick",0)+SETF("User.Calc",0)+SETF("User.Text",0)+SETF("User.LOV",0)+SETF("User.Empty",0)+SETF("User.Cal",0)+SETF("User.xxx",1)

 

11. в ячейках Action для строк Actions.MVG, Actions.Pick, Actions.Calc, Actions.Text, Actions.LOV, Actions.Empty, Actions.Cal в конце дописать +SETF("User.xxx",0)
в общем для смартшейпа сделать чтоб было похоже на то что на нижеследующей картинке
Изображение

Автор:  Surrogate [ 25 янв 2017, 18:54 ]
Заголовок сообщения:  Re: Создание смарт-шейпа


!
в предыдущем сообщении был пропущен один этап, для которого была ошибочная последовательность шагов
Surrogate писал(а):
3. добавить ей секцию user-defined cells и одноименную ячейку user.xxx
в пропущенном этапе нужно было добавить ссылку на еще не созданную ячейку user.xxx в смартшейпе

1. добавить в секцию user-defined cells смартшейпа одноименную ячейку user.xxx
2. добавить в секцию actions смартшейпа одноименную ячейку actions.xxx
3. в ячейке actions.xxx в столбцах Menu и Checked прописать соответствующие значения
4. в столбце action прописать формулу (эту формулу можно скопировать с данного форума)

Actions

Action.xxx

SETF("User.MVG",0)+SETF("User.Pick",0)+SETF("User.Calc",0)+SETF("User.Text",0)+SETF("User.LOV",0)+SETF("User.Empty",0)+SETF("User.Cal",0)+SETF("User.xxx",1)

 

5. в ячейках Action для строк Actions.MVG, Actions.Pick, Actions.Calc, Actions.Text, Actions.LOV, Actions.Empty, Actions.Cal в конце дописать +SETF("User.xxx",0)
в общем на этапах 1-5 для смартшейпа нужно сделать чтоб было похоже на то, что на нижеследующей картинке
Изображение
6. открыть группу смартшейпа
7. вставить в нее нужную иконку
8. добавить в Shapesheet™ иконки секцию user-defined cells и одноименную ячейку user.xxx
9. в поле Value ячейки user.xxx у иконки прописать ссылку на ячейку в смартшейпе

User-defined cells

User.xxx

Sheet.1!User.xxx

 


10. прописать формулы в секции Foreign Image Info иконки по аналогии
Изображение
11. прописать формулы автопозиционирования иконки в секции Shape Transform по аналогии
Изображение
12. закрыть группу смартшейпа

Автор:  qtrab [ 26 янв 2017, 11:59 ]
Заголовок сообщения:  Re: Создание смарт-шейпа

Surrogate, Получилось! Огромное человеческое Спасибо! :)

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/