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

Как отвязать Controls от размера фигуры
http://visio.getbb.ru/viewtopic.php?f=5&t=1325
Страница 1 из 1

Автор:  vin [ 04 май 2018, 17:34 ]
Заголовок сообщения:  Как отвязать Controls от размера фигуры

Делаю умный динамический коннектор с двумя дополнительными текстовыми полями в начале и в конце.
Для этого я взял коннектор, преобразовал его в группу, добавил два текстовых блока.
К текстовым полям привязаны ручки управления (Controls).

Возьмем для примера левую надпись с ручкой управления. Я хочу добиться такого поведения, чтобы при изменении коннектора ручка (и привязанный к ней блок текста) не отъезжала от начальной точки (BeginX,BeginY).

Ручка с встроенным текстом (TextPosition) ведет себя именно так, как я хочу сделать - в ней нет формул, записываются только координаты.
Во вновь добавленных ручках присутствуют значения Width и Height. Убрать их не получается, если пишешь значения, а потом передвигаешь ручку, то формулы появляются. Это приводит к тому, что при изменении размера коннектора текст отъезжает в сторону.

Я пытался решить эту проблему через SETATREF (для левого блока), но не получается.
Изображение
Изображение

Вложения:
Connector.vsd [28 Кб]
Скачиваний: 14

Автор:  Tumanov [ 04 май 2018, 18:38 ]
Заголовок сообщения:  Re: Как отвязать Controls от размера фигуры

Защитить значение через Guard.

Автор:  vin [ 05 май 2018, 01:52 ]
Заголовок сообщения:  Re: Как отвязать Controls от размера фигуры

Не пойдет, в таком случае ручки управления перестанут двигаться.

Автор:  Tumanov [ 05 май 2018, 11:37 ]
Заголовок сообщения:  Re: Как отвязать Controls от размера фигуры

Тогда не понял...
Вот так ведет себя Ваш файл. Текст остается там, куда сдвинута точка. А как нужно?
А встроенный текст как раз двигается. Хоть там и записаны не формулы, а координаты, но они вычисляются движком заново при каждом изменении коннектора. (Если задано поведение "пропорционально").

Вложения:
control.gif
control.gif [ 398.81 Кб | Просмотров: 177 ]

Автор:  vin [ 06 май 2018, 00:40 ]
Заголовок сообщения:  Re: Как отвязать Controls от размера фигуры

Мне нужно задать поведение, чтобы расстояние по x и по y от начальной точки для левого и от конечной точки для правого блока не менялись.
Сейчас они пропорциональны ширине и длине группы. А как отвязаться от этой пропорции - не знаю.

Я могу в Controls.TextPositionL и TextPositionR записать значения , но как только я начну двигать ручку - фомула слетит - в нее запишется формула со ссылками на Width и Height группы. И при при изменении длины текст опять начнет отъезжать или приближаться.

Защитить ее GUARD я тоже не могу - ручки перестанут двигаться.

Автор:  nbelyh [ 06 май 2018, 15:29 ]
Заголовок сообщения:  Re: Как отвязать Controls от размера фигуры

Убери нафик все формулы, поставь поведение "X Behavior" = 4 (visCtrlOffsetMax), может помочь
https://msdn.microsoft.com/en-us/librar ... 67166.aspx

Изображение

Автор:  vin [ 07 май 2018, 13:45 ]
Заголовок сообщения:  Re: Как отвязать Controls от размера фигуры

nbelyh
Спасибо, частично помогло.
Изображение

Для X Behavior установил 2 (+ скрытие ручки при отсутствии текста). 2 означает, что X будет считаться от левого карая фигуры. Я проверял - левым краем считается Begin X (LocPinX - указывает на центр коннектора). Это при горизонтальном расположении.

Но если делаю вертикальное положение коннектора, то смещение по X уже считается Begin X - LocPinX (???????)

На анимации я сделал уголок 5х5 мм и показываю этот случай. Не понимаю, почему так работает? Я хочу с помощью макроса подправлять положение надписи, но для этого нужно понять поведение. (примечание - на Y пока не смотрю, на вторую надпись тоже).
Вложение:
conn2.gif
conn2.gif [ 1.79 Mб | Просмотров: 128 ]


Вложения:
Connector.vsd [28.5 Кб]
Скачиваний: 14

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