2012-02-23 2 views
0

У меня есть simpleObject сценарий плагин, где я определить блок параметров и связанную с ним свитку:MAXScript: Как доступ к элементам управления пользовательского интерфейса, которые определены позже внутри других групп в свитке (скриптовые плагин)

rollout mainParamsRollout "Main Properties" 
(
    group "Group1" 
    (
     dropdownlist ddl1 "ddl1" items:#("A", "B") height:4 
     on ddl1 selected i do 
     (
      ddl2.enabled = false  
     ) 
    ) 

    group "Group2" 
    (
     dropdownlist ddl2 "ddl2" items:#("C", "D") height:4 
    ) 
) 

Когда я пытаюсь сделать ddl2 отключенным после определенного выбора на ddl1, maxscript выдает исключение, говоря, что ddl2 не определено.

Я знаю, что можно получить доступ к ddl2 хотя mainParamsRollout.controls [5], но мне интересно, есть ли лучший способ. Я попытался определения локальной переменной в верхней части сценария плагин как:

local ddl2 

, чтобы сделать его доступным в любом месте, но это, кажется, не работает. Есть идеи? Благодаря

ответ

1

ddl2 должен быть объявлен перед вызовом его в обработчик события ddl1 «s. Вы можете заказать свой код, например:

rollout mainParamsRollout "Main Properties" 
(
    group "Group1" 
    (
     dropdownlist ddl1 "ddl1" items:#("A", "B") height:4 
    ) 

    group "Group2" 
    (
     dropdownlist ddl2 "ddl2" items:#("C", "D") height:4 
    ) 

    on ddl1 selected i do 
    (
     ddl2.enabled = false  
    ) 
) 
+0

Это сделало трюк! – younesouhbi

0

Или просто добавить откачку до контроля, как

mainParamsRollout.ddl.enabled = false 

Тогда это не имеет значения, где вы называете контроль.

-Johan