Delphi World - Показ Memo-поля в DBGrid 2
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Показ Memo-поля в DBGrid 2

Модем с бодуна трубку снимает:
Гав - тьфу б/\я, Мяу - б/\я, Ш-ш-ш, Ой - пи-и-и...

Используйте следующий код для обработки события OnDrawDataCell у TDBGrid. (Перед запуском программы создайте объект TMemoField для memo поля в Fields Editor).


 procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect:
 TRect;
   Field: TField; State: TGridDrawState);
 var
   P: array [0..1023] of Char; { MemoField buffer }
   BS: TBlobStream;
   S: string;
 begin
   if Field is TMemoField then
   with (Sender as TDBGrid).Canvas do
   begin
 { Table1Notes is the TMemoField }
     BS := TBlobStream.Create(Table1Notes, bmRead);
     FillChar(P, SizeOf(P), #0);
     BS.Read(P, SizeOf(P));
     BS.Free;
     S := StrPas(P);
 { remove carriage returns &  line feeds }
     while Pos(#13, S) >  0 do S[Pos(#13, S)] := ' ';
     while Pos(#10, S) >  0 do S[Pos(#10, S)] := ' ';
 { clear the cell }
     FillRect(Rect);
 { fill cell with memo data }
     TextOut(Rect.Left, Rect.Top, S);
   end;
 end;

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования