Author |
Topic |
|
mers
Russia
159 Posts |
Posted - 02/20/2007 : 18:04:31
|
Здравствуйте. Задача следующая. Есть шейп, на него програмно добавляется некоторое количество конекшн поинтов. Необходимо подписать эти конекшн поинты. Т.е. рядом с каждым должен быть текст, при движении шейпа этот текст также должен двигаться.
Вот какие возможные мне видятся решения. 1. В PinX и PinY каждого текстового блока прописать соотвествующие ShapeName!ConectionPointName.X и ShapeName!ConectionPointName.Y. Но это не помогает при перемещении шейпа. Текстовые блоки остаются неподвижными.
2. Сгруппировать шейп и текстовые блоки. Но это не получается из-за логики программы. Каждый шейп имеет тип (=название мастера) Для каждого типа шейпов в специальном конфигурационном файле прописаны свойства, конкретные значения которых потом берутся в БД для каждого конкретного шейпа. Т.е. если я группирую шейп с чем либо, я теряю информацию о типе и свойствах этого шейпа.
3. Каким-то образом в шейп добавить несколько текстовых полей, причем у каждого из них можно указать положение относительно шейпа. Насколько я понял, это сделать нельзя в принципе :(.
Самым реальным на данный момент мне видится вариант 1. Но я так и не смог понять каким образом заставить текст двигатся с шейпом вместе. Может кто подскажет как это можно сделать? Или еще какие-нибудь идеи подкинет. |
Edited by - mers on 02/20/2007 18:06:02 |
|
Tumanov
Russia
1198 Posts |
Posted - 02/20/2007 : 19:51:20
|
Вы всего лишь не учли, что координаты ConnectionPoints отсчитываются в локальной системе координат шейпа. Вам же нужно пересчитать их в родительские координаты. Самым понятным наверное будет применить формулу типа =Sheet.1!Connections.X1+Sheet.1!PinX-Sheet.1!Width/2 Ну, и еще куда-нибудь в сторону сдвинуть, а то точку накроет. Все будет нормально двигаться. |
|
|
mers
Russia
159 Posts |
Posted - 02/20/2007 : 21:22:44
|
... |
Edited by - mers on 02/21/2007 00:27:01 |
|
|
mers
Russia
159 Posts |
Posted - 02/21/2007 : 00:29:11
|
Не получается :( текст не двигается. т.е. если я зайду в шейпшит текста войду в PinX и нажуму ентер, то текст встанет куда надо, но сам по себе - автоматически, он не двигается.
может примерчик какой покажете |
Edited by - mers on 02/21/2007 00:29:34 |
|
|
Tumanov
Russia
1198 Posts |
Posted - 02/21/2007 : 07:11:05
|
А у меня двигается. Уже после того, как вписал формулы, таскаю первый шейп, а за ним движется второй. Может быть Вы начали что-то добавлять, усложнили пример и уже в этих добавках вкралась ошибка, а от этого останавливается выполнение формул? Попробуйте прицепить для начала только одно поле и больше ничего не добавлять... (Приведенную формулу я скопировал из шейп-листа. Это и есть пример). |
|
|
mers
Russia
159 Posts |
Posted - 02/21/2007 : 10:06:45
|
Понял в чем дело. Из-за того что название мастера написано по русски, он не записывает формулу в ячейку. Т.е. формулу=Подстанция комплектная трансформаторная.4!Connections.Joing1.X Visio не воспринимает. Причем если я эту формулу возьму в кавычки, она запишется в шейпшит, но работать будет как я указал выше, т.е. по нажатию ентер, а не автоматически.
Попробовал прилепить надпись к шейпу с именем Sheet.4, все работает.
Собсно вопрос, как заставить работать формулу с русскими названиями. |
Edited by - mers on 02/21/2007 10:19:14 |
|
|
mers
Russia
159 Posts |
Posted - 02/21/2007 : 12:55:46
|
Что то вообще ничего не получается :( Не могу сослаться вообще ни на какую ячейку пользовательского шейпа. Т.е. если шейп одной из стандартных библиотек Visio - все впорядке. Как только я беру шейп из своей библиотеки (не важно английское или русское название), формула не вставляется в ячейку. :( В чем может быть дело?
UPD. В хелпе нашел топик About cell references. Вот что там сказано:
A shape, page, master, document, or style with a nonstandard name - 'Sheetname'!CellName - '1-D'!LineColor Но даже если я беру имя своего шейпа в одинарные кавычки, формула не вставляется. Настораживает только что используется Sheetname. Что это? |
Edited by - mers on 02/21/2007 14:38:56 |
|
|
mers
Russia
159 Posts |
Posted - 02/21/2007 : 15:37:03
|
Проблема решилась заменой shape.Name на shape.NameID |
|
|
|
Topic |
|
|
|