Настраиваемый формат FMX LiveBindings IfThen с тремя или более результатами

#database #delphi #firemonkey #firedac #livebindings

#База данных #delphi #firemonkey #firedac #привязки

Вопрос:

У меня есть FDTable с целочисленным столбцом, который для пользователя должен отображаться как набор разных строк в сетке. Пример: 0 как ‘Null’, 1 как ‘Open’, 2 как ‘Closed’. И т.д.

Для простого столбца только с двумя возможностями я уже установил для свойства CustomFormat столбца значение IfThen(%s = "0", 'No', 'Yes') . Это работает хорошо, но когда я попытался сделать то же самое для указанного столбца раньше и установить для него CustomFormat IfThen(%s = "0", 'Null', IfThen(%s = "1", 'Open', 'Closed')) , он вообще не работает (FDTable выдает неназванное исключение при активации). Как мне выполнить то, что я объяснил?

Комментарии:

1. Похоже, в вашем вопросе есть некоторые опечатки (например, кавычки без привязки). Пожалуйста, отредактируйте свой вопрос, чтобы исправить это. Кроме того, «вообще не работает» — это не четкое описание. Вы имеете в виду отсутствие ошибок и никакого эффекта, так как вы ничего не сделали? Пожалуйста, уточните, отредактировав свой вопрос.

2. Это не отвечает на ваш вопрос, но частый способ решения такого рода проблем — иметь таблицу с переводом (два столбца, одно целое число и одна строка), и ваш SQL-запрос выполняет работу по переводу с использованием join .

3. @fpiette Я отредактировал свой вопрос, чтобы быть более конкретным. Если бы я мог задать краткий вопрос, это было бы «Как я могу использовать свойство CustomFormat для форматирования набора из 3 целых чисел в 3 строки так же, как вы можете использовать IfThen для форматирования набора из 2 целых чисел в 2 строки».

4. Другой часто используемый метод — добавить вычисляемое поле в таблицу, заполнить его описанием в обработчике события OnCalcFields, а затем привязать его к сетке (или другому элементу управления).