Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Нумерация строк текста


Автор: Mbr 7.10.2004, 14:31
Требуется создать достаточно простой текстовый редактор, особенностью которого должна быть возможность отображения номеров строк. Причем текст может содержать форматирование (цвет, начертание и т.д.) Подскажите пожалуйста, что использовать для вывода номеров строк и как сделать это таким образом, чтобы эти номера перемещались вместе с редактируемым текстом находящемся в RichEdit ? smile.gif

Автор: Alkash 8.10.2004, 02:44
Хм.....Попробуй при появлении строки просто добавлять перед ней номер=)

Автор: Mbr 8.10.2004, 09:27
Цитата
Попробуй при появлении строки просто добавлять перед ней номер=)

Но ведь тогда этот номер можно будет отредактировать, а этого допускать нельзя. Да и выглядеть будет не очень хорошо wink.gif

Автор: DonPager 8.10.2004, 12:01
делаешь слева от соего рич эдита панелину (лабель, мемо, что угодно)-
делаешь её недоступной - и выводишь номера на ней а при переходе от строки к строке обрабатываешь .... это по простому...
если хочешь покрасивше смотри пример написания плагина для листера тотал командера ( там именно то что тебе надо и ещё кое что )

Автор: Mbr 8.10.2004, 12:49
Код
делаешь слева от соего рич эдита панелину (лабель, мемо, что угодно)- делаешь её недоступной - и выводишь номера на ней а при переходе от строки к строке обрабатываешь .... это по простому...

Спасибо за дельный совет! smile.gif Осталось только понять как узнать когда, куда и на сколько прокручивать номера строк при прокрутке основного текста wink.gif Или, что тоже самое, как узнать номер строки, которая отображается в самом верху richedit основного текста ?

P.S. Исходник плагина к сожалению написан на Си... sad.gif

Автор: Mbr 8.10.2004, 23:26
Цитата
Или, что тоже самое, как узнать номер строки, которая отображается в самом верху richedit основного текста ?

С эти разобрался. Делается следующим образом:
Код
Result := RichEdit1.Perform(EM_GETFIRSTVISIBLELINE,0,0)

Но мы получаем целое число. А строки в RichEdit перемещаются плавно, по точкам. Вот бы ещё узнать откуда взять информацию о том, какая часть первой строки уже выведена и как её применить ко второму RichEdit, содержащему номера строк rolleyes.gif

Автор: Mbr 11.10.2004, 12:59
Пошастал в инете. Оказалось что я не первый, кто интересуется данным вопросом. Нашёл следующий совет:
Цитата
Легко...
Тебе надо повесить свой обработчик на WindowProc первого RichEdit
и в нем обрабатывать сообщение WM_VSCROLL, пересылая такое же сообщение второму RichEdit.

sample.gif

Автор: Mbr 14.10.2004, 23:43
Знает ли кто-нибудь почему на событии OnMessage компонента TApplicationEvent не получается поймать сообщения WM_VSCROLL относящегося к RichEdit ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)