Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 16 фев 2019, 20:03

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Изменение цвета линии через таблицу данных.
СообщениеДобавлено: 26 окт 2015, 06:26 
Не в сети
Новичок

Зарегистрирован: 13 авг 2012, 04:15
Сообщений: 20
Очков репутации: 5

Добавить очки репутацииУменьшить очки репутации
Необходимо изменять цвет линий через таблицу данных.

В разделе «Данные фигуры», задал постоянный список: Prop.Row_1.Format = "Цвет 1;Цвет 2;Цвет 3;Цвет 4;Цвет 5"

В разделе Пользовательские ячейки список цветов: User.Row_1 = "RGB(205,138,255);RGB(255,100,30);RGB(160,32,240);RGB(181,181,0);RGB(170,150,0)"

и формулу для передачи цвета в ячейку LineColor: User.Row_2 = SETF(GetRef(LineColor),INDEX(LOOKUP(Prop.Row_1,Prop.Row_1.Format),User.Row_1))

В версиях Visio 2010 и старше данная схема работает,
В версии Visio 2007, работать не хочет.

Что можно сделать, чтобы и в Visio 2007 работала.


Вложения:
.vsd [13 Кб]
Скачиваний: 94
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение цвета линии через таблицу данных.
СообщениеДобавлено: 26 окт 2015, 11:34 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3413
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Information worker
Уровнь квалификации: ShapeSheet, VBA
в визио 2007 ни разу не работал, по долгу службы© использую только системные цвета, никаких комбинаций RGB.

Попробовал на визио 2003. Так же не работает.
Setf ничего не пишет в нужную ячейку, если прописать в ячейку LineColor
LineColor
INDEX(LOOKUP(Prop.Row_1,Prop.Row_1.Format),User.Row_1)
значение в этой ячейке всегда 0
даже если в ячейку LineColor тупо прописать значение
LineColor
RGB(205,138,255)
то визуально цвет линии не меняется Изображение


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение цвета линии через таблицу данных.
СообщениеДобавлено: 26 окт 2015, 12:07 
Не в сети
Новичок

Зарегистрирован: 13 авг 2012, 04:15
Сообщений: 20
Очков репутации: 5

Добавить очки репутацииУменьшить очки репутации
LineColor = RGB(205,138,255) в Visio 2007 свет линии меняет.
LineColor = IF(LOOKUP(Prop.Row_1,Prop.Row_1.Format)=0,RGB(205,138,255),IF(LOOKUP(Prop.Row_1,Prop.Row_1.Format)=2,RGB(255,100,30),RGB(160,32,240))) - то-же работает.
Но почему не работает функция SETF для LineColor или формула INDEX(LOOKUP(Prop.Row_1,Prop.Row_1.Format),User.Row_1), никак не пойму :wall:


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение цвета линии через таблицу данных.
СообщениеДобавлено: 26 окт 2015, 12:23 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3413
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Information worker
Уровнь квалификации: ShapeSheet, VBA
странно! INDEX и LOOKUP в списке функций появившихся еще до визио 2003 есть
John Goldsmith" в статье Visio ShapeSheet Functions by Version писал(а):
This document is designed as a quick reference for understanding which Visio ShapeSheet functions can be used in which versions. The functions are split into the current 2013 release, followed by 2010, 2007, 2003 and finally all functions that appeared in versions prior to 2003.
The data for this document is collated from the online and downloadable Visio SDK with cross-references to each year’s “What’s New” sections. If you find any discrepancies, please let me know at http://visualsignals.typepad.co.uk/visl ... rsion.html
в строке user.row_33 это работает
user.row_33
INDEX(LOOKUP(Prop.Row_1,Prop.Row_1.Format),User.Row_1)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение цвета линии через таблицу данных.
СообщениеДобавлено: 11 фев 2019, 01:57 
Работаю в Visio 2016
Также столкнулся с проблемой изменения цвета в зависимости от значения свойств.

Конечно, можно решить так, и оно будет работать:
Цитата:
LineColor = IF(LOOKUP(Prop.Row_1,Prop.Row_1.Format)=0,RGB(205,138,255),IF(LOOKUP(Prop.Row_1,Prop.Row_1.Format)=2,RGB(255,100,30),RGB(160,32,240)))


Но хочется как-то поудобнее, через некий внутренний массив данных от INDEX'а:
Но формулу INDEX(LOOKUP(Prop.Raw,Prop.Raw.Format),"RGB(255,50,50);RGB(100,100,100)") программа не понимает. Я так полагаю, что Visio читает список индекса как ряд текстовых значений, а не как самостоятельные формулы внутри массива.

Игрался с синтаксисом (доходило даже до "=RGB(255,50,50);=RGB(100,100,100)"), но ничего не выходит.

В тщетных попытках, пришел к забавному извращению:
1. Добавил User.RED и User.GREY со значениями: RGB(255,50,50) и RGB(100,100,100)
2. Вписал массив ссылками: INDEX(LOOKUP(Prop.Raw,Prop.Raw.Format),"User.RED;User.GREY")

Честно, я не понимаю логику программы, но оно заработало.

Конечно, оно так не должно быть. Это, как минимум, не красиво.
Считаю тему не закрытой.


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение цвета линии через таблицу данных.
СообщениеДобавлено: 11 фев 2019, 02:30 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3413
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Information worker
Уровнь квалификации: ShapeSheet, VBA
тема имела продолжение в ветках:
Выбор цвета из списка
Изменить цвет из списка
возможно изложенное в этих ветках поможет найти решение!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение цвета линии через таблицу данных.
СообщениеДобавлено: 11 фев 2019, 04:38 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 605
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100603

Добавить очки репутацииУменьшить очки репутации
А теория насчет языка системы не помогает?
То есть, в английском языке, разделитель списка - "," (запятая), а в русском - ";" (точка с запятой)

Возможно, разные версии Visio по-разному это обрабатывают.
То есть, если попробовать заменить
"INDEX(LOOKUP(Prop.Raw,Prop.Raw.Format),"RGB(255,50,50);RGB(100,100,100)")"
на
"INDEX(LOOKUP(Prop.Raw,Prop.Raw.Format),"RGB(255,50,50),RGB(100,100,100)")" <<<< запятая !!

то может заработает?

_________________
Инструменты для облегчения создания диаграмм, и статьи по Visio:
http://unmanagedvisio.com/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение цвета линии через таблицу данных.
СообщениеДобавлено: 11 фев 2019, 13:05 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1276
Очков репутации: 100589

Добавить очки репутацииУменьшить очки репутации
То есть в формат можно ставить хоть звездочку, лишь бы потом вовремя заменить ее на ListSeparator :)
Код:
.Format ="RGB(205*138*255);RGB(255*100*30);RGB(160*32*240);RGB(181*181*0);RGB(170*150*0)"
LineColor = SUBSTITUTE(INDEX(Prop.Row_2.Prompt,Prop.Row_1.Format),"*",LISTSEP())


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB