Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Calculated Field наоборот  (Прочитано 7426 раз)
0 Пользователей и 1 Гость смотрят эту тему.
DanZer
Гость
« : 19-08-2005 03:27 » 

В DBGrid есть возможность отображать не то, что на самом деле хранится в базе - Calculated fields, lookup fields... А как быть в тех случаях, когда нужно вводить "не то" значение? Т.е., к примеру, пользователь вводит Да/Нет, а в dbf-ку пишется логическое True/False или 0/1 - в общем, что-нибудь покомпактнее. Через lookup, имхо, расточительно - придется заводить отдельную таблицу и связанные с ней DataSource и DataSet... Есть ли более изящный способ?
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #1 : 22-08-2005 09:20 » 

пример из рабо4его проекта:

Код:
const
  caPersonStatus: array [0..1] of string = (
    'Сотрудник',
    'Посетитель'
  );

...

procedure TfData.qCardsRES2GetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
//  if DisplayText then
    Text := caPersonStatus [Sender.AsInteger];
end;

procedure TfData.qCardsRES2SetText(Sender: TField; const Text: String);
begin
  if Text = caPersonStatus [0] then
    Sender.AsInteger := 0
  else
    Sender.AsInteger := 1;
end;

т.е. "Сотруднику" соотв. 0, а "посетителю" - 1, в базу именно они и пишуться, но пользователь видит словесные   обозна4ения. сами зна4ения вбираются из ДБ-комбобокса, и при вводе их преобразует второй меятод опять таки в 4исла.
« Последнее редактирование: 19-12-2007 19:59 от Алексей1153++ » Записан

DanZer
Гость
« Ответ #2 : 25-08-2005 07:16 » 

Спасибо, так и сделаю.
Записан
Emp
Гость
« Ответ #3 : 06-09-2005 04:16 » new

Если поле булевское, то значения соответствующие true/false можно прописать в свойстве DisplayValues класса TField через точку с запятой
Table1.Field1.DisplayValues:='Сотрудник;Посетитель'
« Последнее редактирование: 19-12-2007 20:02 от Алексей1153++ » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines