|
|
От: |
romanian
|
|
| Дата: | 20.10.06 09:19 | ||
| Оценка: | 3 (1) | ||
Вы не указали платформу пазработки (.NET, WinAPI, some else), поэтому буду указывать несколько вариантов:
1) Для получения уведомления об изменении текста в richedit'е (RichTextBox) используйте соотв. событие (TextChanged, EN_CHANGE).
2) для получения позиции каретки можно использовать или RichTextBox.SelectionStart, или ITextSelection.Start.
3) После получения позиции каретки можно получить слово, в которое каретка попадает: для этого необходимо получить ITextRange, у которого Start и End = позиции каретки, затем у полученного ITextRange вызвать метод Expand с параметром tomWord.
4) для подсветки слова (либо иных модификаций атрибутов текста) исп-те у полученного ITextRange св-во Font (ITextFont).
5) о морганиях при работе с TOM имеет смысл беспокоится только при массовой модификации атрибутов (цвет, шрифт) текста, для подавления отрисовки у ITextDocument есть методы Freeze\Unfreeze.
5) для поиска примеров поищите в форумах RSDN (напр. в .NET GUI, COM, WinAPI) по словам TOM, ITextRange, ITextDocument, также можете посмотреть использование TOM'а в исходниках Wordpad (искать в MSDN).
6) также вам необходимо озаботиться об изменении текста с пом. drag'n'drop, в этом случае могут изменится 2 участка текста...
7) лучше все обсуждения вести в форуме RSDN, и вопросы задавать более конкретно