Home » Tipps & Tricks » Komponenten » TRichEdit/TMemo/TEdit » Sichtbare Zeilen in TMemo ermitteln

Sichtbare Zeilen in TMemo ermitteln

Folgende Funktion erwartet als Parameter ein Objekt vom Typ TMemo. Es wird dann die Anzahl der sichtbaren Zeilen unter Berücksichtigung der aktuellen Schrifteinstellungen zurückgegeben.

function CountVisibleLines(const Memo: TMemo): Integer;
Var
  OldFont: HFont;
  DC: THandle;
  TextMetric: TTextMetric;
begin
  Result := 0;

  DC := GetDC(Memo.Handle);
  try
    OldFont := SelectObject(DC, Memo.Font.Handle);
    try
      GetTextMetrics(DC, TextMetric);
      Result := (Memo.ClientRect.Bottom - Memo.ClientRect.Top) div
               (TextMetric.tmHeight + TextMetric.tmExternalLeading);
    finally
      SelectObject(DC, OldFont);
    end;
  finally
    ReleaseDC(Memo.Handle, DC);
  end;
end;

Ändert man den Parameter vom Typ TMemo in TRichEdit, funktioniert die Funktion auch mit RichEdit-Feldern.