| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как определить позицию каретки редактора |
| Автор: Doga 13.5.2008, 16:04 |
| Всем привет. Имеется окно текстового редактора, класс которого является наследником TCustomEdit. Редактор содержит текст, превышающий по длине размеры окна редактора. В следствие чего, в редакторе видна только часть текста, допустим последняя. Как определить позицию каретки не относительно видимой части текста(с этим всё просто - это TCustomEdit.CaretPos), а относительно его (текста) полной длины? Или, что то же самое, индекс первого символа текста, видимого в окне редактора? |
| Автор: Doga 18.5.2008, 14:31 |
| Помогли на DelphiKingdom. Оказывается, свойство SelStart может указывать на позицию каретки редактора относительно полной длины его текста, но только в случае, если в редакторе отсутствует выделенный (селектированный) текст. Что, собственно, мне и мешало. Поэтому, пришлось сначала запомнить параметры выделенного текса, затем произвести его деселекцию, получить необходимую позицию каретки и, наконец, восстановить селектированный текст. Причём, последнее лучше делать с помощью отсылки сообщения EM_SETSEL, которое в отличие от методов SetSelStart и SetSelLength, позволяет осуществлять селекцию текста справа налево. Возможно, что к решению этой проблемы таким способом имело отношение одно место |