How to display memo fields in a TDBGrid (Views: 1212)
Problem/Question/Abstract: How to display memo fields in a TDBGrid Answer: 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 BS := tBlobStream.Create(TBlobField(Field), 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 S[Pos(#13, S)] := ' '; 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; For mouse right click behavior you need to intercept the right click mouse message. |