Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 23 июн 2017, 22:55

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


Размещение файлов в формате vsd (а не vsdx/vsdm), увеличивает вероятность ответа стремительным домкратом !!!



Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 17 авг 2016, 08:34 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 179
Использую Visio c: 2000
Очков репутации: -1

Добавить очки репутацииУменьшить очки репутации
Блин...как все мутно...
Вот это вроде бы прояснило:
Код:
ActiveWindow.Shape.Shapes("Sheet.97").Connects(1).ToSheet.Name

Connects(1) - получаю имя присоединенного шейпа с одно стороны, Connects(2) - с другой стороны. Вопросы:
1. Это коллекция, то с какого хрена отсчет ведется от единицы?
2. Получается, что могут быть ТОЛЬКО индексы 1 и 2, т.к. соединяются только 2 шейпа?

С FromConnects - даже не понял, как, где и как правильно написать :wall: Тупой МСДН пишет: "Use the FromConnects property of a Shape object to retrieve a Connects collection with a Connect object for every Shape object that is connected (glued) to the indicated Shape object", а где вашу в душу мать примеры нах???


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 17 авг 2016, 09:18 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 411
Использую Visio c: 2008
Очков репутации: 87

Добавить очки репутацииУменьшить очки репутации
Если я правильно понял:

Connects - это коллекция соединений для коннектора.
Пример(Sh - коннектор, линия):
Sh.Connects.Count - количество соединений.
Sh.Connects(1).ToSheet.Name - получаем имя шейпа присоединенного к началу коннектора.
Sh.Connects(2).ToSheet.Name - получаем имя шейпа присоединенного к концу коннектора.
Наверное действительно может быть только 2 в коллекции(могу ошибаться).

FromConnects - это свойство шейпа к которому присоединяются коннекторы.
Пример(Sh - не коннектор):
Sh.FromConnects.Count - количество соединений.
Sh.FromConnects(1).FromSheet.Name - получаем имя коннектора присоединенного к шейпу.
Sh.FromConnects(2).FromSheet.Name - получаем имя коннектора присоединенного к шейпу.
Sh.FromConnects(N).FromSheet.Name - получаем имя коннектора присоединенного к шейпу.
Может быть столько соединений, сколько к шейпу подключено коннекторов.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 17 авг 2016, 09:40 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 875
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 118

Добавить очки репутацииУменьшить очки репутации
powercat писал(а):
Это коллекция, то с какого хрена отсчет ведется от единицы?

дык в бейсике так. начинается всё (почти) с 1, а не с 0. это тебе не Си.
powercat писал(а):
Получается, что могут быть ТОЛЬКО индексы 1 и 2, т.к. соединяются только 2 шейпа?

в 99% случаев - да. но программно вроде как можно приклеить любой конец коннектора хоть к 100 шейпам одновременно (тут не уверен, давно не занимался этим). но в любом случае на шейпе могут быть точки подключения, которые могут создавать коннекты, а этих точек может быть сколько угодно.
powercat писал(а):
С FromConnects - даже не понял, как, где и как правильно написать

в визио так - шейп сам может клеиться к другим - это Connects (в основном это линии и коннекторы (не всегда)), а может быть так, что к этому шейпу приклеены другие шейпы (те самые линии и коннекторы) - это FromConnects. а может быть так что, например, коннектор приклеен к шейпу, и к коннектору приклеен другой коннектор - тогда заполнены обе коллекции.
Shishok писал(а):
Sh.Connects(1).ToSheet.Name - получаем имя шейпа присоединенного к началу коннектора.
Sh.Connects(2).ToSheet.Name - получаем имя шейпа присоединенного к концу коннектора.

в визио начало и конец коннектора (линии) различаются. и определить можно так: Sh.Connects(1).FromPart = visBegin (visEnd).
Смотря какое соединение будет первым, такое и запишется в Connects(1)


Последний раз редактировалось 9rey 17 авг 2016, 09:44, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 17 авг 2016, 09:43 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 411
Использую Visio c: 2008
Очков репутации: 87

Добавить очки репутацииУменьшить очки репутации
A так можно получить имя присоединенной ячейки присоединенного коннектора/линии:
Sh.FromConnects(1).FromCell.Name
Получаем "BeginX" или "EndX". То есть узнаем начало или конец коннектора присоединен, для первого соединения.

