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

Как получить координаты курсора в memo-поле?

01.01.2007
procedure CaretPos(H: THandle; var L,C : Word); 
begin
  L
:= SendMessage(H,EM_LINEFROMCHAR,-1,0);
  C
:= LoWord(SendMessage(H,EM_GETSEL,0,0)) - SendMessage(H,EM_LINEINDEX,-1,0);
end;
 
procedure TForm1
.Button1Click(Sender: TObject);
var
 
LineNum,ColNum : Word;
begin
 
CaretPos(Memo1.Handle,LineNum,ColNum);
  Edit1
.Text := IntToStr(LineNum) + '  ' + IntToStr(ColNum);
end;

Хотя в Delphi 5 свойство CaretPos уже включено в memo.

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


Как получить номер строки memo, в которой находится курсор?

Для этого необходимо послать сообщение EM_LINEFROMCHAR.

LineNumber :=   Memo1.Perform(EM_LINEFROMCHAR, -1, 0);

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


var
  X
, Y: LongInt;
begin
  Y
:= Memo1.Perform(EM_LINEFROMCHAR, Memo1.SelStart, 0);
  X
:= Memo1.Perform(EM_LINEINDEX, Y, 0);
  inc
(Y);
  X
:= Memo1.SelStart - X + 1;
  Form1
.Caption := 'X = ' + IntToStr(X) + ' : ' + 'Y = ' + IntToStr(Y);
end;
 
https://delphiworld.narod.ru/

DelphiWorld 6.0