Существует много способов реализации индикатора прогресса, так называемого Progress Bar, в FileMaker. Кто-то использует плагины, кто-то реализует прогресс-бар средствами HTML/JavaScript и отображения с помощью web viewer-а, кто-то использует один из самых старых, но по прежнему эффективных способов через repetitions-поля.
В недавно опубликованной статье в блоге Soliant Consulting разработчики описывают способ реализации Progress Bar через появившийся в 14-й версии FileMaker новый инструмент — Button Bar.
Техника практически полностью идентична «репетишен-способу», только вместо repetitions-полей используется Button Bar. Профессионалам FileMaker дальше, как говорится, можно не читать — идея лежит на поверхности. Для остальных кратко опишем применяемую методику.
Созданный Button Bar должен состоять из количества кнопок (сегментов), равного количеству стадий отображения.
В зависимости от текущей стадии, используя условное форматирование (Conditional Formating), каждый сегмент закрашивается соответствующим цветом.
В пример который использует Soliant Consulting, автор показывает пример с отображением прогресса проекта, состоящего из пять этапов. При этом используется еще одна возможность Button Bar — подпись кнопки реализована как калькуляция. Это позволяет отображать текущую стадию проекта на прогресс баре, и «двигать» ее по мере выполнения.
Использование функции Char ( “10095” ) прямо в тексте калькуляции — еще одна маленькая «фишка» позволяющая отобразить стрелку в подписи, «не заморачиваясь» с условным форматированием иконки кнопки.
Демо-файл можно скачать по ссылке.
Описанный способ хорошая замена «репетишен-способу». Важным свойством прогресс-бара может быть интерактивность — возможность нажать на определенный сегмент, то есть использовать сегмент по прямому назначению как кнопку. В «репетишен-способе» мы не могли сделать поле кнопкой, так в этом случае пропадала «сегментированность» реакции, поэтому обычно использовался тригер на вход в поле, который определял номер активной репетиции. Это отлично работало, но визуально для пользователя выглядело ни как нажатие, а как вход в поле, при этом мы также не могли изменить курсор мыши на «палец». С использованием Button Bar у нас таких проблем нет.
Напомним также, что Button Bar, как и repetitions-поля обладает свойством равномерного изменения размера всех сегментов при изменении размера окна. Это очень важное свойство, которое позволяет делать поведение элементов более понятным пользователю.