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

Форум по вопросам применения и программирования в Visio
Текущее время: 23 апр 2018, 15:33

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Перехват клика сишарпом
СообщениеДобавлено: 16 апр 2018, 10:46 
Не в сети
Ветеран
Аватара пользователя

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

Добавить очки репутацииУменьшить очки репутации
Привет.
Начал реализацию.
Сразу возникает вопрос - как перехватить даблоклик в вижуо внешней прогой? Чтобы открылся не вижуо-диалог, а например, кастомная форма...
Библиотека вижуо в проекте, лист вижуо открывается на форме через контрол.


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

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

Добавить очки репутацииУменьшить очки репутации
Даблклики не нужно перехватывать. Они просто программируются.
Вручную - через Format / Behavior / Double-Click
Или через ShapeSheet - ячейка EventDblClick.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Перехват клика сишарпом
СообщениеДобавлено: 16 апр 2018, 14:32 
Не в сети
Ветеран
Аватара пользователя

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

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Даблклики не нужно перехватывать. Они просто программируются.
Вручную - через Format / Behavior / Double-Click
Или через ShapeSheet - ячейка EventDblClick.


Я что-то опять криво написал - нужно перехватить клик по шейпу, но при этом должно открыться, ну пусть форма из сишарпа. А не VBAшная или вижевая форма.
Если писать чисто в самом вижуо, я понимаю, как запустить форму. Но если писать на шарпе, то тут вот не понял пока...На EventDblClick повесить-то нечего )))


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

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

Добавить очки репутацииУменьшить очки репутации
Плоды того, что "нормальные герои всегда идут в обход" :)
В таком случае напрашивается прописать в EventDblClick QUEUEMARKER и ловить MarkerEvent. Однако, от DrawingControl до него еще нужно добраться...
Можно попробовать вариант проще, но еще кривее :) Превратить DblClick в событие, на которое можно навесить обработчик. Например, CellChanged.
Прописать в DblClick =SETF(GetRef(Scratch.A1),GetRef(Scratch.A1)+1)
Где-то в начале стартовать Set pg = DrawingControl1.Document.Pages(1)
И использовать обработчик pg_CellChanged
Private Sub pg_CellChanged(ByVal Cell As Visio.IVCell)
MsgBox Cell.Formula
End Sub
DblClick будет дергать Scratch.A1, а это изменение будет отлавливаться в CellChanged


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

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

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Плоды того, что "нормальные герои всегда идут в обход" :)
В таком случае напрашивается прописать в EventDblClick QUEUEMARKER и ловить MarkerEvent. Однако, от DrawingControl до него еще нужно добраться...
Можно попробовать вариант проще, но еще кривее :) Превратить DblClick в событие, на которое можно навесить обработчик. Например, CellChanged.
Прописать в DblClick =SETF(GetRef(Scratch.A1),GetRef(Scratch.A1)+1)
Где-то в начале стартовать Set pg = DrawingControl1.Document.Pages(1)
И использовать обработчик pg_CellChanged
Private Sub pg_CellChanged(ByVal Cell As Visio.IVCell)
MsgBox Cell.Formula
End Sub
DblClick будет дергать Scratch.A1, а это изменение будет отлавливаться в CellChanged


Ёперный театр ))))
Но да, идея с изменением ячейки и отлов через экземпляр листа - отличное решение! благодарю...


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

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

Добавить очки репутацииУменьшить очки репутации
Ну да, QUEUEMARKEREVENT тоже нормально работает.
Естественно, это более чистое решение.
В VB6 это выглядит вот так
Код:
Dim WithEvents vApp As Visio.Application

Private Sub Form_Load()
    DrawingControl1.Src = "G:\!w\Ýêñï\Visio\DrawContrPopUp_AddAdvise_Marker\d1.vsd"
    Set vApp = DrawingControl1.Document.Application
End Sub
Private Sub Form_Unload(Cancel As Integer)
    Set vApp = Nothing
End Sub

Private Sub vApp_MarkerEvent(ByVal app As Visio.IVApplication, ByVal SequenceNum As Long, ByVal ContextString As String)
    MsgBox "DoubleClick from Sheet." & ContextString
End Sub

Нужные шейпы заряжаются функцией QUEUEMARKEREVENT и в качестве параметра передают, например, свой ID.


Вложения:
marker.jpg
marker.jpg [ 9.43 Кб | Просмотров: 13 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

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



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

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


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

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