Дано: есть баттонбар. В нем две кнопки. По умолчанию активна правая. Я нажимаю левую. Она становится активной
Найти: нужно скриптом (нажатием на отдельную кнопку) снять активность левой кнопки и вернуть активное состояние правой кнопке (состояние по умолчанию)
что-то пока ничего не получается
Вернуть button_bar к состоянию по умолчанию
-
- Сообщения: 338
- Зарегистрирован: 11 сен 2017, 13:42
- Откуда: Санкт-Петербург
-
- Сообщения: 106
- Зарегистрирован: 21 сен 2017, 18:48
- Откуда: Минск
Re: Вернуть button_bar к состоянию по умолчанию
Андрей, доброго дня!
Там такая неинтуитивная вещь с этими баттонбарами, что надо сначала присвоить свои имена каждому сегменту и всей панели инструментов. (путаница из-за того, что значения по умолчанию вроде <Segment 1>, <Segment 2> не подходят для ссылок в через переменную в скрипте- все равно надо самому назвать сегменты и всю панель)
Например, (например, для сегментов это может быть "One", "Two" и для всей панели инструментов "ButtonBar").
Тогда в настройках Button Bar Setup можно указать переменную для активного сегмента, например, $$ActiveSegment
и уже в эту переменную через скрипт подавать названия сегмента, который нужно сделать активным.
Set Variable[ $$ActiveSegment; Value: "Two"],
И после это обновить состояние панели на макете
Refresh Object( Object name:"ButtonBar")
Проверил, работает
Там такая неинтуитивная вещь с этими баттонбарами, что надо сначала присвоить свои имена каждому сегменту и всей панели инструментов. (путаница из-за того, что значения по умолчанию вроде <Segment 1>, <Segment 2> не подходят для ссылок в через переменную в скрипте- все равно надо самому назвать сегменты и всю панель)
Например, (например, для сегментов это может быть "One", "Two" и для всей панели инструментов "ButtonBar").
Тогда в настройках Button Bar Setup можно указать переменную для активного сегмента, например, $$ActiveSegment
и уже в эту переменную через скрипт подавать названия сегмента, который нужно сделать активным.
Set Variable[ $$ActiveSegment; Value: "Two"],
И после это обновить состояние панели на макете
Refresh Object( Object name:"ButtonBar")
Проверил, работает
-
- Сообщения: 338
- Зарегистрирован: 11 сен 2017, 13:42
- Откуда: Санкт-Петербург
Re: Вернуть button_bar к состоянию по умолчанию
Алексей, добрый день. спасибо
а без глобальных переменных никак?
смысл был именно в том, чтобы выставлять нужный флаг без скриптов и переменных, обходясь исключительно состоянием кнопки. то есть я вижу, какой пользователь выбор сделал
но потом понадобилась команда, позволяющая сбросить состояние баттонбара до дефолтного. я уж пробовал разное, и даже переход в Find Mode , но не сбрасывается, зараза
а без глобальных переменных никак?
смысл был именно в том, чтобы выставлять нужный флаг без скриптов и переменных, обходясь исключительно состоянием кнопки. то есть я вижу, какой пользователь выбор сделал
но потом понадобилась команда, позволяющая сбросить состояние баттонбара до дефолтного. я уж пробовал разное, и даже переход в Find Mode , но не сбрасывается, зараза
Re: Вернуть button_bar к состоянию по умолчанию
Активность кнопки определяется условием (аналогично тому как это работает в Conditional) так что просто придумайте такое условие, чтобы активной была так кнопка какая нужно (от глобальной переменной, или от видимости таба или слайда, или еще от чего)
-
- Сообщения: 106
- Зарегистрирован: 21 сен 2017, 18:48
- Откуда: Минск
Re: Вернуть button_bar к состоянию по умолчанию
Андрей, неочевидное наблюдение, если в настройках баттон бара явно задать (выбрать из выпадающего списка) Active Segment панель "Two", то после клика на левой панели ("One") обновление объекта на макете с помощью команды Refresh Object( Object name:"ButtonBar") сброса состояния не происходит: активной остается сегмент, по которому кликнули последним ("One"),
Однако, если в настройках баттон бара название правого сегмента указать через вычисление в Specify... - текст "Two" то Refresh Object для баттон бара ведет себя так как и ожидается: происходит сброс состояния: при активном левом сегменте активным становится правый ("Two").
Однако, если в настройках баттон бара название правого сегмента указать через вычисление в Specify... - текст "Two" то Refresh Object для баттон бара ведет себя так как и ожидается: происходит сброс состояния: при активном левом сегменте активным становится правый ("Two").
в развитие этой темы: можно связать активное состояние панели с содержимым поля, например, If( IsEmpty( TestField ); "Two"; "One" ) в зависимости от которого будет меняться состояние панели (без скриптов и переменных)