Компонент Richmemo

Модератор: Модераторы

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

Сообщение sn-102 » 02.09.2016 00:05:12

скалогрыз писал(а):Пример бы кода?!


Прошу прощения - не правильно определил в какой процедуре была главная загвоздка. Основная проблема крылась в подстановке функций в процедуру 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). В результате рекурсии нет, но нельзя выделять текст влево, и множество артефактов текстового курсора.
sn-102
новенький
 
Сообщения: 16
Зарегистрирован: 24.08.2016 11:02:13

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

Сообщение скалогрыз » 02.09.2016 00:16:36

sn-102 писал(а):Ревизия 5112

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

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


проблема останется?
скалогрыз
долгожитель
 
Сообщения: 1690
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение sn-102 » 02.09.2016 00:35:52

скалогрыз писал(а):а если откатиться до 4971

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

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

Сообщение скалогрыз » 02.09.2016 00:47:13

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

хм. понятно.
А RichMemo как скачал по ссылке из вики или из репозитория через svn?
скалогрыз
долгожитель
 
Сообщения: 1690
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение sn-102 » 02.09.2016 00:49:28

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

На сколько я помню, из вики.
sn-102
новенький
 
Сообщения: 16
Зарегистрирован: 24.08.2016 11:02:13

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

Сообщение скалогрыз » 02.09.2016 01:07:56

Сделай копию той что есть у тебя, и попробуй вот эту! Это та самя r4971
Вложения
richmemo4971.zip
(158.74 КБ) Скачиваний: 240
скалогрыз
долгожитель
 
Сообщения: 1690
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение sn-102 » 02.09.2016 01:29:37

скалогрыз писал(а):Сделай копию той что есть у тебя, и попробуй вот эту! Это та самя r4971

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

Добавлено спустя 3 минуты 36 секунд:
Рекурсия появляется в событии onChange
sn-102
новенький
 
Сообщения: 16
Зарегистрирован: 24.08.2016 11:02:13

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

Сообщение скалогрыз » 02.09.2016 07:41:54

sn-102 писал(а):но нельзя выделять текст влево

проблема должна быть решена в r5117 (в аттаче, или сутки подождать и по ссылке с вики скачать можно)
Вложения
richmemo5117.zip
(160.33 КБ) Скачиваний: 212
скалогрыз
долгожитель
 
Сообщения: 1690
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение sn-102 » 02.09.2016 10:57:19

Да, всё отлично. И в рекурсию не впадает в onChange, и выделение работает и артефактов нет. Огромное спасибо!
sn-102
новенький
 
Сообщения: 16
Зарегистрирован: 24.08.2016 11:02:13

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

Сообщение Лекс Айрин » 25.09.2017 15:49:25

Разбираю пример с принтером из стандартной поставки. Собрал, запустил и пытаюсь распечатать на pdf принтер...

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

Это нормально или где-то косяк?
win 7, сегодняшний транк Lazarus. правда, fpc староват.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

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

Сообщение скалогрыз » 25.09.2017 21:18:51

Лекс Айрин писал(а):Собрал, запустил и пытаюсь распечатать на pdf принтер...

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

есть мнение что косяк
скалогрыз
долгожитель
 
Сообщения: 1690
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение Лекс Айрин » 26.09.2017 09:13:16

это foxit reader-овский принтер + потом пользовался doPDF. Если вручную задавать границы страницы, то печатает нормально, если убрать встроенную процедуру выставления границ, конечно.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Пред.

Вернуться в Компоненты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru