У меня проблема, связанная с работой, и поэтому я не могу прикрепить файл примера.

Я использую динамические формы как часть диаграммы, где пользователь может изменить данные формы (т.е. изменить категорию), и форма изменит цвет. Механика для этого в ShapeSheet.

Ключевым элементом данных (Prop.Category) является индекс из фиксированного списка параметров. Поле пользователя (Пользователь.ForeColour) использует данные категории Prop.Category для определения значения цвета RGB из другого фиксированного списка (другая формула индекса / поиска). У меня есть FillForegnd для доступа к пользователю.ForeColour напрямую.

В моем примере здесь пользователь выбирает Prop.Category # 3, который косвенно устанавливает User.ForeColour для RGB(128,0,128). Однако в моей текущей настройке файла FillForegnd тогда установлен в RGB(64,86,150). Когда я выбираю другие категории, значения FillForegnd также изменяются от ожидаемого значения.

Я проверил ShapeSheet, используя формула и представление значений. Все правильно (за исключением конечного значения в FillForegnd). Двойная проверка пользователя.ForeColour показывает, что он содержит значение RGB (128,0,128), как и ожидалось.

Интересно, если я перезапишу формулу в User.ForeColour со статическим значением RGB(128,0,128), FillForegnd заполнен правильно, и форма показывает правильный цвет. Возвратитесь к формуле (которая все еще заканчивается в правильном значении), и FillForegnd снова заполняется с неправильным значением RGB.

Я проверил и удалил темы, это не имело никакого эффекта.

Visio 2010, Сетевая среда Windows 7.

Я пытался продублировать проблему в новом файле в другой системе (чтобы я мог получить загружаемый пример), но безуспешно. Файл с оригинальной главной формой все еще работает как ожидалось. Новый файл с скопированными фигурами (и по умолчанию копируемый мастер) - это файл с проблемами. Я дважды проверил ShapeSheet, и настройки по умолчанию /master соответствуют ожиданиям (черный текст), а настраиваемые параметры (синий текст) соответствуют ожиданиям.

1 ответ1

0

Хорошие люди на форумах visguy предоставили достаточно информации, чтобы решить вопрос, который я здесь поставил.

User.Forecolour использовало формулу (INDEX(...)) для определения желаемого значения цвета. Такое использование формулы плохо сочеталось с ячейкой FillForegnd .

Существуют три простых решения. Оба решения используют SETF(...) вместо того, чтобы указывать FillForegnd на формулу.

  1. User.Forecolour свойство можно использовать SETF(GetRef(FillForegnd),INDEX(...)) Это заставит значение в FillForegnd и будет самой простой модификацией исходного кода. Недостатком является то, что любые пользовательские изменения самой фигуры будут перезаписывать ячейку FillForegnd которая не будет исправлена, пока пользователь снова не выберет правильные данные формы.
  2. Дополнительный User.X ячейка может быть создана. SETF в ответе 1 будет GetRef(User.X) вместо FillForegnd будет содержать Guard(User.X) Это остановит пользователей, случайно меняющих цвета.
  3. Третий вариант расширяет оба предыдущих ответа. В User.ForeColour : =SETF(GetRef(FillForegnd),"GUARD(INDEX(...))") . Это установит GUARD мере необходимости в области цвета переднего плана.

Все эти решения используют характеристику, заключающуюся в том, что SETF может перезаписывать ячейки с GUARD , но обычное вмешательство пользователя в GUI (область страницы фигур) не может.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .