На главную
Подписка
Новости


Рейтинг@Mail.ru











Главная / DELPHI / Часто задаваемые вопросы и ответы на них / Разработка баз данных / Как сделать, чтобы в DBGrid вместо цифр были соответствующие константы? Сделать домашней страницей Добавить в избранное Написать писмо

Как сделать, чтобы в DBGrid вместо цифр были соответствующие константы?


Определяешь обработчик на DrawColumnCell примерно так:

procedure TForm1.Grid1DrawColumnCell(Sender: TObject;
   const Rect: TRect; DataCol: Integer; Column: TColumn;
   State: TGridDrawState);
begin
   if Column.Field.FieldName='PLATEZH' then // ВАЖНО: имя поля большими буквами!
   begin
       Grid1.Canvas.FillRect(Rect);
       if Column.Field.AsInteger=0 then
           Grid1.Canvas.TextOut(Rect.Left+1,Rect.Top+2,'наличными')
       else
           Grid1.Canvas.TextOut(Rect.Left+1,Rect.Top+2,'безнал');
end;


Комментарий от Max Rezanov


По мне проще следующая конструкция (на GetText у TField)


procedure TForm1.Table1ID_OBJGetText(Sender: TField; var Text: String;
 DisplayText: Boolean);
 const cStr :array [0..1] of string = ('Нал','Без нал');
begin
 if DisplayText then
   Text := cStr[Sender.AsInteger]
 else
   Text := Sender.AsString;
end;

Прикол что это работает не только в DBGride

Одно маленькое замечание от ghoarkaz@rusprod.ru - имя поля надо писать именно так, как вы его определяете при формировании Grida, вовсе не обязательно большими буквами. Если в программе написано

Grid1.Columns.Items[1].FieldName:='Field1';
то и в обработчике д.б.
if Column.Field.FieldName='Field1' then ...


Комментарий от "men" (men@systema.ru)

...
if LowerCase(Column.Field.FieldName)='platezh'
...

и не думать о написании имени поля...

Copyright ©   "Мастера DELPHI"   E-mail:   delphi@mastak.com  http://www.delphimaster.ru
Источник получения информации: http://www.delphimaster.ru
Hosted by uCoz