DBGrid Memo Field

Judo
Дата: 18.05.2011 11:37:50
На форме есть объект типа TDBGrid.
Как сделать чтобы по умолчанию(без тайп-кастинга в селектах) содержимое поля типа text (PostgreSQL) показывались именно текстом... Сейчас выводится значение (Memo). Нужно чтобы как в pgAdmin - который выводит именно значение этого поля.
Может какойто настройкой решается...
RENaissance
Дата: 18.05.2011 12:06:07
Judo, напиши свою реализацию TMemoField'а или используй событие OnGetDisplayText.
Judo
Дата: 18.05.2011 13:00:43
Ок Спасибо.
Начинающий SQL 2008
Дата: 18.05.2011 17:12:07
Judo,
Один из вариантов. Проверено на Delphi 7, ADO подключение к MS SQL 2008.
В качестве Memo-поля выступает столбец с типом varchar(max)

// Событие OnDrawDataCell
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);
var
 s: string;
begin
 if Field is TMemoField then
 begin
  s := Field.Value;

  s := StringReplace(s, #13, ' ', [rfReplaceAll]);
  s := StringReplace(s, #10, ' ', [rfReplaceAll]);

  TDBGrid(Sender).Canvas.FillRect(Rect);
  TDBGrid(Sender).Canvas.TextOut(Rect.Left+1, Rect.Top+2, s);
 end;
end; // DBGrid1DrawDataCell