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

Получить первую или последнюю видимую строку в TRichEdit

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

Получить первую или последнюю видимую строку в TRichEdit

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

function RE_GetLastVisibleLine(RichEdit: TRichEdit): Integer;
 const
   EM_EXLINEFROMCHAR = WM_USER + 54;
 var
   r: TRect;
   i: Integer;
 begin
   { 
   The EM_GETRECT message retrieves the formatting rectangle 
   of an edit control. 
  }
   RichEdit.Perform(EM_GETRECT, 0, Longint(@r));
   r.Left := r.Left + 1;
   r.Top  := r.Bottom - 2;
   { 
    The EM_CHARFROMPOS message retrieves information about the character 
    closest to a specified point in the client area of an edit control 
  }
   i := RichEdit.Perform(EM_CHARFROMPOS, 0, Integer(@r.topleft));
   { 
    The EM_EXLINEFROMCHAR message determines which 
    line contains the specified character in a rich edit control 
  }
   Result := RichEdit.Perform(EM_EXLINEFROMCHAR, 0, i);
 end;

 { 
  Sending the EM_GETFIRSTVISIBLELINE message to a multi-line edit control 
  finds out which line is the first line visible. 
  This is the line that is currently displayed at the top of the control. 
}

 function RE_GetFirstVisibleLine(RichEdit: TRichEdit): Integer;
 begin
   Result := RichEdit.Perform(EM_GETFIRSTVISIBLELINE, 0, 0);
 end;

Код, предназначенный для извлечения первой или последней видимой строки в контроле TRichEdit.

В коде реализованы две функции: RE_GetLastVisibleLine и RE_GetFirstVisibleLine. Каждая из этих функций использует специальные сообщения Windows для достижения своих целей.

  1. RE_GetLastVisibleLine: Функция находит последнюю видимую строку, выполняя три операции:
    • Она получает прямоугольник форматирования контрола редактирования с помощью сообщения EM_GETRECT.
    • Она рассчитывает координаты верхней и левой границы прямоугольника, учитывая возможные рамки или отступы вокруг текста.
    • Затем она использует сообщение EM_CHARFROMPOS для поиска символа, ближайшего к указанному точке (в этом случае - нижнему-левому углу прямоугольника).
    • Наконец, она использует сообщение EM_EXLINEFROMCHAR для определения, на какой строке находится этот символ, и возвращает результат как номер последней видимой строки.
  2. RE_GetFirstVisibleLine: Функция намного проще. Она напрямую отправляет сообщение WM_USER + 1 (которое соответствует сообщению EM_GETFIRSTVISIBLELINE) контролу редактирования, запрашивая номер первой строки, которая в данный момент отображается сверху контрола.

В целом, эти функции могут использоваться для определения статуса видимости строк в контроле TRichEdit. Функция RE_GetLastVisibleLine возвращает последнюю видимую строку, а функция RE_GetFirstVisibleLine возвращает первую видимую строку.

Определены функции для получения первой и последней видимых строк в компоненте TRichEdit.


Комментарии и вопросы

Получайте свежие новости и обновления по 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:20:09/0.0059080123901367/0