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

Форум по вопросам применения и программирования в Visio
Текущее время: 16 авг 2018, 10:03

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


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


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)



Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Микропрограмма из трех объектов
СообщениеДобавлено: 06 июл 2015, 13:37 
Не в сети
Ветеран
Аватара пользователя

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

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

Нужно сделать вот такую штуку:
1. Вывести кнопу, при нажатии на которую будет появляться фигура (разные кнопы - разные фигуры). Несколько нажатий - несколько фигур;
2. Фигуры между собой должно соединять линиями со стрелкой, которые будут означать передачу данных от фигуры к фигуре. Эти линии-стрелки добавляются тоже по клику своей кнопы. Потом я ими соединю фигуры;
3. В первой по направлению линии фигуре я пишу, скажем, 10, и во вторую должен вывестись результат обработки значения из первой, например 10^2;
4. Если я перецеплю стрелку наоборот, то направление расчета тоже изменится, т.е. бывшая первая фигура станет принимающей значения. При этом алгоритм расчета не изменится.


Схема у меня пока такая:
Фигуры и стрелки - это классы, со своим набором свойств и методов (начало - конец). При нажатии на кнопы создается элемент класса и выкладывается на лист.
Что делать дальше - не знаю, т.к. с VBA под вижуо не работал (( Литературы не нашел!
Ткнике - куда двигаться...обычная запись макрососов не помогла )))


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 06 июл 2015, 17:03 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Для новичка Вы выбрали достаточно сложную задачу...
Для начала скачайте SDK для своей версии Visio. Там много примеров.
Почитайте статьи на visio.artberg.ru. Например, вот эту http://visio.artberg.ru/biblio/st004.htm
Рисование шейпов выполняется методом Drop объекта Page. Это довольно легко.
Выбрать текст из шейпа немного тяжелее, но тоже без проблем.
А вот для того, чтобы программно разобраться, что с чем соединено, придется попотеть. Смотрите SDK или Help по темам Connects, FromSheet, ToSheet.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 07 июл 2015, 09:41 
Не в сети
Ветеран
Аватара пользователя

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

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Для новичка Вы выбрали достаточно сложную задачу...
Для начала скачайте SDK для своей версии Visio. Там много примеров.
Почитайте статьи на visio.artberg.ru. Например, вот эту http://visio.artberg.ru/biblio/st004.htm
Рисование шейпов выполняется методом Drop объекта Page. Это довольно легко.
Выбрать текст из шейпа немного тяжелее, но тоже без проблем.
А вот для того, чтобы программно разобраться, что с чем соединено, придется попотеть. Смотрите SDK или Help по темам Connects, FromSheet, ToSheet.


Благодарю за информацию.
В том и проблема, что примитивные операции - это легко, а вот с соединениями сложнее ))) нарисовать, снять информацию, обработать ее, вывести в другой - это все просто. Основная сложность - именно в том, чтобы заставить комп понять, что у стрелки есть начало, и что к нему прицеплено...


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 07 июл 2015, 09:56 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Когда разберетесь, будет легко.
Если на пальцах, то у каждого шейпа есть коллекция соединений (Connects, FromConnects).
У соединения есть свойства - какой шейп с каким соединяется (FromSheet, ToSheet).
А также свойства, какая часть (начало, конец и т.д.) шейпа участвует в этом соединении (FromPart, ToPart).


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 07 июл 2015, 10:18 
Не в сети
Ветеран
Аватара пользователя

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

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Когда разберетесь, будет легко.
Если на пальцах, то у каждого шейпа есть коллекция соединений (Connects, FromConnects).
У соединения есть свойства - какой шейп с каким соединяется (FromSheet, ToSheet).
А также свойства, какая часть (начало, конец и т.д.) шейпа участвует в этом соединении (FromPart, ToPart).


О, уже правильное направление. Хотя бы понятно, куда копать...Жаль, литературы именно под визио нет


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 07 июл 2015, 10:41 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Есть такая книга


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 07 июл 2015, 11:35 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
Хелп смотрите VBA Visio.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 07 июл 2015, 13:27 
Не в сети
Ветеран
Аватара пользователя

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

Добавить очки репутацииУменьшить очки репутации
Robink писал(а):
Хелп смотрите VBA Visio.

А хде его взять?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 07 июл 2015, 14:23 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
Гость писал(а):
Robink писал(а):
Хелп смотрите VBA Visio.

