Консультация № 18126
11.03.2005, 06:44
0.00 руб.
0 2 2
Вслед вопросу 18124. С кодировками действительно путаница. Наверное в консерватории надо что-то подправить. Вопрос - уважаемые эксперты, как в TMemo без сложных вычислений получить номер строки текста, в которой находится курсор?

Обсуждение

Неизвестный
11.03.2005, 10:06
общий
это ответ
Здравствуйте, Alex Voit!
Если мне не изменяет память, то в TMemo - никак.
Используй TRichEdit:

Приложение:
uses ..., RichEdit;...varpos: TPoint;begin Pos.Y := SendMessage(RichEdit.Handle, EM_EXLINEFROMCHAR, 0, RichEdit.SelStart); Pos.X := (RichEdit.SelStart - SendMessage(RichEdit.Handle, EM_LINEINDEX, Pos.Y, 0)); inc(Pos.X); inc(Pos.Y); ShowMessage(Inttostr(Pos.X) + ‘; ‘ + inttostr(Pos.Y));
Неизвестный
11.03.2005, 13:37
общий
это ответ
Здравствуйте, Alex Voit!
Есть такое свойство CaretPos. Пример в приложении.
Интересно отметить, что в CLX у Мемо есть свойство Selection типа
type
TMemoSelection = record
case Integer of
0: (Line1, Col1, Line2, Col2: Integer);
1: (TopLeft, BottomRight: TCaretPos);
end;
а в VCL - нет

Приложение:
procedure TForm1.Memo1Click(Sender: TObject);begin Label1.Caption:=Format(‘X: %d Y: %d‘, [Memo1.CaretPos.x, Memo1.CaretPos.y]);end;
Форма ответа