Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как узнать физические координаты каретки в пикселях?

Delphi , Компоненты и Классы , TMemo и TRichEdit

Code:
{TRichEdit}
 
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;

 Взято с Delphi Knowledge Base: http://www.baltsoft.com/

Код, который вы предоставили, написан на языке Pascal, конкретно для программирования с использованием Delphi.

Вот подробное описание того, что каждый участок кода делает:

RichEdit-контроль

  1. Переменная pt объявлена как типа TPoint, который представляет собой 2D-точку с координатами x и y.
  2. Внутри блока with richedit1 do:
    • Вызывается метод Perform для получения позиции курсора в логических единицах (например, пикселях) из RichEdit-контроля. Параметр selstart указывает на характер, где находится курсор.
    • Результаты координат хранятся в переменной pt.
  3. Функция Format используется для создания строки, которая отображает координаты позиции курсора в формате "(x, y)". Эта строка затем присваивается свойству Caption контрола Label, именуемого label1.

Memo-контроль

  1. Переменная r объявлена как целочисленное значение.
  2. Внутри блока with memo1 do:
    • Вызывается метод Perform для получения позиции курсора в логических единицах (например, пикселях) из Memo-контроля. Параметр selstart указывает на характер, где находится курсор.
    • Если результат не отрицательный (r >= 0), то это означает, что курсор находится в валидной позиции внутри Memo-контроля. В этом случае:
      • Высокая часть результата извлекается с помощью функции HiWord и конвертируется в строку с помощью функции IntToStr. Это значение представляет собой координату y.
      • Низкая часть результата извлекается с помощью функции LoWord и конвертируется в строку с помощью функции IntToStr. Это значение представляет собой координату x.
  3. Результаты координат (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




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TMemo и TRichEdit ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 09:52:12/0.0059518814086914/0