Страница 5 из 5

Re: Компонент Richmemo

СообщениеДобавлено: 02.09.2016 00:05:12
sn-102
скалогрыз писал(а):Пример бы кода?!


Прошу прощения - не правильно определил в какой процедуре была главная загвоздка. Основная проблема крылась в подстановке функций в процедуру onChange.
При удалении из неё - остальные процедуры заработали без зависания (только артефакты остаются).

Procedure DefineBttns;
begin With HlpFileEditorF do begin
EW.GetTextAttributes(EW.SelStart, FP);
EW.GetParaAlignment(EW.SelStart, ewAlign);
{далее код приводить не буду - большой, я его задокументировал, но толку это не дало}
end; end;

procedure THlpFileEditorF.EWChange(Sender: TObject);
begin
DefineBttns; // если убрать здесь - работает с артефактами.
EW.Tag := 1;
end;

procedure THlpFileEditorF.EWKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var c: Char;
begin
DefineBttns; // если убрать здесь или ниже то поведение как в первом моем посте
c := Chr(Key);
if (Shift=[ssAlt]) then
if (c='A') or (c='a') or (c='Ф') or (c='ф') then AddSymbCondClick(Sender) else
if (c='R') or (c='r') or (c='К') or (c='к') then ChgSymbClick(Sender);
end;

procedure THlpFileEditorF.EWMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
DefineBttns; // если убрать здесь или выше то поведение как в первом моем посте
end;

скалогрыз писал(а):Eсть мнение, что проблема в использовании старой версии RichMemo - какая ревизия?

Ревизия 5112

скалогрыз писал(а):Ещё я бы рекомендовал вместо OnMouseUp, OnKeyUp использовать OnSelectionChange.

Попробовал - толку нет. Всё то же самое.

Следующий опыт - оставил DefineBttns только в событии onChange:
Оставляя в DefineBttns GetTextAttributes получаем отсутствие артефактов и зависания, но нельзя выделять текст влево.
Оставляя в DefineBttns GetParaAlignment получаем артефакты и рекурсию отрисовки, но выделять текст влево можно.

Добавлено спустя 5 минут 15 секунд:
Следующий опыт - удалил DefineBttns из события onChange - думаю нафиг он там не нужен (был там, т.к. портировал старый дельфинский редактор в своё время написанный на скорую руку, и при этом работавший на 5), при этом оставив обе функции в DefineBttns (GetTextAttributes и GetParaAlignment). В результате рекурсии нет, но нельзя выделять текст влево, и множество артефактов текстового курсора.

Re: Компонент Richmemo

СообщениеДобавлено: 02.09.2016 00:16:36
скалогрыз
sn-102 писал(а):Ревизия 5112

хмм... а если откатиться до 4971

из командной строки:
Код: Выделить всё
svn update -r 4971


проблема останется?

Re: Компонент Richmemo

СообщениеДобавлено: 02.09.2016 00:35:52
sn-102
скалогрыз писал(а):а если откатиться до 4971

Я в Лазаре только осваиваюсь (чуть более недели). Раньше много на Delphi кодил. Ещё не знаю как это сделать. Где эту командную строку искать? В команды компилятора вписать параметров сборки пакета? До или после компиляции?

Re: Компонент Richmemo

СообщениеДобавлено: 02.09.2016 00:47:13
скалогрыз
sn-102 писал(а):Я в Лазаре только осваиваюсь (чуть более недели). Раньше много на Delphi кодил. Ещё не знаю как это сделать. Где эту командную строку искать? В команды компилятора вписать параметров сборки пакета? До или после компиляции?

хм. понятно.
А RichMemo как скачал по ссылке из вики или из репозитория через svn?

Re: Компонент Richmemo

СообщениеДобавлено: 02.09.2016 00:49:28
sn-102
скалогрыз писал(а):хм. понятно.
А RichMemo как скачал по ссылке из вики или из репозитория через svn?

На сколько я помню, из вики.

Re: Компонент Richmemo

СообщениеДобавлено: 02.09.2016 01:07:56
скалогрыз
Сделай копию той что есть у тебя, и попробуй вот эту! Это та самя r4971

Re: Компонент Richmemo

СообщениеДобавлено: 02.09.2016 01:29:37
sn-102
скалогрыз писал(а):Сделай копию той что есть у тебя, и попробуй вот эту! Это та самя r4971

Артефакты почти пропали (один упорно остаётся), но не в них проблема - они легко затираются командой refresh после вызова процедур GetTextAttributes и GetParaAlignment. Все остальные неприятности, как то рекурсия и не возможности выделить текст слева от курсора остались на месте.

Добавлено спустя 3 минуты 36 секунд:
Рекурсия появляется в событии onChange

Re: Компонент Richmemo

СообщениеДобавлено: 02.09.2016 07:41:54
скалогрыз
sn-102 писал(а):но нельзя выделять текст влево

проблема должна быть решена в r5117 (в аттаче, или сутки подождать и по ссылке с вики скачать можно)

Re: Компонент Richmemo

СообщениеДобавлено: 02.09.2016 10:57:19
sn-102
Да, всё отлично. И в рекурсию не впадает в onChange, и выделение работает и артефактов нет. Огромное спасибо!

Re: Компонент Richmemo

СообщениеДобавлено: 25.09.2017 15:49:25
Лекс Айрин
Разбираю пример с принтером из стандартной поставки. Собрал, запустил и пытаюсь распечатать на pdf принтер...

Если поля печати выставить по нолям, то все нормально, а если их выставить свои, то создает кучу пустых страниц (для крайнего файла 1857) с небольшим кружком.

Это нормально или где-то косяк?
win 7, сегодняшний транк Lazarus. правда, fpc староват.

Re: Компонент Richmemo

СообщениеДобавлено: 25.09.2017 21:18:51
скалогрыз
Лекс Айрин писал(а):Собрал, запустил и пытаюсь распечатать на pdf принтер...

это стандартный pdf принтер или какой-то дополнительный (из ms office)

есть мнение что косяк

Re: Компонент Richmemo

СообщениеДобавлено: 26.09.2017 09:13:16
Лекс Айрин
это foxit reader-овский принтер + потом пользовался doPDF. Если вручную задавать границы страницы, то печатает нормально, если убрать встроенную процедуру выставления границ, конечно.