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