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

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

Пример:

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