Para hallar el número de línea (basado en 0) en donde se encuantra el cursor:
Código:
Line := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, -1, 0);
Una vez que tienes la línea, para seleccionarla necesitas saber el primer y último caracter (su índice basado en el comienzo de todo el texto del Memo):
Código:
StartChar := SendMessage(Memo1.Handle, EM_LINEINDEX, Line, 0);
EndChar := SendMessage(Memo1.Handle, EM_LINEINDEX, Line + 1, 0);
y usar las propiedades SelStart y SelLength del Memo.
Todo junto lo podrías poner en el evento OnClick del Memo:
Código:
procedure TForm1.Memo1Click(Sender: TObject);
var
Line: Integer;
StartChar, EndChar: Integer;
begin
Line := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, -1, 0);
StartChar := SendMessage(Memo1.Handle, EM_LINEINDEX, Line, 0);
EndChar := SendMessage(Memo1.Handle, EM_LINEINDEX, Line + 1, 0);
Memo1.SelStart := StartChar;
Memo1.SelLength := EndChar - StartChar;
end;
// Saludos