All Forums
 Категория Visio
 Форум Вопросы и ответы
 Создание Actions / RUNADDON
Author Previous Topic Topic Next Topic  

fortunado

13 Posts

Posted - 11/21/2006 :  15:51:36
Добрый день, есть следующая проблема.
Сделал у группы action "срочно", соответственно по клику на пункте меня этого экшна шейп должен стать красным. Код экшна следующий:

=RUNADDON("Set shp = Application.ActiveWindow.Selection(1): shp.CellsSRC(visSectionObject, visRowFill, visFillForegnd).FormulaU = ""RGB(213,198,236)"": For i = 1 To shp.Shapes.Count: shp.Shapes(i).CellsSRC(visSectionObject, visRowFill, visFillForegnd).FormulaU = ""RGB(213,198,236)"": Next i")

в данном случае цвета любые, как заставлю это работать вынесу их куда нить в User Cells? причем этот код в теле макроса работает. а здесь не делает ничего. Больше того, даже пример из мсдн тоже не работает типа:
=RUNADDON(“MsgBox ““I’ve been clicked!”““)

Отюда вопросы:
1. есть ли какие нибудь условия для того чтобы экшны работали
2. какие кавычки ставить для значения цвета (пример из мсдн получен копипастом - там кавычки другие, но на мой код визио вроде не ругается)
3. )))) Что не так?

Спасибо

Tumanov

Russia
1198 Posts

Posted - 11/21/2006 :  18:52:19
Последний раз выкрутасы типа "=RUNADDON("Set shp =..." работали, если не ошибаюсь, в Visio 2000. Тогда можно было в ячейке ShapeSheet писать код на VBA. Потом наступила безопасность и эту возможность прикрыли. Теперь можно только вызвать готовый макрос или Add-On. То есть нужно открыть VBA, создать макрос с каким-либо именем. А потом из ячейки ShapeSheet вызвать его примерно как =RUNADDON("ThisDocument.ttt").
Чтобы проще было разбираться с кавычками, заставьте Visio вставить обращение к макросу через Format / Behavior / Double-Click / Run Macro и выберите его из списка. А потом скопируйте обращение из ячейки EvntDblClick в нужную ячейку.
Go to Top of Page

fortunado

13 Posts

Posted - 11/22/2006 :  13:45:27
Хм...вот засада... спасибо за информацию.. не знал...
возникает вопросы следствия:
1. пример из шэйпа Software->Common Controls->Button:
IF(Width<User.TextWidth,SETF(GetRef(Width),User.TextWidth),1)
а как можно сделать несколько условий - типа если это то это иначе если так то этак и т.п.?
2. Из того же шэйпа button выяснил как они меняют enabled на disabled
Go to Top of Page

fortunado

13 Posts

Posted - 11/22/2006 :  13:51:08
сорри, нечаяно нажал пост.. ))
продолжаю вопрос - в этом шэйпе - чтобы фон реагировал на изменение состояния - они наследуют точнее делают в шэйпе фона user cell с таким же названием как и в родительском шэйпе, задают его значение через значение в родительском например так: Sheet.9!User.Status а потом в Fill Format -> FillForegnd делают такую вещь:
GUARD(IF(User.Status=1,RGB(245,244,234),1))
почему они не сделали этого напрямую, так:
GUARD(IF(Sheet.9!User.Status=1,RGB(245,244,234),1)) ?

и 3-ий последний вопрос: как сделать чтобы в сгруппированном шэйпе можно
было бы выделять разные подщэйпы (для разных контекстных меню) но при этом запретить вытаскивать их из группы и запретить менять их размер?
Go to Top of Page

fortunado

13 Posts

Posted - 11/22/2006 :  14:00:07
)))) допер...
второй вопрос снимается.. 1-й и третий по прежнему волнуют ))
Спасибо.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 11/22/2006 :  19:32:42
Одно условие
IF(First=1,
	1,
	2)
Два условия
IF(First=1,
	IF(SECOND=2,
		3,
		4),
	IF(SECOND=2,
		5,
		6))
и по такому же принципу - до посинения.
(Структурирование показано только для понятности)
-----------------
Для выделения членов группы нужно в Format / Behavior / Selection для группы установить Members First.
Чтобы запретить вытаскивать нужно у членов группы запретить перемещение. Можно вообще установить Protection на все свойства в левой колонке.
Go to Top of Page

fortunado

13 Posts

Posted - 11/23/2006 :  09:14:39
Ага, точно.. работает
Спасибо большое.
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)