Author |
Topic |
|
Gane
16 Posts |
Posted - 07/10/2009 : 21:41:01
|
Здравствуйте! Можно ли программно сымитировать двойное нажатие мыши по шейпу? Или же выбор вкладки контекстного меню? Спасибо! |
|
bdfy
Belarus
267 Posts |
Posted - 07/10/2009 : 22:25:54
|
можно поинтересоватся с какой целью ? чтобы вызвать действие которое по дблклику вызывается ? так его можно посмотреть в свойствах шейплиста. |
|
|
Tumanov
Russia
1198 Posts |
Posted - 07/11/2009 : 06:44:16
|
Да, тут надо уточнять... В каких-то случаях может Win API помочь. Если шейпы специальные, то можно попытаться задействовать какое-нибудь перенаправление, типа =EVALCELL(EventDblClick)+DEPENDSON(Prop.Row_1) А прямого способа выполнить из VBA произвольную формулу, записанную в ячейке (типа EVALCELL), вроде нет. EVALCELL работает из шейп-листа.
|
|
|
Gane
16 Posts |
Posted - 07/11/2009 : 09:52:59
|
Да, мне нужно выполнить действие, которое осуществляется при выборе вкладки контекстного меню (или же дабл клике). Собственно, этот вопрос уже поднимался мной на форуме в теме "Составное состояние", просто сейчас решила попробовать подойти с другой стороны. Мне все также надо перейти на страницу, связанную с составным состоянием. В теме "Составное состояние" мне посоветовали:
quote: Например, переход на раскрывающуюся страницу идет через ячейку Actions.Row_1. Там записана формула =RUNADDONWARGS("UML Background Add-on","/CMD=1007") Так что, если программно обратиться к тому же самому аддону с аналогичными параметрами, мы скорее всего попадем на нужный лист (он станет активным)
Но когда у меня на странице более одного составного состояния, то содержание их Actions.Row_1 в точности совпадает. Поэтому возникает вопрос, либо как привязать выполнение аддона к шейпу, либо как выполнить нечто по его контекстному меню... Спасибо еще раз за ответы. |
|
|
Tumanov
Russia
1198 Posts |
Posted - 07/11/2009 : 10:11:28
|
Скорее всего надо просто перед обращением к аддону селектировать нужный шейп. Вызвать известный аддон будет гораздо проще, чем имитировать двойной клик. |
|
|
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 |
|
|
Gane
16 Posts |
Posted - 07/11/2009 : 10:40:00
|
Спасибо огромное! Работает :) |
|
|
|
Topic |
|