Как получить позицию курсора в компоненте 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);

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

  • http://www.jinmeifood.com/home.php?mod=space&uid=102831 http://www.shouyou9.net/home.php?mod=space&uid=63850 http://partphoto.com/home.php?mod=space&uid=162731 http://dle1.prestashop-studio.ru/user/AlexisTresy/ http://bbs.daxgame.com/home.php?mod=space&uid=252568 http://www.xc2.info...
  • http://www.0757py.com/space-uid-538380.html http://finansy.su/user/RogelioDaw/ http://siwa8.info/home.php?mod=space&uid=71258 http://legfilm.ru/user/Georgebok/ http://mykazan.ru/dark/profile.php?id=245822 http://bbs.pcboard.cn/space-uid-24717.html https://www.igrimace.com/bbs/home.php?mod=space...
  • http://bbs.beidouauto.com/space-uid-316427.html http://dwww.shumo.com/forum/home.php?mod=space&uid=443584 http://www.myweboasis.com/messageboard/index.php?action=profile;u=500366 http://666weixiu.com/home.php?mod=space&uid=512906 http://www.shouyou45.com/space-uid-90072.html http://hhnysq....

Счетчики