|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.12.2010, 21:48 | #1 |
Пользователь
Регистрация: 31.08.2010
Сообщений: 11
|
Нумерация строк в RichEdit
Передо мной была поставлена задача -
чтобы строки в RichEdit нумеровались и номера строк были недоступны для редактирования. Я написал процедуру: (в Uses прописал RichEdit). procedure TFListNotRazF.FormatText(); var fmt: TParaFormat2; pos : Integer; begin pos := RichEdit1.SelStart; RichEdit1.SelectAll; FillChar( fmt, SizeOf( fmt ), 0 ); fmt.cbSize := SizeOf( fmt ); fmt.dwMask := PFM_NUMBERING or PFM_NUMBERINGSTART or PFM_NUMBERINGSTYLE or PFM_NUMBERINGTAB; fmt.wNumbering := 2; /// wNumbering: // 0 - нет нумерации // 1 - маркированный список (•, •, •, ...). // 2 - арабские цифры (1, 2, 3, ...). // 3 - маленькие буквы (a, b, c, ...). // 4 - большие буквы (A, B, C, ...). // 5 - маленькие римские цифры (i, ii, iii, ...). // 6 - большие римские цифры (I, II, III, ...). // 7 - последовательность символов Unicode/ fmt.wNumberingStart := 1; /// wNumberingStart: // Число, с которого начинается нумерация./ fmt.wNumberingStyle := $200; /// wNumberingStyle: // Стиль нумерации // 0 : 1) // $100 : (1) // $200 : 1. // $300 : 1 // $400 : убрать список // $8000 : продолжает нумеровать список не изменяя стиля/ fmt.wNumberingTab := 1440 div 4; /// wNumberingTab: // расстояние между номером и текстом параграфа/ RichEdit1.Perform( EM_SETPARAFORMAT, 0, lParam( @fmt ) ); RichEdit1.SelStart:=pos; end; И запустил эту процедуру перед заполнением RichEdit, а также в событии RichEditKeyUp(это нужно чтобы в случае нажатия Enter правильно пересчитывались номера строк). Но возникла проблема - номера строк считаются от 1 до 255. Дальше все строки нумеруются как 255. Т.е. 1... .... 253... 254... 255... 255... 255... ...... 255... Перед заполнением RichEdit добавил строку - SendMessage(RichEdit1.Handle,EM_EXL IMITTEXT,0,limit); (limit - перем. количество строк). Но это не помогло. |
09.12.2010, 14:11 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А если в начало каждой строки программно внести номер и защитить его от редактирования (есть соответствующее свойство, Protected кажется, дельфи нет под рукой. Это свойство в объекте форматирующем выделенный текст). И как-то потом нужно решить проблемы с перенумерацией после вставки-удаления строк
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 09.12.2010 в 14:15. |
09.12.2010, 16:09 | #3 |
Форумчанин
Регистрация: 25.05.2010
Сообщений: 169
|
А можно просто рисовать на канве, во время прорисовки TRichEdit
Для этого нужно обработать большинство событий и заменить стандартную процедуру Paint (вроде так) |
15.04.2011, 16:20 | #4 |
Пользователь
Регистрация: 31.08.2010
Сообщений: 11
|
Для нумерации строк надо использовать другой компонент - SynEdit.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа:Нумерация и отмена нумерации строк в мемо или richedit | Obender13 | Помощь студентам | 4 | 17.01.2011 15:00 |
нумерация строк | strannik | SQL, базы данных | 1 | 19.05.2010 09:09 |
Нумерация строк | Sparky | БД в Delphi | 6 | 16.02.2010 21:38 |
Нумерация строк | ShnapS | БД в Delphi | 5 | 06.05.2009 20:59 |
Нумерация строк. QT 4 | NikLik | Qt и кроссплатформенное программирование С/С++ | 2 | 18.12.2008 22:38 |