Определяешь обработчик на 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
|