Ну есть еще ToPart, ToCell, FromPart. Короче полно заморочек. Это конкретно разбираться - по задаче.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 17 авг 2016, 09:49 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 875
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 118

Добавить очки репутацииУменьшить очки репутации
Shishok писал(а):
Ну есть еще ToPart, ToCell, FromPart. Короче полно заморочек. Это конкретно разбираться - по задаче

да, поначалу сложно, потом привыкаешь. довольно гибкий инструмент, поэтому и замороченный


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 17 авг 2016, 17:03 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 179
Использую Visio c: 2000
Очков репутации: -1

Добавить очки репутацииУменьшить очки репутации
Shishok писал(а):
Если я правильно понял:

Connects - это коллекция соединений для коннектора.
Пример(Sh - коннектор, линия):
Sh.Connects.Count - количество соединений.
Sh.Connects(1).ToSheet.Name - получаем имя шейпа присоединенного к началу коннектора.
Sh.Connects(2).ToSheet.Name - получаем имя шейпа присоединенного к концу коннектора.
Наверное действительно может быть только 2 в коллекции(могу ошибаться).

FromConnects - это свойство шейпа к которому присоединяются коннекторы.
Пример(Sh - не коннектор):
Sh.FromConnects.Count - количество соединений.
Sh.FromConnects(1).FromSheet.Name - получаем имя коннектора присоединенного к шейпу.
Sh.FromConnects(2).FromSheet.Name - получаем имя коннектора присоединенного к шейпу.
Sh.FromConnects(N).FromSheet.Name - получаем имя коннектора присоединенного к шейпу.
Может быть столько соединений, сколько к шейпу подключено коннекторов.


Но я не использую коннектор, я использую простую линию. Т.е. она в принципе НЕ коннектор. Следовательно, она должна понимать Connects(1)(2)(и она их понимает и показывает присоединенные шейпы), и FromConnects, и показывать опять эти же шейпы...


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 17 авг 2016, 17:53 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 848
Очков репутации: 100575

Добавить очки репутацииУменьшить очки репутации
Цитата:
Но я не использую коннектор, я использую простую линию. Т.е. она в принципе НЕ коннектор. Следовательно, она должна понимать Connects(1)(2) ... и FromConnects

Не должна!
Простая линия или сложная - здесь это не имеет значения.
Имеет значение - кто присоединяется и к кому присоединяются.
Просто так уж повелось, что чаще всего присоединяются линии к 2D шейпам. Отсюда и заблуждение.
Если к линии (или коннектору) добавить Connection point и к ней присоединить другой шейп (для простоты линию), то только тогда на первой линии появится FromConnects.
Такой же эффект будет, если установлено "Клеить к контуру". То есть опять же станет возможно нечто приклеить к линии (коннектору).
А без дополнительных ухищрений - глухо. На линии будут возможны только Connects.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 17 авг 2016, 20:33 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 411
Использую Visio c: 2008
Очков репутации: 87

Добавить очки репутацииУменьшить очки репутации
powercat, вот попробуй. На скорую руку сварганил сканер "автобусов" :)
Там, кстати, используются простые линии.


Вложения:
Scanner_Autobus.vsd [150.5 Кб]
Скачиваний: 13
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 18 авг 2016, 08:24 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 179
Использую Visio c: 2000
Очков репутации: -1

Добавить очки репутацииУменьшить очки репутации
Shishok писал(а):
powercat, вот попробуй. На скорую руку сварганил сканер "автобусов" :)
Там, кстати, используются простые линии.

Благодарю за пример, обязательно использую в работе!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 18 авг 2016, 08:26 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 179
Использую Visio c: 2000
Очков репутации: -1

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Цитата:
Но я не использую коннектор, я использую простую линию. Т.е. она в принципе НЕ коннектор. Следовательно, она должна понимать Connects(1)(2) ... и FromConnects

Не должна!
Простая линия или сложная - здесь это не имеет значения.
Имеет значение - кто присоединяется и к кому присоединяются.
Просто так уж повелось, что чаще всего присоединяются линии к 2D шейпам. Отсюда и заблуждение.
Если к линии (или коннектору) добавить Connection point и к ней присоединить другой шейп (для простоты линию), то только тогда на первой линии появится FromConnects.
Такой же эффект будет, если установлено "Клеить к контуру". То есть опять же станет возможно нечто приклеить к линии (коннектору).
А без дополнительных ухищрений - глухо. На линии будут возможны только Connects.


