Как узнать местонахождение курсора в TMemo.
Как узнать местонахождение курсора в TMemo.
Как узнать местонахождение курсора в TMemo. Для этого можно использовать messages EM_LINEFROMCHAR and EM_LINEINDEX из Windows API: {любая функция или процедура} var LineNum: longint; CharsBeforeLine: longint; begin LineNum := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, Memo1.SelStart,0);{посылка сообщения, возвращающая номер строки} CharsBeforeLine := SendMessage(Memo1.Handle, EM_LINEINDEX, LineNum, 0));{посылка сообщения, возвращающая номер столбца} Label1.Caption := 'Line ' + IntToStr(LineNum +1);{вывод номера строки} Label2.Caption := 'Position ' + IntToStr((Memo1.SelStart -CharsBeforeLine) + 1);{вывод номера столбца} end; *************************************************************** Как определить, на какой строке в TMemo находится курсор? Весь фокус в сообщении em_LineFromChar. Попробуйте: procedure TMyForm.BitBtn1Click(Sender: TObject); var iLine : Integer ; begin iLine := Memo1.Perform(em_LineFromChar, $FFFF, 0); { Внимание: номера строк начинаются с нуля } messageDlg('Line Number: ' + IntToStr(iLine), mtInformation, [mbOK], 0 ) ; end;