Discussion:
Отображение в таблице memo полей
(слишком старое сообщение для ответа)
Сизёмин Антон Сергеевич
2004-07-22 17:19:53 UTC
Permalink
Hello, уважаемый All
Как в DBGrid показывать поля MEMO.

Я знаю, как показать активное поле, а вместо неактивных вывести картинку.
Но вот хотелось бы, чтобы текст был виден не только в текущей строке.
Сложность видится в том, что как-то надо обратиться к нескольким соседним
записям, но чтобы это не отразилось на прорисовке DbGrid.
Bator
2004-07-22 19:41:15 UTC
Permalink
Hello, Сизёмин!
You wrote on Thu, 22 Jul 2004 17:19:53 +0000 (UTC):

САС> Как в DBGrid показывать поля MEMO.


возьми EhLib
www.ehlib.com

С уважением,
Bator B. Dashiyanzhibon
E-mail: ***@mail.iks.ru
Сизёмин Антон Сергеевич
2004-07-22 20:37:02 UTC
Permalink
Post by Bator
возьми EhLib
www.ehlib.com
Уже давно. Но это не помогает. Кажется, ehLib использует отображение только
текста, Но не RTF 2.0


Как работать с BlobStream я знаю (могу отметить, что для работы с
clientDataset приходится писать TclirntBlobStream)
Но этим методом я могу выхватить только текст. Моя же прога работает через
Rich Edit 2.0, то есть отображает в случае с Blob Stream что- то типа

{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Times New Roman;}}
\viewkind4\uc1\pard\lang1033\f0\fs-26 fg\par }

Такая же фигня происходит и в EhLibe
Bator
2004-07-23 02:11:23 UTC
Permalink
Hello, Сизёмин!
возьми EhLib www.ehlib.com
САС> Уже давно. Но это не помогает. Кажется, ehLib использует
САС> отображение только текста, Но не RTF 2.0
САС> Как работать с BlobStream я знаю (могу отметить, что для работы с
САС> clientDataset приходится писать TclirntBlobStream)
САС> Но этим методом я могу выхватить только текст. Моя же прога
САС> работает через
САС> Rich Edit 2.0, то есть отображает в случае с Blob Stream что- то
САС> типа
САС> {\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Times New Roman;}}
САС> \viewkind4\uc1\pard\lang1033\f0\fs-26 fg\par }
САС> Такая же фигня происходит и в EhLibe

обрабатывай OnDrawDataCell

С уважением,
Bator B. Dashiyanzhibon
E-mail: ***@mail.iks.ru
Сизёмин Антон Сергеевич
2004-07-23 10:18:53 UTC
Permalink
Post by Bator
обрабатывай OnDrawDataCell
Ужас.
Ответ в стиле- запускай delphi там разберёмся.

А если по делу- я нашел способ, правда всё через зад.
Итак.
В обработчике GetText, который принадлежит TmemoField пишем процедуру,
которая через BlobStream захватывает поток из MemoField. Дальше закидываем
этот поток в RichEdit, где, если это RTF, происходит чудесное перевоплощение
:-))). А затем 2 варианта. Если графика в отображении неактивных строк не
нужна, то просто richedit.selectall
text:=richedit.seltext
Если графика нужна, то приёдется копировать canvas.rect из richedit в dbgrid

Для активной строки grid используем известный обработчик OnColumnCell, там
выводим на место активной ячейки richedit и проблем с графикой при
редактировании не будет.

Если кому надо в исходниках
***@box.vsi.ru
Vitaliy Lyanchevskiy
2004-07-23 10:52:12 UTC
Permalink
Hello, Сизёмин!
23.07.2004 12:18, Сизёмин Антон Сергеевич -> Bator:

САС> В обработчике GetText, который принадлежит TmemoField пишем

begin
Text := Sender.AsString;
end;
--
WBR, Vitaliy Lyanchevskiy (E-Mail: e l i c {at} p o c h t a {dot} r u)
Сизёмин Антон Сергеевич
2004-07-23 19:45:08 UTC
Permalink
WOW!
как додумался?
Сизёмин Антон Сергеевич
2004-07-22 21:01:09 UTC
Permalink
Да, точно, ehlib даже свойство обзывает как Memo TEXT
Есть вариант перекидывать текст, полученный из BlobStream в RichEdit, а уже
оттуда переносить полученное в строку, но здесь я начал путуться в
последовательности обрабатываемых событий.
Полезли всякие exceptions.
Сизёмин Антон Сергеевич
2004-07-23 19:57:36 UTC
Permalink
begin
Text := Sender.AsString;
end;

странные вещи при этом происходят.
какой - то rtf текст отображается правильно
А какой то:
{\rtf1\ansi\ansicpg1251\def ...
Причем правильно отображаемый текст перескакивает в неправтльно отображаемый
после любого исправления в тексте.

Andrew A. Bessonoff
2004-07-23 11:42:56 UTC
Permalink
Hello, Сизёмин!
You wrote on Thu, 22 Jul 2004 17:19:53 +0000 (UTC):

САС> Hello, уважаемый All
САС> Как в DBGrid показывать поля MEMO.

Возьми Polaris. http://polesoft.da.ru
Он умеет не только картинки, но и рич-текст отображать.


With best regards, Andrew A. Bessonoff. E-mail: ***@pomorsu.ru
Loading...