А хде его взять?

Открываете редактор VBA, справа сверху жмете Help.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 07 июл 2015, 15:51 
Не в сети
Ветеран
Аватара пользователя

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

Добавить очки репутацииУменьшить очки репутации
Robink писал(а):
Гость писал(а):
Robink писал(а):
Хелп смотрите VBA Visio.

А хде его взять?

Открываете редактор VBA, справа сверху жмете Help.

благодарю


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 07 июл 2015, 20:19 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 28 июн 2015, 22:23
Сообщений: 36
Использую Visio c: 2010
Уровнь квалификации: Программирование
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
А кто-то в вба визио вообще работает с классами?
Полистал форум, полезные ссылки . Безрезультатно.

Покажите код - пример для класса со своими эвентами. В свете вопроса топика, например для шэйпа с эвентом - изменение FromConnect


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 07 июл 2015, 21:18 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Важны классы или события?
Пример обработки события ConnectionsAdded ниже.
Код:
Dim WithEvents pg As Visio.Page
Public Sub StartRunMode()
    Set pg = ActivePage
End Sub

Private Sub Document_DocumentOpened(ByVal doc As IVDocument)
    Set pg = ActivePage
End Sub

Private Sub pg_ConnectionsAdded(ByVal Connects As IVConnects)
    Dim con As Visio.Shape
    Dim Sig As String
    Set con = Connects.Item(1).FromSheet
    If IsACB(con) Then con.Connects(1).ToSheet.Cells("Prop.Color") = 5
End Sub

Только здесь не шейп с эвентом, а страница с эвентом. Для отслеживания приконнекчивания это оказалось удобнее.
Это фрагмент вот отсюда :)


Вложения:
links.gif
links.gif [ 32.86 Кб | Просмотров: 1191 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 07 июл 2015, 22:19 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 28 июн 2015, 22:23
Сообщений: 36
Использую Visio c: 2010
Уровнь квалификации: Программирование
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Все гениальное просто!
А зачем Dim Sig As String ?
И как быть сразным поведением левого шэйпа при подключении верхней нижней линии. Когда верхняя присоединяется , цвет не меняется.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 07 июл 2015, 22:23 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Так это же я просто фрагмент выдрал...
Sig - попало случайно, недочистил.
IsACB(con) - тоже лишнее. Это хитрая функция, вычисляющая особенности поведения шейпов в данной конкретной задаче.
Так что, если все вычистить, будет еще проще :)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 07 июл 2015, 22:34 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 28 июн 2015, 22:23
Сообщений: 36
Использую Visio c: 2010
Уровнь квалификации: Программирование
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
A можно файлик с примером?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 07 июл 2015, 23:15 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Вот в этом топике
http://visguy.com/vgforum/index.php?topic=6319.0
помнится, Wapperdude аж несколько файлов выкладывал, последовательно совершенствуя приложение на тему сбора и раскраски соединенных шейпов.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 08 июл 2015, 19:12 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 28 июн 2015, 22:23
Сообщений: 36
Использую Visio c: 2010
Уровнь квалификации: Программирование
Очков репутации: 1

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 09 июл 2015, 09:39 
Не в сети
Ветеран
Аватара пользователя

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

Добавить очки репутацииУменьшить очки репутации
Всем поучаствовавшим - благодарю.
Одну нанопрожку написал - расчет центра масс.
Теперь вот по вышеприведенному примеру буду думать - стоит ли лезть в дебри приконнекчивания или ну его - ручками в экселе расчет делать...Жаль, нет нормальных доков )


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 09 июл 2015, 10:25 
Не в сети
Ветеран
Аватара пользователя

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

Добавить очки репутацииУменьшить очки репутации
Подумал. Решил пробовать дальше.
Может ли кто-то показать код, который мне нужен? (да, вот так, внаглую прошу :D )

Два прямоугольника и одна стрелка (не обязательно коннектор, а лучше совсем не коннектор). Наложил прямоугольник поверх нее - ну пусть msgbox вывалится, наложил второй прямоугольник на нее - другой бокс вывалился...)))


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Микропрограмма из трех объектов
СообщениеДобавлено: 09 июл 2015, 10:32 
Не в сети
Ветеран
Аватара пользователя

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

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

pg_ConnectionsAdded(ByVal Connects As IVConnects)

в списке событий ((


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

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



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

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


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

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