Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 214

/ вопрос открыт /

Здравствуйте, эксперты!
Есть DBGridEh. В ней есть поле pol с типом boolean. При соединении с базой поле принимает значение true или false. Как сделать, что бы вместо true и false отображался другой текст (например, вместо true - муж, а вместо false - жен). Помогите пожалуйста

volonter Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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. Тогда и редактировать можно будет.

Ответ отправил: Косолапов Дмитрий Юрьевич (статус: 8-ой класс)
Время отправки: 20 декабря 2007, 09:59

Ответ #3. Отвечает эксперт: Вадим К

Здравствуйте, volonter!
Можно использовать вычисляемые поля, можно дополнительные таблицы юзать. Но завтра к примеру вы захотите рисовать там фигурку мальчик/девочка. Для решения этой проблемы можно использовать ручную прорисовку. Нет, не думайте, что все поля прийдётся самому рисовать, вам прийдётся рисовать только то, что вы считаете нужным:)
по этому адресу http://codegearguru.com/video/024/OnDrawColumnCell.html находиться чудное видео, где показано, как реализовать подобное (правда там используют стандартную базу с рыбками и выводят разные надписи в зависимости от длины. Даже если с английским очень туго, то просто повторите то, что вы видите на видео. Там очень доходчиво.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 20 декабря 2007, 10:53


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 21 декабря 2007, 18:13; участников в обсуждении: 2.
volonter

volonter (статус: Посетитель), 21 декабря 2007, 13:06 [#1]:

Всем большое спасибо, я как то сам решил эту проблемму. Спасибо за предложенные варианты
Вопрос считаю закрытым
Dron

Dron (статус: Студент), 21 декабря 2007, 18:13 [#2]:

Косолапов Дмитрий Юрьевич: создавать отдельную таблицу ради двух значений, соответствующих True и False? Не слишком ли это... (даже не знаю, как лучше назвать)? Нет, вариант, конечно, но делать так - по-моему просто идиотизм :-)
С уважением.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 21 октября 2017, 20:19
Выполнено за 0.03 сек.
Рейтинг@Mail.ru