DruckenMister WongFacebook

Sichtbare Zeilen in TMemo ermitteln

System Win9x, WinNT, Win2000, WinXP, Vista, Win7
Ab Delphi-Version Delphi 1
Letzte Änderung 28.09.2010

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.