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

Форум по вопросам применения и программирования в Visio
Текущее время: 28 мар 2024, 12:39

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


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


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Событие "Соединение"
СообщениеДобавлено: 04 июл 2017, 13:15 
Не в сети
Просто PowerCat
Аватара пользователя

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

Добавить очки репутацииУменьшить очки репутации
Привет.
Не могу сообразить, как в коде написать событие соединения (момент, когда шейпы оказались соединены). В любимом МСДН это событие описано одной строчкой, без примера.

Пожалуйста, объясните, как воспользоваться этой информацией МСДН
https://msdn.microsoft.com/VBA/Visio-VB ... vent-visio


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Событие "Соединение"
СообщениеДобавлено: 04 июл 2017, 14:28 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 12 май 2012, 15:16
Сообщений: 122
Очков репутации: 13

Добавить очки репутацииУменьшить очки репутации
оставлю это здесь ©
jheyman в записи блога Auto-computed values in Visio diagrams with VBA писал(а):
и вообще много интересного в этом материале. а из вопроса не понятно, что за событие топик-стартер задумал сотворить ?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Событие "Соединение"
СообщениеДобавлено: 04 июл 2017, 16:00 
Не в сети
Просто PowerCat
Аватара пользователя

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

Добавить очки репутацииУменьшить очки репутации
Два шейпа, у них по одному коннекшн пойнту, соединяю их коннектором, момент приклеивания ко второму конекшнпойнту - мне нужно особытить.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Событие "Соединение"
СообщениеДобавлено: 04 июл 2017, 16:20 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
Пожалуйста, объясните, как воспользоваться этой информацией МСДН

Ну так, все же написано...
У документа такого события нет.
Значит нужно объявить страницу с WithEvents. Типа,
Dim WithEvents pg As Visio.Page
Потом щелкнуть по событию и появится прототип обработчика. Туда вписывать свой код.
Чтобы это заработало, нужно будет еще в какой-то момент назначить этому pg реальную страницу (за которой нужно следить).
Что делать внутри обработчика, уже выясняли раньше. Можно определить, какие шейпы, образовали этот Connect, какими частями и т.д. Отфильтровать ненужные и заниматься только с нужными.


Вложения:
cn.jpg
cn.jpg [ 29.59 Кб | Просмотров: 490 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Событие "Соединение"
СообщениеДобавлено: 04 июл 2017, 18:39 
Не в сети
Просто PowerCat
Аватара пользователя

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

Добавить очки репутацииУменьшить очки репутации
Благодарю. Получилось, повесил на открытие книги...
Только интересно, срабатывает на первое соединение соединителя, а не на окончательное соединение двух шейпов ))) ну да это не страшно.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Событие "Соединение"
СообщениеДобавлено: 05 июл 2017, 09:20 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
срабатывает на первое соединение соединителя, а не на окончательное соединение двух шейпов

Скорее всего нужно искать какую-то погрешность в фильтре в Вашем обработчике события.
Кстати, когда кажется, что что-то не срабатывает, очень полезен Event Monitor (из состава Visio SDK). Он выводит список всего, что срабатывает. С дополнительной информацией.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Событие "Соединение"
СообщениеДобавлено: 05 июл 2017, 11:13 
Не в сети
Ветеран

Зарегистрирован: 05 июл 2012, 21:34
Сообщений: 225
Очков репутации: 27

Добавить очки репутацииУменьшить очки репутации
powercat писал(а):
Благодарю. Получилось, повесил на открытие книги...
Только интересно, срабатывает на первое соединение соединителя, а не на окончательное соединение двух шейпов ))) ну да это не страшно.

Ну если нужно обрабатывать все после того как все события произойдут, то надо собирать в коллекцию эти ваши коннекты, а обрабатывать по событию Visio Idle (приложение освободилось, вообщем отдыхает).

Dim IdleEvnt As New clsVisioIdle
IdleEvnt.SetEvent visEvtApp + visEvtIdle, "my_evnt"


Вложения:
clsVisioIdle.zip [633 байт]
Скачиваний: 48


Последний раз редактировалось Robink 05 июл 2017, 12:05, всего редактировалось 1 раз.
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Событие "Соединение"
СообщениеДобавлено: 05 июл 2017, 12:05 
Не в сети
Просто PowerCat
Аватара пользователя

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

Добавить очки репутацииУменьшить очки репутации
Нет, нужно обрабатывать завершение соединения 2-х! шейпов коннектором. Приклеил к одному, приклеил ко второму - поймал событие.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Событие "Соединение"
СообщениеДобавлено: 05 июл 2017, 12:07 
Не в сети
Ветеран

Зарегистрирован: 05 июл 2012, 21:34
Сообщений: 225
Очков репутации: 27

Добавить очки репутацииУменьшить очки репутации
powercat писал(а):
Нет, нужно обрабатывать завершение соединения 2-х! шейпов коннектором. Приклеил к одному, приклеил ко второму - поймал событие.

Так тут на прямую сделать нельзя. Приложил к сообщению выше класс с обработкой события visio idle, там в нем запуск отмены действия. И код установки события приведен в сообщении.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Событие "Соединение"
СообщениеДобавлено: 05 июл 2017, 14:06 
Не в сети
Просто PowerCat
Аватара пользователя

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

Добавить очки репутацииУменьшить очки репутации
Благодарю


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

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


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

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