Как получить позицию курсора в компоненте TMemo?

В компоненте TMemo предусмотрено получение позиции курсора через механизм сообщений. Для получения позиции необходимо послать два сообщения. Первое -

LineNum := Memo1.Perform(EM_LINEFROMCHAR, Memo1.SelStart, 0);

для получения номера строки в которой находится курсор. И второе -

CharNum := Memo1.Perform(EM_LINEINDEX, LineNum, 0);

для получения позиции курсора в заданной строке. Будте внимательны, так как номер строки и позиция в строке отсчитываются от нуля.

Пример:

{Получаем позицию курсора при щелчке мыши на компоненте}
procedure TForm1.Memo1Click(Sender: TObject); 
VAR 
 
 LineNum : LongInt; 
 CharNum : LongInt; 
 
begin 
 
 {Получаем номер строки}
 LineNum := Memo1.Perform(EM_LINEFROMCHAR, Memo1.SelStart, 0); 
 {Получаем позицию в строке}
 CharNum := Memo1.Perform(EM_LINEINDEX, LineNum, 0); 
 {Выводим позицию на экран}
 Label1.Caption := IntToStr(LineNum+1)+' : '+
 
 IntToStr((Memo1.SelStart-CharNum)+1); 
 
end;
 
............ 
 
{Получаем позицию курсора при отпускании клавиши на клавиатуре}
procedure TForm1.Memo1KeyUp(Sender: TObject; 
                             var Key: Word; Shift: TShiftState); 
begin 
 
 Memo1Click(Self); 
 
end;

Отправил Гость Пнд, 04/27/2015 - 22:44

почему то первая цифра в Label1 всегда = 1
а вторая меняется от 1(когда курсор в самом верху в 1 позиции) до ...пока memo не закончится

Отправил Гость Пнд, 04/27/2015 - 22:50

не проще ли так
Label1.Caption := IntToStr(Memo1.CaretPos.y)+' : '+
IntToStr(Memo1.CaretPos.x);

Последние комментарии

  • Отправка Вашего сообщения в более чем 1 200 000 форм обратной связи России Это отправка по формам с сайтов в разделе контакты, которые заполняются нашим роботом. Далее письмо с вашим предложением приходит на контактный E-mail организации. При отправку через форму каждый сайт отправляет сообщение...
  • Здравствуйте, меня зовут Пакалов Алексей, я являюсь руководителем Благотворительного Фонда Помоги Детям http://pomogi-detjam.ru Мы занимаемся помощью детям-сиротам, детям-инвалидам,детям из неблагополучных семей,основным родом нашей деятельности являются дети больные детским церебральным параличом....
  • shopg39 shopg81 shopg82 shopg42 shopg63 Добро пожаловать в сексшоп алматы shopg24 shopg68 shopg29 shopg88 shopg36

Счетчики