Страница 4 из 6
Re: Компонент Richmemo
Добавлено: 18.04.2016 19:01:44
kazalex
скалогрыз писал(а):Нужен тест!
В редакторе компонента всё хорошо, но после нажатия на OK текст в компонент не попадает.
Re: Компонент Richmemo
Добавлено: 18.04.2016 20:01:47
скалогрыз
это потому что редактор использует "ручную" запись RTF. а она "ручная" запись таблицы не признаёт... к слову о прямых руках...
Re: Компонент Richmemo
Добавлено: 18.04.2016 20:37:00
kazalex
RichMemo на W2K:
А вот на Windows 98 RichEdit и правда не умеет таблицы

Re: Компонент Richmemo
Добавлено: 18.04.2016 20:48:45
скалогрыз
kazalex писал(а):А вот на Windows 98 RichEdit и правда не умеет таблицы
по-моему он там может уметь, но только если распоследний IE установить.... то ли 6й то ли 7й.
но т.к. LCL от поддержки Win9x отказалася, то и RichMemo поддерживать 9x не стремится. Только за деньгу.
Re: Компонент Richmemo
Добавлено: 18.04.2016 20:54:29
woodhead
Вот под Windows XP. Вроде всё корректно работает. На форме компонент RichMemo. Doc1.rtf - исходный файл RTF, открытый в WordPad, Doc2.rtf - сохранённый из RichMemo. Как видим, отображение идентичное.

- RichMemo и RTF в Windows XP SP3
Re: Компонент Richmemo
Добавлено: 18.04.2016 20:55:51
kazalex
скалогрыз писал(а):но т.к. LCL от поддержки Win9x отказалася
Ну вот у меня LCL-тестилка и не запустилась, проверял WordPad'ом.
Re: Компонент Richmemo
Добавлено: 18.04.2016 23:44:08
pupsik
Кстати, когда запросы превышают возможности RichMemo, я всем рекомендую использовать Kmemo.
В принципе нормально отображает (в лине - жтк). Есть баги. Под виндой не смотрел.
п.с.
Уж сори но Richmemo - не отобразил.
Re: Компонент Richmemo
Добавлено: 19.04.2016 00:09:35
скалогрыз
pupsik писал(а):Уж сори но Richmemo - не отобразил.
так и не должен, ибо линукс, а под него таблички грустно делать.
Имхо, Кmemo проще допилить
Re: Компонент Richmemo
Добавлено: 19.04.2016 02:03:51
pupsik
он не только табличку не потянул. А и то что слева.
Кстати: kmemo не втащил картинки из richmemo.

