Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Позиция курсора в TRichEdit

01.01.2007

Так как вопрос давольно часто поднимается в форумах, то хотелось бы привести ответ на него. Итак, как же получить текущие координаты курсора (Row и Col) в TRichEdit ?

Вот пример решения данной проблемы:

Procedure TForm1.GetPosition(Sender: TRichEdit);
var
  iX
,iY  : Integer;
 
TheRichEdit : TRichEdit;
begin
  iX
:= 0; iY := 0;
 
TheRichEdit := TRichEdit(Sender);
  iY
:= SendMessage(TheRichEdit.Handle, EM_LINEFROMCHAR, TheRichEdit.SelStart,
 
0);
  iX
:= TheRichEdit.SelStart - SendMessage(TheRichEdit.Handle, EM_LINEINDEX,
  iY
, 0);
  Panel1
.Caption := IntToStr(iY + 1) + ':' + IntToStr(iX + 1) ;
end;
 
procedure TForm1
.RichEditMouseDown(Sender: TObject;
 
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 
GetPosition(RichEdit);
end;
 
procedure TForm1
.RichEditKeyUp(Sender: TObject; var Key: Word;
 
Shift: TShiftState);
begin
 
GetPosition(RichEdit);
end;

Взято из https://forum.sources.ru