15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту




Как узнать количество видимых строчек в 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;