Button properties

Практические советы по работе с FileMaker, типичные задачи и их решения. У вас вопрос? Пишите сюда.
Alexei Sytch
Сообщения: 106
Зарегистрирован: 21 сен 2017, 18:48
Откуда: Минск

Re: Button properties

Сообщение Alexei Sytch » 24 фев 2018, 15:38

я для себя (возможно извращенно :) )эту логику понимаю так -- "?" - ошибка -- в Filemaker это обычный текстовый результат (Который показывается в неподходящем формате (так как там где-то еще код ошибки)

А дальше, когда этот результат подставляется логическое выражение идет автоматическое преобразование
полученного результата в Boolean как если бы запускалась функция GetAsBoolean с полученным результатом

так как по определению GetAsBoolean для текста с числом(код ошибки) возвращает 1 то логическое выражение от оценки неправильной формулы получается равным 1. Повторюсь, это моя извращенная интерпретация

Если в логическом выражении добавить обертку из функции EvaluationError( ), например EvaluationError( Evaluate(expression) ) - тогда будет интуитивно понятно возвращать 0 если ошибок нет

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

Re: Button properties

Сообщение andrey volkov » 25 фев 2018, 06:09

Код: Выделить всё

GetAsBoolean("aaa") = 0
любой текст без цифр тоже является логически Ложью
и даже знак вопроса в сочетании с символами алфавита тоже является логически Ложью
просто знак вопроса "?" равно Истина
похоже, знак вопроса - какой-то особый символ со своими правилами.
Если в логическом выражении добавить обертку из функции EvaluationError( ), например EvaluationError( Evaluate(expression) ) - тогда будет интуитивно понятно возвращать 0 если ошибок нет
что-то я забыл об этой функции, а она в данном случае полезна весьма. Различает ситуации, когда вычисление невозможно, потому что отсутствует реляция к полю. Либо вычисление невозможно, потому что имя таблицы или поля в выражении передано неправильно, то есть такие объекты отсутствуют.

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

Re: Button properties

Сообщение andrey volkov » 25 фев 2018, 09:12

возникла неожиданная догадка :)
в одном числовом поле у меня проставлен знак вопроса. Типа сумма не известна, нужно уточнить. Хорошо, что скрипт воспринял "?" как положительное число. А то запись была бы удалена. Знак вопроса - это как бы "на этом месте должно быть число, но пока не известно какое"
Если такое поле участвует в калькуляции, то любое сочетание с другим валидным числом тоже дает знак вопроса, то есть сразу видно, что в формуле что-то не то подсунуто. Поиском знак вопроса элементарно находится...
Удобно.
Нет, не так. Это чертовски удобно

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

Re: Button properties

Сообщение Alexei Sytch » 25 фев 2018, 10:48

andrey volkov писал(а):
25 фев 2018, 06:09
просто знак вопроса "?" равно Истина
похоже, знак вопроса - какой-то особый символ со своими правилами.
действительно -- ЭТО ОЧЕНЬ (!!!) интересно подмечено что

Код: Выделить всё

GetAsBoolean("?") = 1
If( "?" ; "Истина" ; "Ложь")  -- вернет "Истина"
Case( "?" ; "Истина"; "Ложь") -- вернет "Истина"
и в тоже время

Код: Выделить всё

Choose (  "?" ; "result0"; "result1") --- вернет "?"
Т.е. есть небольшая нестыковка в обсчете "?" в логических функциях.

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

Re: Button properties

Сообщение andrey volkov » 25 фев 2018, 11:14

Прикольно ведет себя Sum("?"; 2) и ("?" + 2)

короче, нужно быть ОЧЕНЬ осторожными

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

Re: Button properties

Сообщение andrey volkov » 26 фев 2018, 13:44

А собственно зачем это нужно конкретно?
в общем, столкнулся я снова с этим кейсом. Он занимательный
Дано: есть кнопка, она может быть расположена рядом с полем-контейнером. Может быть более одной кнопки на макете, расположение произвольное
Есть макет, который при нажатии кнопки должен открываться рядом с ней в режиме Card. Что-то типа имитации контекстного меню.
Задача: кард должен открыться рядом с кнопкой. Если скрипт знает имя кнопки, то он может вычислить и ее положение и рассчитать координаты нового окна. Вопрос в том, как скрипт узнает имя кнопки. Получается, что кроме как передать имя кнопки в параметр, ничего сделать нельзя.
А хотелось бы

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

Re: Button properties

Сообщение Arcady » 26 фев 2018, 14:33

ну что у вас кнопок миллион? почему через параметр так не кошерно?
Аркадий Перла.
ТриА. Разработка решений для FileMaker
http://tria.pw

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

Re: Button properties

Сообщение andrey volkov » 26 фев 2018, 15:20

почему через параметр так не кошерно
да нет проблем передать в скрипт два параметра.
просто заинтересовался этим моментом. Либо что-то есть такое, либо ничего такого нет :)

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

Re: Button properties

Сообщение andrey volkov » 27 фев 2018, 03:13

Аркадий, вы как всегда заставляете напрягать мозг и думать в правильном направлении.
Конечно же в данном случае нужно именовать не кнопку, а поле-контейнер, и только его имя передавать в параметре.
Спасибо за пинок

Ответить