Q.  How do I show the contents of a memo field in a DBGrid?

A.  Use the following code for the OnDrawDataCell event of the DBGrid.  Note: before running create a TMemoField object for the memo field by double clicking on the TTable component and adding the memo field.

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);
var
  P  : array [0..50] of char;   {array size is number of characters needed}
  BS : tBlobStream;             {from the memo field}
  S  : String;
begin
  If Field is TMemoField then begin
    with (Sender as TDBGrid).Canvas do begin
      {Table1Notes is the TMemoField}
      BS := tBlobStream.Create(Table1Notes, bmRead);
      FillChar(P,SizeOf(P),#0);               {terminate the null string}
      BS.Read(P, 50);           {read 50 chars from memo into blobStream}
      BS.Free;
      S := StrPas(P);
      while Pos(#13, S) > 0 do              {remove carriage returns and}
        S[Pos(#13, S)] := ' ';              {line feeds}
      While Pos(#10, S) > 0 do
        S[Pos(#10, S)] := ' ';
      FillRect(Rect);                          {clear the cell}
      TextOut(Rect.Left, Rect.Top, S);         {fill cell with memo data}
    end;
  end;
end;