Ага, уже теплее...Правильно ли я понимаю, что FromConnects может существовать только у того шейпа, на который повесили Connection point?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 18 авг 2016, 08:56 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 411
Использую Visio c: 2008
Очков репутации: 87

Добавить очки репутацииУменьшить очки репутации
Цитата:
Ага, уже теплее...Правильно ли я понимаю, что FromConnects может существовать только у того шейпа, на который повесили Connection point?

Совершенно верно.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 18 авг 2016, 09:40 
FromConnects есть у всех.
FromConnects.Count если больше нуля, то есть точка коннекта


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 18 авг 2016, 09:59 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 848
Очков репутации: 100575

Добавить очки репутацииУменьшить очки репутации
Цитата:
...FromConnects может существовать только у того шейпа, на который повесили Connection point?

Нет, не правильно.
Visio умеет клеить не только к Connection points.
Еще можно к вершинам, маркерам, направляющим и даже к контуру шейпа. Это не считая динамического соединения.
Зато не к всякой Connection point можно приклеиться, потому как они бывают разного типа.
Другое дело, что у линии нет вершин и маркеров... Это немного ограничивает. Но к контуру клеить точно можно (если соответствующую галочку поставить).
Возьмите вот такой макрос и поэкспериментируйте
Код:
Sub ttt()
    Debug.Print ActiveWindow.Selection(1).Connects.Count
    Debug.Print ActiveWindow.Selection(1).FromConnects.Count
End Sub

Смотрите, какие числа он будет выдавать для селектированного шейпа в разных условиях.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 19 авг 2016, 10:05 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 179
Использую Visio c: 2000
Очков репутации: -1

Добавить очки репутацииУменьшить очки репутации
А вот в одном из примеров на линии есть какие-то movepoints - чтобы линия под прямыми углами поворачивалась - это как вставить на линию?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 19 авг 2016, 10:12 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 848
Очков репутации: 100575

Добавить очки репутацииУменьшить очки репутации
Цитата:
А вот в одном из примеров...

Круто!
И как догадаться где это и на что похоже?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 19 авг 2016, 10:21 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 179
Использую Visio c: 2000
Очков репутации: -1

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Цитата:
А вот в одном из примеров...

Круто!
И как догадаться где это и на что похоже?

А...сорри, я понял уже - это на коннекторе такие штуки, не на обычной линии.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 19 авг 2016, 10:28 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 179
Использую Visio c: 2000
Очков репутации: -1

Добавить очки репутацииУменьшить очки репутации
А как сделать следующее - при перетягивании из мастера на лист в момент вставки менять значение части полей - ну там у меня имя есть, и числа - как сделать, чтобы открывался в момент перетягивания диалог ввода? Вернее - какое это событие - перетягивание?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 19 авг 2016, 10:34 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 848
Очков репутации: 100575

Добавить очки репутацииУменьшить очки репутации
Это чаще делается не через обычное событие, а через ячейку EventDrop в ShapeSheet.
В мастер-шейпе нечто прописывается в эту ячейку, а при Drop оно срабатывает.
Может выполнить какую-нибудь формулу или вызвать аддон или макрос.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 19 авг 2016, 11:02 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 179
Использую Visio c: 2000
Очков репутации: -1

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Это чаще делается не через обычное событие, а через ячейку EventDrop в ShapeSheet.
В мастер-шейпе нечто прописывается в эту ячейку, а при Drop оно срабатывает.
Может выполнить какую-нибудь формулу или вызвать аддон или макрос.


Хм...я что-то ВООБЩЕ не въехал, как формировать формулу...Т.е. понятно, что ее надо вписать в ячейку раздела Events, но именно как саму формулу написать...эээ...есть ли пособие по написанию формул для ShapeSheet?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 19 авг 2016, 11:44 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 848
Очков репутации: 100575

Добавить очки репутацииУменьшить очки репутации
По поводу "пособия по написанию формул" Surrogate собрал кучу ссылок под названием "ShapeSheet: Полезные ссылки"


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: Google Adsense [Bot] и гости: 1


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB