|
Вопрос # 1 214/ вопрос открыт / |
|
Здравствуйте, эксперты!
Есть DBGridEh. В ней есть поле pol с типом boolean. При соединении с базой поле принимает значение true или false. Как сделать, что бы вместо true и false отображался другой текст (например, вместо true - муж, а вместо false - жен). Помогите пожалуйста
 |
Вопрос задал: volonter (статус: Посетитель)
Вопрос отправлен: 20 декабря 2007, 00:42
Состояние вопроса: открыт, ответов: 3.
|
Ответ #1. Отвечает эксперт: Dron
Здравствуйте, volonter!
Подобные задачи обычно решают с помощью вычисляемых полей. Обычно это делается так: в запрос (TQuery) добавляется новое поле (ПКМ - Fields Editor - New field). Там вводится название нового фиктивного поля, а в блоке Field Type выбирается Calculated. Тип данных для поля - в вашем случае подойдёт String. Теперь, когда поле создано, нужно запрограммировать его вычисление. Сделать это следует в событии OnCalcFields этого же TQuery. Вписать следует примерно следующее:
if my_table.FieldByName('Pol').AsBoolean then
new_field_name.AsString:='муж.'
else
new_field_name.AsString:='жен.';
Таблицу и имя нового фиктивного поля, конечно же, подставьте свои.
Не забудьте отредактировать колонки DBGrid и вместо старого поля выставить новое фиктивное. Только тогда желаемый результат будет достигнут.
P.S. Не забывайте, что вычисляемые поля нельзя редактировать, ведь негде сохранять изменения...
Удачи!
 |
Ответ отправил: Dron (статус: Студент)
Время отправки: 20 декабря 2007, 08:33
Оценка за ответ: 5
|
Ответ #2. Отвечает эксперт: Косолапов Дмитрий Юрьевич
Здравствуйте, volonter!
Можно воспользоваться lookup полем. Создайте дополнительную таблицу соответствия булевских значений полу (Pol, View) , и, опять таки, через Field Editor создайте lookup поле по ключу Pol, а результат - View, тип String. Тогда и редактировать можно будет.
Ответ #3. Отвечает эксперт: Вадим К
Здравствуйте, volonter!
Можно использовать вычисляемые поля, можно дополнительные таблицы юзать. Но завтра к примеру вы захотите рисовать там фигурку мальчик/девочка. Для решения этой проблемы можно использовать ручную прорисовку. Нет, не думайте, что все поля прийдётся самому рисовать, вам прийдётся рисовать только то, что вы считаете нужным:)
по этому адресу http://codegearguru.com/video/024/OnDrawColumnCell.html находиться чудное видео, где показано, как реализовать подобное (правда там используют стандартную базу с рыбками и выводят разные надписи в зависимости от длины. Даже если с английским очень туго, то просто повторите то, что вы видите на видео. Там очень доходчиво.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 20 декабря 2007, 10:53
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 21 декабря 2007, 18:13; участников в обсуждении: 2.
|
volonter (статус: Посетитель), 21 декабря 2007, 13:06 [#1]:
Всем большое спасибо, я как то сам решил эту проблемму. Спасибо за предложенные варианты
Вопрос считаю закрытым
|
|
Dron (статус: Студент), 21 декабря 2007, 18:13 [#2]:
Косолапов Дмитрий Юрьевич: создавать отдельную таблицу ради двух значений, соответствующих True и False? Не слишком ли это... (даже не знаю, как лучше назвать)? Нет, вариант, конечно, но делать так - по-моему просто идиотизм
С уважением.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|