All Forums
 Категория Visio
 Форум Вопросы и ответы
 Присоединение текстового блока к шейпу
Author Previous Topic Topic Next 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
Ну, и еще куда-нибудь в сторону сдвинуть, а то точку накроет.
Все будет нормально двигаться.
Go to Top of Page

mers

Russia
159 Posts

Posted - 02/20/2007 :  21:22:44
...

Edited by - mers on 02/21/2007 00:27:01
Go to Top of Page

mers

Russia
159 Posts

Posted - 02/21/2007 :  00:29:11
Не получается :(
текст не двигается.
т.е. если я зайду в шейпшит текста войду в PinX и нажуму ентер, то текст встанет куда надо, но сам по себе - автоматически, он не двигается.

может примерчик какой покажете

Edited by - mers on 02/21/2007 00:29:34
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 02/21/2007 :  07:11:05
А у меня двигается.
Уже после того, как вписал формулы, таскаю первый шейп, а за ним движется второй.
Может быть Вы начали что-то добавлять, усложнили пример и уже в этих добавках вкралась ошибка, а от этого останавливается выполнение формул? Попробуйте прицепить для начала только одно поле и больше ничего не добавлять...
(Приведенную формулу я скопировал из шейп-листа. Это и есть пример).
Go to Top of Page

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
Go to Top of Page

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
Go to Top of Page

mers

Russia
159 Posts

Posted - 02/21/2007 :  15:37:03
Проблема решилась заменой shape.Name на shape.NameID
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)