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

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

  • viagra the team http://gtviagracan.com - viagra for men for sale what is viagra used for viagra for sale - viagra without a prescription filitra
  • игровые автоматы без регистрации игровые автоматы играть бесплатно  игровые автоматы на деньги игровые автоматы играть бесплатно  игровые автоматы онлайн igrovieqlo игровые автоматы без регистрации игровые автоматы без регистрации игровые автоматы на деньги игровые автоматы бесплатно игровые...
  • Alien Robots r en av v rldens b https://1e6c1ee26.weebly.com/blog/cleopatra-spelautomater Novomatic casinon och dess b sta slots. BanksВ and financial institutions from https://8145fb20d.weebly.com/blog/svenska-casinon talar om n r man pratar slots p n tet. As we've mentioned with other games that...

Счетчики