Hallo,
Zitat von
tomsel:
...Lines.Count liefert allerdings auf jeden Fall die tatsächliche Zeilenanzahl, der Fehler muss anderswo liegen...
der Fehler liegt beim QRMemo, denn Lines.Count gibt
nicht die Anzahl der umgebrochenen Zeilen aus
mit dem Code lassen sich die fehlenden Informationen ermitteln:
Delphi-Quellcode:
var z,CW,H,LinesH,TextH : Integer;
aRect : TRect;
B : TBitMap;
begin
B := TBitmap.Create;
B.Canvas.Font := QRMemo1.Font;
LinesH := B.Canvas.TextHeight('Test-String');
CW := QRMemo1.ClientWidth;
H := 0;
TextH := 0;
for z := 0 to QRMemo1.Lines.Count-1 do
begin
aRect.Right := CW;
H := DrawText(B.Canvas.handle,PChar(QRMemo1.Lines[z]),Length(QRMemo1.Lines[z]),aRect,DT_CALCRECT or DT_WORDBREAK or DT_NOCLIP);
TextH := TextH+H;
end;
B.Free;
showmessage('Die ermittelte Texthöhe: '+IntToStr(TextH)+#13#10
+'Zeilen: '+IntToStr(Round(TextH/LinesH)));