Author |
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 в нужную ячейку. |
|
|
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
|
|
|
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-ий последний вопрос: как сделать чтобы в сгруппированном шэйпе можно было бы выделять разные подщэйпы (для разных контекстных меню) но при этом запретить вытаскивать их из группы и запретить менять их размер? |
|
|
fortunado
13 Posts |
Posted - 11/22/2006 : 14:00:07
|
)))) допер... второй вопрос снимается.. 1-й и третий по прежнему волнуют )) Спасибо.
|
|
|
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 на все свойства в левой колонке.
|
|
|
fortunado
13 Posts |
Posted - 11/23/2006 : 09:14:39
|
Ага, точно.. работает Спасибо большое. |
|
|
|
Topic |
|
|
|