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


Автор: Doga 13.5.2008, 16:04
Всем привет.

Имеется окно текстового редактора, класс которого является наследником TCustomEdit. Редактор содержит текст, превышающий по длине размеры окна редактора. В следствие чего, в редакторе видна только часть текста, допустим последняя.

Как определить позицию каретки не относительно видимой части текста(с этим всё просто - это TCustomEdit.CaretPos), а относительно его (текста) полной длины? Или, что то же самое, индекс первого символа текста, видимого в окне редактора?

Автор: Doga 18.5.2008, 14:31
Помогли на DelphiKingdom.

Оказывается, свойство SelStart может указывать на позицию каретки редактора относительно полной длины его текста, но только в случае, если в редакторе отсутствует выделенный (селектированный) текст. Что, собственно, мне и мешало.

Поэтому, пришлось сначала запомнить параметры выделенного текса, затем произвести его деселекцию, получить необходимую позицию каретки и, наконец, восстановить селектированный текст. Причём, последнее лучше делать с помощью отсылки сообщения EM_SETSEL, которое в отличие от методов SetSelStart и SetSelLength, позволяет осуществлять селекцию текста справа налево.

Возможно, что к решению этой проблемы таким способом имело отношение одно место  smile  , но, во-первых, работает, а во-вторых, другого способа я пока не знаю...
 

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