All Forums
 Категория Visio
 Форум Вопросы и ответы
 Программный дабл клик
Author Previous Topic Topic Next Topic  

Gane

16 Posts

Posted - 07/10/2009 :  21:41:01
Здравствуйте!
Можно ли программно сымитировать двойное нажатие мыши по шейпу? Или же выбор вкладки контекстного меню?
Спасибо!

bdfy

Belarus
267 Posts

Posted - 07/10/2009 :  22:25:54
можно поинтересоватся с какой целью ? чтобы вызвать действие которое по дблклику вызывается ? так его можно посмотреть в свойствах шейплиста.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 07/11/2009 :  06:44:16
Да, тут надо уточнять...
В каких-то случаях может Win API помочь.
Если шейпы специальные, то можно попытаться задействовать какое-нибудь перенаправление, типа
=EVALCELL(EventDblClick)+DEPENDSON(Prop.Row_1)
А прямого способа выполнить из VBA произвольную формулу, записанную в ячейке (типа EVALCELL), вроде нет. EVALCELL работает из шейп-листа.
Go to Top of Page

Gane

16 Posts

Posted - 07/11/2009 :  09:52:59
Да, мне нужно выполнить действие, которое осуществляется при выборе вкладки контекстного меню (или же дабл клике). Собственно, этот вопрос уже поднимался мной на форуме в теме "Составное состояние", просто сейчас решила попробовать подойти с другой стороны.
Мне все также надо перейти на страницу, связанную с составным состоянием. В теме "Составное состояние" мне посоветовали:
quote:
Например, переход на раскрывающуюся страницу идет через ячейку Actions.Row_1. Там записана формула =RUNADDONWARGS("UML Background Add-on","/CMD=1007")
Так что, если программно обратиться к тому же самому аддону с аналогичными параметрами, мы скорее всего попадем на нужный лист (он станет активным)

Но когда у меня на странице более одного составного состояния, то содержание их Actions.Row_1 в точности совпадает. Поэтому возникает вопрос, либо как привязать выполнение аддона к шейпу, либо как выполнить нечто по его контекстному меню...
Спасибо еще раз за ответы.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 07/11/2009 :  10:11:28
Скорее всего надо просто перед обращением к аддону селектировать нужный шейп.
Вызвать известный аддон будет гораздо проще, чем имитировать двойной клик.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 07/11/2009 :  10:24:33
Попробуйте что-нибудь в таком духе
Sub ttt()
Dim sh As Visio.Shape
Set sh = ActivePage.Shapes(1)
ActiveWindow.Selection.DeselectAll
ActiveWindow.Select sh, visSelect
Application.Addons("UML Background Add-on").Run ("/CMD=1007")
End Sub
Go to Top of Page

Gane

16 Posts

Posted - 07/11/2009 :  10:40:00
Спасибо огромное! Работает :)
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)