Вернуть button_bar к состоянию по умолчанию

Практические советы по работе с FileMaker, типичные задачи и их решения. У вас вопрос? Пишите сюда.
Ответить
andrey volkov
Сообщения: 338
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Вернуть button_bar к состоянию по умолчанию

Сообщение andrey volkov » 05 июл 2020, 16:24

Дано: есть баттонбар. В нем две кнопки. По умолчанию активна правая. Я нажимаю левую. Она становится активной
Найти: нужно скриптом (нажатием на отдельную кнопку) снять активность левой кнопки и вернуть активное состояние правой кнопке (состояние по умолчанию)

что-то пока ничего не получается

Alexei Sytch
Сообщения: 106
Зарегистрирован: 21 сен 2017, 18:48
Откуда: Минск

Re: Вернуть button_bar к состоянию по умолчанию

Сообщение Alexei Sytch » 06 июл 2020, 10:45

Андрей, доброго дня!
Там такая неинтуитивная вещь с этими баттонбарами, что надо сначала присвоить свои имена каждому сегменту и всей панели инструментов. (путаница из-за того, что значения по умолчанию вроде <Segment 1>, <Segment 2> не подходят для ссылок в через переменную в скрипте- все равно надо самому назвать сегменты и всю панель)

Например, (например, для сегментов это может быть "One", "Two" и для всей панели инструментов "ButtonBar").
Тогда в настройках Button Bar Setup можно указать переменную для активного сегмента, например, $$ActiveSegment
и уже в эту переменную через скрипт подавать названия сегмента, который нужно сделать активным.
Set Variable[ $$ActiveSegment; Value: "Two"],

И после это обновить состояние панели на макете
Refresh Object( Object name:"ButtonBar")

Проверил, работает

andrey volkov
Сообщения: 338
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Re: Вернуть button_bar к состоянию по умолчанию

Сообщение andrey volkov » 07 июл 2020, 03:59

Алексей, добрый день. спасибо
а без глобальных переменных никак?
смысл был именно в том, чтобы выставлять нужный флаг без скриптов и переменных, обходясь исключительно состоянием кнопки. то есть я вижу, какой пользователь выбор сделал
но потом понадобилась команда, позволяющая сбросить состояние баттонбара до дефолтного. я уж пробовал разное, и даже переход в Find Mode , но не сбрасывается, зараза

Аватара пользователя
Arcady
Администратор
Сообщения: 201
Зарегистрирован: 10 сен 2017, 20:45
Контактная информация:

Re: Вернуть button_bar к состоянию по умолчанию

Сообщение Arcady » 07 июл 2020, 16:50

Активность кнопки определяется условием (аналогично тому как это работает в Conditional) так что просто придумайте такое условие, чтобы активной была так кнопка какая нужно (от глобальной переменной, или от видимости таба или слайда, или еще от чего)
Аркадий Перла.
ТриА. Разработка решений для FileMaker
http://tria.pw

Alexei Sytch
Сообщения: 106
Зарегистрирован: 21 сен 2017, 18:48
Откуда: Минск

Re: Вернуть button_bar к состоянию по умолчанию

Сообщение Alexei Sytch » 08 июл 2020, 08:08

Андрей, неочевидное наблюдение, если в настройках баттон бара явно задать (выбрать из выпадающего списка) Active Segment панель "Two", то после клика на левой панели ("One") обновление объекта на макете с помощью команды Refresh Object( Object name:"ButtonBar") сброса состояния не происходит: активной остается сегмент, по которому кликнули последним ("One"),
Однако, если в настройках баттон бара название правого сегмента указать через вычисление в Specify... - текст "Two" то Refresh Object для баттон бара ведет себя так как и ожидается: происходит сброс состояния: при активном левом сегменте активным становится правый ("Two").
Arcady писал(а):
07 июл 2020, 16:50
придумайте такое условие, чтобы активной была так кнопка какая нужно
в развитие этой темы: можно связать активное состояние панели с содержимым поля, например, If( IsEmpty( TestField ); "Two"; "One" ) в зависимости от которого будет меняться состояние панели (без скриптов и переменных)

Ответить