Delphi - база знаний

Установка каретки в RichEdit


Установка каретки в RichEdit



Узнать положение курсора в RichEdit не составляет труда (richedit.getcaret). А вот как установить каретку в нужное место ?.

Procedure setline(WhichEdit:TRichedit;Linepos,charpos:integer);
Begin
with WhichEdit do  
begin

 
  selstart:=perform(EM_LineIndex,Linenum,0)+charpos;  
  perform(EM_ScrollCaret,0,0);  
end;  
end;

Комментарии:
Если Вам не нужно, чтобы происходил скроллинг к позиции каретки, то EM_ScrollCaret можно убрать. Эта процедура так же может быть использована для TMemo, только надо будет заменить объявление witchedit на TMemo:
Procedure CustomMemoSetline(WhichEdit:TCustomMemo;Linepos,charpos:integer);

Так же эту процедуру можно использовать как ответ на вопрос "Как установить фокус на определённую строку в компоненте Memo ?". Для этого необходимо добавить следующий код после строки selstart:
sellength:=length(lines(line));
И установить charpos в 0.

RichEdit должен иметь фокус, иначе em_ScrollCaret не сработает.

Взято с Исходников.ru



Содержание раздела