var
pt: TPoint;
begin
with richedit1 do
begin
Perform(messages.EM_POSFROMCHAR, WPARAM(@pt), selstart);
label1.caption := Format('(%d, %d)', [pt.x, pt.y]);
end;
end;
{TMemo and TEdit}
var
r: LongInt;
begin
with memo1 do
begin
r := Perform(messages.EM_POSFROMCHAR, selstart, 0);
if r >= 0 then
begin
label1.caption := IntToStr(HiWord(r));
label2.caption := IntToStr(LoWord(r));
end;
end;
end;
Код, который вы предоставили, написан на языке Pascal, конкретно для программирования с использованием Delphi.
Вот подробное описание того, что каждый участок кода делает:
RichEdit-контроль
Переменная pt объявлена как типа TPoint, который представляет собой 2D-точку с координатами x и y.
Внутри блока with richedit1 do:
Вызывается метод Perform для получения позиции курсора в логических единицах (например, пикселях) из RichEdit-контроля. Параметр selstart указывает на характер, где находится курсор.
Результаты координат хранятся в переменной pt.
Функция Format используется для создания строки, которая отображает координаты позиции курсора в формате "(x, y)". Эта строка затем присваивается свойству Caption контрола Label, именуемого label1.
Memo-контроль
Переменная r объявлена как целочисленное значение.
Внутри блока with memo1 do:
Вызывается метод Perform для получения позиции курсора в логических единицах (например, пикселях) из Memo-контроля. Параметр selstart указывает на характер, где находится курсор.
Если результат не отрицательный (r >= 0), то это означает, что курсор находится в валидной позиции внутри Memo-контроля. В этом случае:
Высокая часть результата извлекается с помощью функции HiWord и конвертируется в строку с помощью функции IntToStr. Это значение представляет собой координату y.
Низкая часть результата извлекается с помощью функции LoWord и конвертируется в строку с помощью функции IntToStr. Это значение представляет собой координату x.
Результаты координат (x, y) затем присваиваются свойствам Caption контролов Label, именуемых label1 и label2.
В целом, этот код получает физические координаты позиции курсора в пикселях для RichEdit-контроля или Memo-контроля.
Определение физических координат каретки в пикселях может быть выполнено с помощью методов EM_POSFROMCHAR и Perform для контроллеров RichEdit, Memo и Edit.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.