Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Перенаправляет обновленные значения, полученные в результате действий в пользовательском интерфейсе или автоматизации, в другую ячейку.
Синтаксис
SETATREF(reference [, set_expression [, ignore_eval ]])
Параметры
| Имя | Необходимость | Тип данных | Описание |
|---|---|---|---|
|
reference |
Обязательный |
String |
Ссылка на ячейку, в которой перенаправляются обновления. |
|
set_expression |
Необязательный |
String |
Выражение, назначенное для ссылки. |
|
ignore_eval |
Необязательный |
Логический |
Если значение TRUE, функция SETATREF оценивается как (0) ноль; Если значение FALSE (значение по умолчанию), функция SETATREF вычисляет значение ссылки. |
Замечания
Когда действие пользователя в окне рисования или метод автоматизации заставляет Microsoft Visio обновить ячейку, содержащую формулу SETATREF, вместо этого значение перенаправляется в ячейку, на которую ссылается формула SETATREF ( ссылка). Формула в ячейке, содержащей функцию SETATREF, остается нетронутой.
Если set_expression опущен, значение, заданное в пользовательском интерфейсе или с помощью службы автоматизации, присваивается указанной ячейке; В противном случае содержимое set_expression назначается указанной ячейке. Это позволяет изменять или преобразовывать новое значение перед присвоением указанной ячейке.
Функция SETATREF имеет две связанные функции:
Функция SETATREFEXPR, которую можно использовать для представления нового значения в set_expression. Например, set_expression SETATREFEXPR()-2 в. можно использовать для вычитания 2 дюйма из результата SETATREFEXPR.
Функция SETATREFEVAL, которую можно использовать, чтобы указать, что некоторая часть set_expression должна быть оценена и заменена ее результатом.
Функция SETATREF предназначена для использования в ячейках, которые могут быть изменены действиями пользователя в окне документа. Поддерживаются следующие ячейки:
Раздел ShapeTransform — ячейки Width, Height, Angle, PinX и PinY
Раздел преобразования текста— ячейки TxtWidth, TxtHeight, TxtAngle, TxtPinX и TxtPinY
Раздел 1-D Endpoints — ячейки BeginX, BeginY, EndX и EndY
Раздел Controls — ячейки Controls.X и Controls.Y
Раздел "Данные фигуры"
Так как SETATREF изменяет расположение, в котором изменяются значения ячеек, это влияет на срабатывание события. Если ячейка содержит SETATREF, события FormulaChanged и CellChanged активируются для ячейки, на которую ссылается SETATREF, а не для ячейки, содержащей SETATREF. Если ячейка, содержащая SETATREF, также содержит SETATREFEXPR, событие FormulaChanged также срабатывает для ячейки, содержащей SETATREF, из-за изменения параметра функции.
Другие важные моменты, которые следует отметить о функции SETATREF, включают следующее:
Функции SETATREF могут цепочки до 10 ссылок на другие функции SETATREF.
Ячейки могут содержать другие выражения в дополнение к функции SETATREF, включая несколько вхождений SETATREF в одной ячейке.
Если фигуры склеены, Visio следует цепочке ссылок SETATREF на том же листе и помещает формулы склеивания в ячейку, на которые указывает ссылка.
Автоматизация распознает функцию SETATREF и следует цепочке ячеек, на которые указывает ссылка.
Как и GUARD, SETATREF не защищает ячейки от изменений, внесенных с помощью функции SETF в таблице фигур.
Пример1
Предположим, что фигура имеет пользовательское свойство Width, а ячейка Width в разделе Преобразование фигуры содержит следующую формулу:
=SETATREF(Prop.Width)
Если пользователю нужно было изменить ширину фигуры в пользовательском интерфейсе, новое значение присваивается ячейке Prop.Width, а не ячейке Width в разделе ShapeTransform; формула в ячейке Ширина остается неизменной. Вы также можете задать ширину фигуры с помощью данных фигуры.
Пример2
Решения Visio часто имеют фигуры с иерархической связью, поэтому дочерние фигуры должны перемещаться при перемещении родительской фигуры. Ниже приведен пример управления этой связью с помощью функции SETATREF в таблице фигур.
Следующие формулы содержатся в разделе Преобразование фигуры дочерней фигуры. Кроме того, мы определяем пользовательские ячейки с именами User.DeltaX и User.DeltaY, которые отслеживают измерение смещения из ParentShape. Это позволяет дочерней фигуре перемещаться при перемещении родительской фигуры, а также сохранять иерархическую связь при перемещении дочерней фигуры.
PinX =SETATREF(User.DeltaX, SETATREFEVAL(SETATREFEXPR() - ParentShape! PinX)) + ParentShape! PinX
PinY =SETATREF(User.DeltaY, SETATREFEVAL(SETATREFEXPR() - ParentShape! PinY)) + ParentShape! PinY
При перемещении дочерней фигуры с помощью пользовательского интерфейса новые значения PinX и PinY задаются в качестве параметра в функции SETATREFEXPR. Функция SETATREF оценивает формулу, заключенную в SETATREFEVAL, и заменяет PinX и PinY их результатами, а затем результирующая формула назначается пользовательским ячейкам, на которые ссылается функция SETATREF — User.DeltaX и User.DeltaY. Наконец, значения, возвращаемые SETATREF (User.DeltaX или User.DeltaY), добавляются в расположение закрепления ParentShape, чтобы вычислить расположение закрепления дочерней фигуры.