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

Смена цвета базовой фигуры при изменении её отображения
http://visio.getbb.ru/viewtopic.php?f=5&t=1369
Страница 1 из 1

Автор:  black_dragon [ 27 авг 2018, 14:50 ]
Заголовок сообщения:  Смена цвета базовой фигуры при изменении её отображения

Добрый день!
Пытаюсь изобразить схему электрических соединений объекта в Visio 2007, используя набор базовых фигур.
Visio позволяет правой кнопкой мыши менять отображение фигур (замкнутая и разомкнутая сеть), но необходимо, чтобы при изменении отображения фигуры менялся её цвет.
Пытался задать изменение цвета в таблице свойств фигуры "LineColor" в зависимости от параметра "Scratch.A1", но всё безуспешно (Формулу забивал: =IF(Scratch.A1=1,THEMEGUARD(RGB(255,0,0)),THEMEGUARD(RGB(0,0,0))) ).
Может кто знает, как это сделать.

Автор:  Гость [ 27 авг 2018, 15:06 ]
Заголовок сообщения:  Re: Смена цвета базовой фигуры при изменении её отображения

Недавно была тема про изменение учета линии

Автор:  Tumanov [ 27 авг 2018, 15:34 ]
Заголовок сообщения:  Re: Смена цвета базовой фигуры при изменении её отображения

Насколько я помню, в той теме обсуждалась проблема со связкой Index и RGB. То есть несколько другая проблема.
В данном случае никакой индексации списков не наблюдается. Приведенная выше формула должна работать.
(Я уж не говорю, что я ее сейчас к себе скопировал и она работает).
Возможно, делов чем-то еще...
black_dragon, что значит у Вас "набор базовых фигур"? Откуда он берется? Вы пишете формулу в копию шейпа на странице рисунка или в мастер-шейп?
Какая версия Visio?

Автор:  Гость [ 27 авг 2018, 17:13 ]
Заголовок сообщения:  Re: Смена цвета базовой фигуры при изменении её отображения

Tumanov писал(а):
в той теме обсуждалась проблема со связкой Index и RGB.
да, но я привел эту тему в пример в виду того что в некоторых версиях в ячейке LineColor не работают связки RGB ни с Index, ни с IF. только RGB в чистом виде.
помогает только задание формулы в эту ячейку с использованием SETF из сторонней ячейки!

Автор:  Tumanov [ 27 авг 2018, 17:21 ]
Заголовок сообщения:  Re: Смена цвета базовой фигуры при изменении её отображения

Ну вот, хоть убей, не верю!
Я бы еще понял, если не работало If(Scratch.A1=RGB(...
Но ведь в данном случае сравнивается с единицей. Чему тут не работать?!
У любой ошибки должно быть хоть какое-то обоснование. Типа, "вот эта функция может обогнать вот эту" или "вот здесь можно не учесть переполнения". Здесь же я пока не представляю механизма ошибки.
Нужно бы пример в студию.

Автор:  Tumanov [ 27 авг 2018, 17:32 ]
Заголовок сообщения:  Re: Смена цвета базовой фигуры при изменении её отображения

Хотя... Может что-то происходит при переводе в индексы...
Ведь на самом деле значение в ячейке FillColor, LineColor и т.д. - это именно индекс.
Но тогда нужно вообще по-возможности отказываться от RGB и использовать индексы. Уж это точно будет надежно.

Автор:  Гость [ 28 авг 2018, 07:49 ]
Заголовок сообщения:  Re: Смена цвета базовой фигуры при изменении её отображения

Tumanov писал(а):
Насколько я помню, в той теме обсуждалась проблема со связкой Index и RGB. То есть несколько другая проблема.
В данном случае никакой индексации списков не наблюдается. Приведенная выше формула должна работать.
(Я уж не говорю, что я ее сейчас к себе скопировал и она работает).
Возможно, делов чем-то еще...
black_dragon, что значит у Вас "набор базовых фигур"? Откуда он берется? Вы пишете формулу в копию шейпа на странице рисунка или в мастер-шейп?
Какая версия Visio?



Изображение
Базовые фигуры беру из соответствующего окна слева. Формулу пишу в копию шейпа на странице рисунка, наверное (открывая свойство конкретного рисунка).
Версия Visio 2007 (12.0.6606.1000) SP3 MSO (12.0.6662.5000)

Автор:  Tumanov [ 28 авг 2018, 08:53 ]
Заголовок сообщения:  Re: Смена цвета базовой фигуры при изменении её отображения

Ну вот, кажется и причина ясна.
Ваш шейп является группой.
И Вы пытаетесь управлять цветом линии группы через шейп-лист. Естественно, это не получается, потому как у группы нет линий.
В данном случае нужно управлять цветом линий шейпов, входящих в группу. То есть вписывать уже несколько одинаковых формул, ссылающихся из входящего шейпа на ячейку Scratch группы.
Когда Вы делаете схожую операцию через пользовательский интерфейс, то Visio автоматически распространяет цвет на входящие шейпы. Но в VBA этого не происходит. Сказали "изменить цвет группы", он и изменился. Но не более. Цвет входищих надо изменять дополнительно.

Автор:  Tumanov [ 28 авг 2018, 08:57 ]
Заголовок сообщения:  Re: Смена цвета базовой фигуры при изменении её отображения

У меня нет такого трафарета. Если у Вас вызывает затруднение сказанное выше, то выложите документ Visio с одним таким шейпом. Я посмотрю структуру и добавлю в шейп нужные формулы. Для образца.

Автор:  Гость [ 28 авг 2018, 09:14 ]
Заголовок сообщения:  Re: Смена цвета базовой фигуры при изменении её отображения

Гость писал(а):
Базовые фигуры беру из соответствующего окна слева.
это и есть тот самый GOST Electro for Visio

Автор:  black_dragon [ 28 авг 2018, 11:54 ]
Заголовок сообщения:  Re: Смена цвета базовой фигуры при изменении её отображения

Tumanov писал(а):
Ну вот, кажется и причина ясна.
Ваш шейп является группой.
И Вы пытаетесь управлять цветом линии группы через шейп-лист. Естественно, это не получается, потому как у группы нет линий.
В данном случае нужно управлять цветом линий шейпов, входящих в группу. То есть вписывать уже несколько одинаковых формул, ссылающихся из входящего шейпа на ячейку Scratch группы.
Когда Вы делаете схожую операцию через пользовательский интерфейс, то Visio автоматически распространяет цвет на входящие шейпы. Но в VBA этого не происходит. Сказали "изменить цвет группы", он и изменился. Но не более. Цвет входищих надо изменять дополнительно.



Спасибо огромное за разъяснение! Всё заработало!!

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