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