Re: Компонент Richmemo
Добавлено: 19.04.2016 14:34:33
AlexEr81
kmemo очень медленно работает. у меня в проекте в kmemo вставляются данные около 120 строк текста. по времени это около 3 сек. а если еще применять стили к различным частям текста, то еще больше времени займет. в richmemo в течении секунды это делается. но есть проблема с richmemo.
так вставляется текст cStr в текущую строку:
Код: Выделить всё
procedure addColorTextToRichEdit(var rep:TRichMemo;cStr:string;codeS:string;ColorS:TColor;SizeS:integer;StyleS:TFontStyles);
var p,ns,n:integer;
FontT:TFONT;
begin
n:=rep.SelStart-1;
if codeS='ansi' then cStr:=wincptoutf8(cStr);
rep.SelStart:=n;
rep.SelText:=cStr;
FontT:=TFONT.create;
FontT.Height:=rep.Font.Height;
FontT.Style:=StyleS;
FontT.Name:=rep.Font.Name;
FontT.size:=SizeS;
FontT.Color:=ColorS;
rep.SetTextAttributes(n,Utf8length(cStr),FontT);
FontT.Free;
end;
так добавляется строка с текстом cStr:
Код: Выделить всё
procedure appendColorTextToRichEdit(var rep:TRichMemo;cStr:string;codeS:string;ColorS:TColor;SizeS:integer;StyleS:TFontStyles);
var p:integer;
FontT:TFONT;
begin
p:=rep.SelStart;
if codeS='ansi' then cStr:=wincptoutf8(cStr);
rep.Lines.add(cStr);
FontT:=TFONT.create;
FontT.Height:=rep.Font.Height;
FontT.Style:=StyleS;
FontT.Name:=rep.Font.Name;
FontT.size:=SizeS;
FontT.Color:=ColorS;
rep.SetTextAttributes(p,Utf8length((cStr)),FontT);
FontT.Free;
end;
appendColorTextToRichEdit всегда работает правильно, а addColorTextToRichEdit применяет "SetTextAttributes" не к тексту cStr а смещается если до этого был вставлен текст с помощью appendColorTextToRichEdit .
т.е. если в appendColorTextToRichEdit убрать SetTextAttributes то addColorTextToRichEdit всегда срабатывает правильно. как мне победить эту ситуацию?
Добавлено спустя 2 часа 18 минут 33 секунды:пока выход вижу один - считать самому, сколько добавил символов c:=c+utf8length(cstr)
и передавать в SetTextAttributes(c,....)
Добавлено спустя 27 минут 55 секунд:всё разобрался:
надо было
n:=rep.utf8length(rep.text)-1;
p:=rep.utf8length(rep.text);
Re: Компонент Richmemo
Добавлено: 19.04.2016 15:01:03
pupsik
kmemo очень медленно работает
только недавно адаптировали. Возможно будут правки. Да и самому можно подправить.
Есть еще lzrichedit. Уж не знаю как он к таблице "отнесётся".
Re: Компонент Richmemo
Добавлено: 19.04.2016 15:28:18
скалогрыз
pupsik писал(а):Есть еще lzrichedit. Уж не знаю как он к таблице "отнесётся".
точно так же, потому что тот же RICHEDIT виндовский.
Добавлено спустя 17 минут 59 секунд:AlexEr81 писал(а):appendColorTextToRichEdit всегда работает правильно, а addColorTextToRichEdit
а зачем две разные процедуры, которые делают одно и то же? или append только в конец текста добавляет?
Re: Компонент Richmemo
Добавлено: 19.04.2016 15:45:48
AlexEr81
append добавляет новую строку, add дописывает текст в последнюю строку.
Re: Компонент Richmemo
Добавлено: 01.09.2016 21:33:39
sn-102
2 скалогрыз:
Обнаружились неприятные моменты в RichMemo при обращении к функциям GetTextAttributes и GetParaAlignment - с отрисовкой происходят странные вещи. Сразу оговорюсь для избежания лишних вопросов - смысл в том, чтобы панель управления текстового редактора реагировала на изменение текста под курсором. Обе эти функции ставлю в события onMouseUp и onKeyUp, в результате чего:
1) Нельзя выделить текст влево, только вправо при подключении любой из функций.
2) GetParaAlignment зацикливает перерисовку текста при его выделении - сплошное мерцание.
3) При использовании GetTextAttributes остаются не стёртые палочки текстового курсора.
Решил пока временно тем, что засунул эти функции в таймер и в события воткнул активацию таймера. Криво но хотя бы работает. При этом артефакты в виде не стёртого курсора всё равно остаются.
ОС Win7, IDE v1.6.
Re: Компонент Richmemo
Добавлено: 01.09.2016 21:59:42
скалогрыз
Пример бы кода?!
Eсть мнение, что проблема в использовании старой версии RichMemo - какая ревизия?
Ещё я бы рекомендовал вместо OnMouseUp, OnKeyUp использовать OnSelectionChange.
Добавлено спустя 1 минуту 12 секунд:sn-102 писал(а):Решил пока временно тем, что засунул эти функции в таймер и в события воткнул активацию таймера. Криво но хотя бы работает. При этом артефакты в виде не стёртого курсора всё равно остаются.
Вот это, конечно, очень неприятно и нужно компонент поправить.