Здравствуйте!
Собственно, сабж в названии: нужно узнать индекс (номер) строки, в которой произошли изменения в RichEdit.
Агоритм должен быть быстрый.
Заранее спасибо.
Этот топик читают: Гость
|
Ответов: 1173
Рейтинг: 49
|
|||
| карма: 0 |
|
|
Ответов: 3889
Рейтинг: 362
|
|||
|
Ex_ писал(а): Агоритм должен быть быстрыйНет уж, будьте добры берите что дают ------------ Дoбавленo в 13.24: Схема простейшая, не считает добавление строки изменением. |
|||
| карма: 1 |
| ||
| файлы: 1 | code_28182.txt [1KB] [144] |
|
Ответов: 1173
Рейтинг: 49
|
|||
|
1nd1g0, спасибо, но есть небольшая проблема -- при переводе каретки первый символ не засчитывается.
|
|||
| карма: 0 |
|
|
Ответов: 3889
Рейтинг: 362
|
|||
|
Ex_ писал(а): при переводе каретки первый символ не засчитываетсяЕстественно, это и считается созданием строки, можно добавить отслеживание создания новых строк и синхронизировать списки, тогда первичное заполнение тоже будет учитываться. Вообще всё зависит от того, как у Вас изменяют строки, если только вручную, то у текстовых контролов, в принципе, можно попробовать выявить текущую строку редактирования и считать её изменённой, что быстрее сравнений, но не так универсально. И RichEdit не имеет штатного атрибута номера текущей строки, позиция курсора измеряется в символах от начала всего текста. |
|||
| карма: 1 |
|
|
Ответов: 1173
Рейтинг: 49
|
|||
|
1nd1g0, попробовал так, но что-то не работает:
code_28184.txt ------------ Дoбавленo в 14.03: Кстати, у RE есть точка EndIdx, но в pas-нике её нет |
|||
| карма: 0 |
| ||
| файлы: 1 | code_28184.txt [1.1KB] [92] |
|
Ответов: 3889
Рейтинг: 362
|
|||
|
Ex_ писал(а): в pas-нике её нетОна унаследована у EWinList (который её унаследовал от WinList и т.д. и т.п.). |
|||
| карма: 1 |
|
|
Ответов: 1173
Рейтинг: 49
|
|||
|
Всё, понял: нужно организовать список/массив, записывать Position, как увеличится EndIdx -- записывать в новую строку/элемент, затем при проверке смотреть, в какой строке/элементе лежит нужный Position. Как сделаю, выложу.
------------ Дoбавленo в 15.01: Подскажите, кто-нибудь, в чём проблема? |
|||
| карма: 0 |
|
|
Ответов: 1821
Рейтинг: 168
|
|||
|
Ex_, уточните - какая проблема и что должно быть.
|
|||
| карма: 5 |
|
|
Ответов: 1173
Рейтинг: 49
|
|||
|
sаmakacd, должно выдавать сохранённый в массиве Position, а индекс (откуда брать значение) должно брать из ЭдитБокса.
[flood] sаmakacd писал(а): какя |
|||
| карма: 0 |
|
|
Ответов: 3889
Рейтинг: 362
|
|||
|
Ex_, У Вас постоянно "сбрасывается" GetIndexData даже при простом движении курсора в RichEdit (появляется событие onChange).
|
|||
| карма: 1 |
|
|
Ответов: 1173
Рейтинг: 49
|
|||
|
1nd1g0 писал(а): У Вас постоянно "сбрасывается" GetIndexData |
|||
| карма: 0 |
|
|
Ответов: 8976
Рейтинг: 825
|
|||
|
Ex_,
1) Запоминать положение курсора при редактировании и смысла нет, т. к. длина строки меняется, и запомненные положения его за местом редактирования не соответствуют действительности 2) В RichEdit количество строк (точка внизу) считается не по символам 10 и 13, а по видимому разбиению строк и тоже изменяется при именении размеров RichEdit-а Логика работы должна это учитывать ------------ Дoбавленo в 16.13: Кстати, просто установка курсора на поле тоже вызывает событие onChange |
|||
| карма: 19 |
|
|
Ответов: 1173
Рейтинг: 49
|
|||
|
Леонид, что-то не пойму, как ваша схема работает
|
|||
| карма: 0 |
|
|
Ответов: 8976
Рейтинг: 825
|
|||
|
Ex_, в массив запоминаются положения курсора при внесении изменений. Посмотреть их можно по индексу в Edit нажав Enter.
Два последних события запоминаются в MemFifo и их неравенство соответствуют изменению и положение курсора добавляется в массив. Вот ещё схемка по подсчёту строк в RichEdit-е: code_28191.txt |
|||
| карма: 19 |
| ||
| файлы: 1 | code_28191.txt [2.3KB] [162] |
|
Ответов: 1173
Рейтинг: 49
|
|||
|
Леонид, спасибо, однако, не думал, что понадобятся такие вот "пляски"
Тема закрыта. |
|||
| карма: 0 |
|
15



Поиск
Друзья
Администрация