Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2010, 11:01   #1
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию Проблема с DBGrid

Собственно возник такой вопрос, есть DBGrid в нем создал свою колонку, теперь мне надо в этой колонке отрисовать '+' или '-' в зависимости от того, что находится в DataSet 'True' или 'False'. Тоесть в DataSet есть field 'active' - boolean, при перерисовке должно проверятся это значение и записывать соответственно '+' или '-'. Проверка у меня работает, а вот как ячейке присвоить +-, не получается.
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Старый 02.11.2010, 11:42   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Используйте вычисляемое поле...
mihali4 вне форума Ответить с цитированием
Старый 02.11.2010, 11:48   #3
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Используйте вычисляемое поле...
а как это сделать?
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Старый 02.11.2010, 11:54   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Выберите ваш DataSet на форме.
Сделайте даблклик по нему - откроется редактор полей.
Создайте новое поле active1 и укажите, что оно д.быть Calculated.
Для DataSet пропишите обработчик события OnCalcFields:
Код:
if DataSet.FieldByName('active').Value then
DataSet.FieldByName('active1').AsString:='+' else
DataSet.FieldByName('active1').AsString:='-';
Вот это поле active1 и сделайте отображаемым в DBGrid...
mihali4 вне форума Ответить с цитированием
Старый 02.11.2010, 12:24   #5
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

а если я датасет создаю динамически, тогда как?
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Старый 02.11.2010, 12:33   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

То же самое, но программно.
Раз вы создаете датасет динамически, то и поля в нем создавать умеете.
mihali4 вне форума Ответить с цитированием
Старый 02.11.2010, 12:35   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,528
По умолчанию

Цитата:
а если я датасет создаю динамически, тогда как?
тогда создавать (или подключать/добавлять) данное поле динамически.
Все что можно сделать в Object Inspector можно повторить и в программе.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.11.2010, 12:41   #8
new player
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 153
По умолчанию

Для отрисовки +/- воспользуйтесь свойством DrawColumnCell.
new player вне форума Ответить с цитированием
Старый 02.11.2010, 12:58   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

если что можно динамически поля создавать
Код:
type
  TForm1 = class(TForm)
...
  private  NewField:TStringField;
    { Private declarations }
  public
    { Public declarations }
  end;
Код:
begin
 Table1.Close;
 NewField:=TStringField.Create(Table1);
 with NewField do begin
      FieldKind := fkCalculated;
      FieldName := 'Calc';
      Calculated := True;
      DataSet:=DataSource1.DataSet;
    end;
 Table1.Fields.Add(NewField);
  Table1.Open;
end;
Ну и сам обработчик
Код:
procedure TForm1.Table1CalcFields(DataSet: TDataSet);
begin
 if DataSet.FieldByName('size').AsInteger>0 then NewField.Value:='+';
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.11.2010, 13:05   #10
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

наводку получил, сделал, пока работает!
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с DBGrid... Arinka Помощь студентам 3 28.05.2010 12:22
Проблема с DBGrid flame33 Помощь студентам 3 12.01.2010 18:40
Проблема с DBGrid Creeepy БД в Delphi 1 21.11.2009 20:09
Проблема с DBGrid tattynaz Общие вопросы Delphi 11 20.08.2009 16:53
Проблема с DBGrid rainbow Общие вопросы Delphi 1 02.10.2008 08:09