Показать сообщение отдельно
  #21  
Старый 04.01.2008, 14:27
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Цитата:
Сообщение от Oleg
А возможно ли скрыть мои теги, а на самом деле они будут ?
Возможно все, но иногда за бесконечно долгое время

Еще раз попытаюсь объяснить.

Если мы говорим о RichEdit, то он не поддерживает никаких тэгов кроме собственных, о которых вы и я ничего не знаем и не хотим знать. Нам доступно свойство Text, которое представляет собой строку с полным текстом RichEdit`а, свойство Lines, которое представляет собой строки абзацев и ряд свойств для форматирования. Как форматируется, подчеркиваю, мы не знаем. Чорный ящик.

Нужно как-то обеспечить, чтобы этот ящик "понимал" наши тэги, преобразовывая их в свои при чтении и обратно в наши - при сохранении.

Первый путь: на вход этого ящика мы должны подать чистый текст, без тэгов, которые мы не хотим отображать, а форматирование выполнить уже средствами RichEdit. То есть, нужно предварительно разобрать текст с тэгами, запомнить - с какой позиции и какой длины, например, текст красный, а с какой - жирным шрифтом (а тэги могут быть и вложенными). Всю эту работу нужно проделать самостоятельно. Для сохранения делаем то же самое, но в обратном порядке.

Второй вариант: у RichEdit есть свойство DefaultConverter класса TConversion. Насколько я понимаю, от этого TConversion можно создать наследника, переопределить два его виртуальных метода ConvertReadStream и ConvertWriteStream и присвоить экземпляр этого класса свойству DefaultConverter (либо зарегистрировать его через RegisterConversionFormat).

Как видите, оба варианта достаточно трудоемки.

Можно, конечно, написать свой компонент, для отображения форматирования текста на основе собственных тэгов, но вряд ли это будет проще.
Ответить с цитированием