Ранее уже выяснили что в этом модуле есть "нестандартные" концы строк https://turboconf.ru/Tasks/9752
Все же прошу подумать над решением проблемы некорректного позиционирования каретки в модулях с нестандартными концами строк.
Регулярно замечаю подобные проблемы в разных модулях разных конфигураций. Не уверен конечно, что там везде однотипная причина, но теперь уже думаю что это вполне вероятно.
Ссылка скрыта
Ссылка скрыта
#1, 10 октября 2024 00:35
Если будет очень сложно сделать красивое решение, то хотя бы нужно предупреждать пользователя о проблеме и давать рекомендацию по ее решению.
#2, ред. 10 октября 2024 11:44
(1) tormozit,
Проблема в том, что даже если в модуле переносы строк неправильные, то платформа отдает через UIAutomation текст, удаляя все символы \r.
Через копировании в буфер тоже исправляет переносы, но если сохранить модуль в файл, то видим проблему
Поэтому я не могу определить, что в модуле есть переносы строки в стиле Linux.
И в случае отсутствия в тексте \r, метод UIAutomation будет неправильно выделять позицию.
#3, 10 октября 2024 12:10
Тогда возможно получится где то перейти на использование относительных позиций вместо абсолютных. Если я правильно понял сейчас ты берешь абсолютную позицию и считаешь сколько до нее строк и затем номер колонки. Но можно же в случае вставки шаблона брать позицию относительно начальной позиции вставки и считать на сколько строк и колонок нужно сместить каретку.
#4, 10 октября 2024 12:19
(3) tormozit, SelectText работает в абсолютных значениях. Если в тексте пропущен \r он переместит на лишнюю позицию.
#5, ред. 10 октября 2024 12:26
(4) конкретно для шаблона <?> можно попробовать реализовать смещением относительно исходной позиции, надо пробовать.
#6, 10 октября 2024 12:28
Но в других методах это может не работать и гарантии 100% тоже не даст, если между строками шаблона отсутствуют символы \r. Поэтому лучше как-то попытаться определить, что в модуле нарушено форматирование и вывести уведомление.
#7, ред. 11 октября 2024 21:53
(2) bolsun, в событии ПриПолученииДанныхТ9 добавил такое условие
Оно не срабатывает. Значит я не смогу "увидеть" наличие этих символов и уведомить пользователя.
#8, ред. 16 октября 2024 00:14
(7) tormozit, платформа сама исправляет такие последовательности при получении текста через UIAutomation либо через буфер и добавляет символы \r. На текущий момент, определить что в модуле нарушена система переносов строк не представляется возможным.