Форум пользователей Visio http://visio.getbb.ru/ |
|
Изменение цвета линии через таблицу данных. http://visio.getbb.ru/viewtopic.php?f=5&t=844 |
Страница 1 из 1 |
Автор: | Aleksandr [ 26 окт 2015, 06:26 ] | ||
Заголовок сообщения: | Изменение цвета линии через таблицу данных. | ||
Необходимо изменять цвет линий через таблицу данных. В разделе «Данные фигуры», задал постоянный список: 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 работала.
|
Автор: | Surrogate [ 26 окт 2015, 11:34 ] | ||||
Заголовок сообщения: | Re: Изменение цвета линии через таблицу данных. | ||||
в визио 2007 ни разу не работал, по долгу службы© использую только системные цвета, никаких комбинаций RGB. Попробовал на визио 2003. Так же не работает. Setf ничего не пишет в нужную ячейку, если прописать в ячейку LineColor
даже если в ячейку LineColor тупо прописать значение
|
Автор: | Aleksandr [ 26 окт 2015, 12:07 ] |
Заголовок сообщения: | Re: Изменение цвета линии через таблицу данных. |
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), никак не пойму |
Автор: | Surrogate [ 26 окт 2015, 12:23 ] | ||
Заголовок сообщения: | Re: Изменение цвета линии через таблицу данных. | ||
странно! 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. в строке user.row_33 это работает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
|
Автор: | Гость [ 11 фев 2019, 01:57 ] |
Заголовок сообщения: | Re: Изменение цвета линии через таблицу данных. |
Работаю в 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") Честно, я не понимаю логику программы, но оно заработало. Конечно, оно так не должно быть. Это, как минимум, не красиво. Считаю тему не закрытой. |
Автор: | Surrogate [ 11 фев 2019, 02:30 ] |
Заголовок сообщения: | Re: Изменение цвета линии через таблицу данных. |
Гость писал(а): Считаю тему не закрытой. тема имела продолжение в ветках:Выбор цвета из списка Изменить цвет из списка возможно изложенное в этих ветках поможет найти решение! |
Автор: | nbelyh [ 11 фев 2019, 04:38 ] |
Заголовок сообщения: | Re: Изменение цвета линии через таблицу данных. |
А теория насчет языка системы не помогает? То есть, в английском языке, разделитель списка - "," (запятая), а в русском - ";" (точка с запятой) Возможно, разные версии 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)")" <<<< запятая !! то может заработает? |
Автор: | Tumanov [ 11 фев 2019, 13:05 ] |
Заголовок сообщения: | Re: Изменение цвета линии через таблицу данных. |
То есть в формат можно ставить хоть звездочку, лишь бы потом вовремя заменить ее на 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()) |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |