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

Форум по вопросам применения и программирования в Visio
Текущее время: 28 мар 2024, 20:18

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


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


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

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Изменить цвет из списка
СообщениеДобавлено: 07 сен 2018, 10:41 
Не в сети
Бывалый

Зарегистрирован: 19 июн 2015, 22:18
Сообщений: 114
Использую Visio c: 2013
Очков репутации: 21

Добавить очки репутацииУменьшить очки репутации
Вложение:
Menu.png
Menu.png [ 22.92 Кб | Просмотров: 916 ]

Вложение:
ShapeSheet.png
ShapeSheet.png [ 79.66 Кб | Просмотров: 922 ]


Action меняет User.IdColor – это индекс (номер) цвета в списке User.ColorList.Prompt.
User.ColorList = INDEX(User.IdColor,User.ColorList.Prompt,";") – вытаскивает нужный цвет из списка.

А вот далее – самое интересное!!!
Код:
User.Row_3 = User.IdColor + SETF(GetRef(FillBkgnd), "=" & User.CorrectColor)
User.CorrectColor = SUBSTITUTE(User.ColorList,",",LISTSEP())
Если бы мы просто прописали в User.Row_3 указание на User.ColorList , то у нас бы сформировалась бы строка:
User.Row_3 = User.IdColor + SETF(GetRef(FillBkgnd), "=RGB(255,0,0)" )
Эту строку спокойно «проглатывает» Visio 2010, а вот у Visio 2007 это не проходит – возвращает ошибку.

Почему? А потому, что Visio 2007 считает выражение RGB(255,0,0) списком и требует, чтобы список разделялся корректным разделителем. Корректный разделитель можно узнать используя функцию LISTSEP.

Именно поэтому цвет сначала корректируется в User.CorrectColor – где «,» заменяются «;», ну а только после этого цвет применяется в User.Row_3.

Примерно на эти же грабли я наступал, когда писал макросы и записывал с помощью их формулы в ячейки.
Когда я писал формулу в ShapeSheet, то в качестве разделителя использовал «,». Но когда я пытался записать формулу с помощью макроса, то у меня появлялась ошибка. Ошибка появлялась потому, что в качестве разделителя нужно было использовать “;”, то есть тот, который прописывает функция LISTSEP.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменить цвет из списка
СообщениеДобавлено: 07 сен 2018, 11:15 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
А потому, что Visio 2007 считает выражение RGB(255,0,0) списком

Это должно быть не Visio, а в установках Windows. Разве не так?
В любом случае, определяющим является не версия Visio, а локализация.
В любом случае автору огромный плюс за напоминание!
Причем это не только со списками. Я даже чаще натыкался на схожий эффект в числовых представлениях (точка или запятая). Пока не приучился всегда, где только можно, ставить не локализованные версии продуктов.
Дополнено позднее:
David J Parker в статье Testing Regional Settings in Visio писал(а):
So today I was embarrassed by a Norwegian client because I forgot (again) to take extra care when using the RGB(…) function. The result was that the displayed colours were appearing black in Norwegian (and doubtless many other languages), but correctly grey (gray if you are in the USA), blue, green and yellow in English (both UK and US).


Последний раз редактировалось Surrogate 29 фев 2024, 20:43, всего редактировалось 1 раз.
Добавлена ссылка на статью про региональные особенности


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

Зарегистрирован: 19 июн 2015, 22:18
Сообщений: 114
Использую Visio c: 2013
Очков репутации: 21

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
В любом случае, определяющим является не версия Visio, а локализация.

Дело не только в локализации. В Visio 2010 я смотрел - LISTSEP так же выдает точку с запятой, но функция без корректировки работает, а в 2007 - нет.


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

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



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

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


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

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