Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Как узнать количество видимых строчек в TMemo

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

Как узнать количество видимых строчек в TMemo

Вот пример подсчёта видимых строк:


function LinesVisible(Memo: TMemo): integer;
var
  OldFont : HFont;
  Hand : THandle;
  TM : TTextMetric;
  Rect : TRect;
  tempint : integer;
begin
  Hand := GetDC(Memo.Handle);
  try
    OldFont := SelectObject(Hand, Memo.Font.Handle);
    try
      GetTextMetrics(Hand, TM);
      Memo.Perform(EM_GETRECT, 0, longint(@Rect));
      tempint := (Rect.Bottom - Rect.Top) div
      (TM.tmHeight + TM.tmExternalLeading);
    finally
      SelectObject(Hand, OldFont);
    end;
  finally
    ReleaseDC(Memo.Handle, Hand);
  end;
  Result := tempint;
end;

Текстовый код, который вы предоставили, является функцией под названием LinesVisible, которая рассчитывает количество видимых строк в контроле TMemo (текстовом компоненте).

Вот что она делает:

  1. Она получает handle контекста устройства (Hand) для контрола memo с помощью GetDC.
  2. Она выбирает текущую шрифт (OldFont) из контекста устройства и сохраняет ее исходное состояние.
  3. Она получает метрики текста (TM) с помощью GetTextMetrics, которые предоставляют информацию о шрифте,such as the height of a line (tmHeight).
  4. Она получает прямоугольник, содержащий текст контрола memo, вызывая функцию Windows API EM_ GETRECT и хранит его в переменной Rect.
  5. Она рассчитывает количество видимых строк, разделив высоту прямоугольника минус его верхнюю границу (Bottom - Top) на сумму высоты строки и внешнего leading (tmHeight + tmExternalLeading). Это дает целочисленное значение, представляющее собой количество полных строк, которые могут поместиться в прямоугольнике.
  6. Наконец, она освобождает handle контекста устройства с помощью ReleaseDC и возвращает рассчитанное значение как результат.

Чтобы использовать эту функцию, вы бы вызвали ее с ссылкой на ваш контрол TMemo как аргумент:

var
  MyMemo: TMemo;
begin
  LinesVisible(MyMemo);
end;

Этот код вернет целочисленное значение, представляющее собой количество видимых строк в контроле memo.

Функция LinesVisible возвращает количество видимых строк в компоненте TMemo, подсчитывая высоту области отображения и учитывая параметры шрифта.


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


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



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


реклама



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

Время компиляции файла: 2024-05-10 07:13:18
2024-05-19 17:10:42/0.010422945022583/2