![]() |
memo zeilen anzahl?!!
hi ich habe folgendes problem:
ich versuche in einer Qrmemo auf meinem Quickreport die Zeilenanzahl auszulesen. Ich habe dazu schon memo.lines.count versucht allerdings liest der mir die Anzahl der Zeilen nicht so aus wie ich das möchte. Wenn ich also einen Text in die Memo schreibe der mittels wordwrap über zwei Zeilen geht, dann bekomme ich mit 'count' nicht 2 Zeilen zurück sonder nur 1. Wie kann ich dem sagen das der unabhängig davon ob die Zeilen zusammenhängen oder nicht, mir eine 2 zurückgibt?!?! |
Re: memo zeilen anzahl?!!
Hai polondo,
bei einem normalem TMemo funktioniert das bei mir. Mit einem TQRMemo kann ich es leider nicht testen.
Delphi-Quellcode:
Der code sagt mir das im Memo zwei Zeilen stehen wenn ich den Text solange schreibe das er wegen WordWrap umgebrochen wurde.
procedure TForm1.Button1Click(Sender: TObject);
begin Label1.Caption := Format('Es sind %d Zeilen im Memo',[Memo1.Lines.Count]); end; |
DP-Maintenance
Dieses Thema wurde von "Sharky" von "Object-Pascal / Delphi-Language" nach "VCL / WinForms / Controls" verschoben.
Memo -> VCL-Controll *G* |
Re: memo zeilen anzahl?!!
Danke erstmal für die Antwort! Leider hab ich auch mit dem Format-Befehl nicht alle tatsächlichen Zeilen... :/
|
Re: memo zeilen anzahl?!!
Der Format-Befehl ist doch hier nur Nebensache. Lines.Count liefert allerdings auf jeden Fall die tatsächliche Zeilenanzahl, der Fehler muss anderswo liegen (vieleicht das falsche Memo, wenn's mehrere gibt?)
|
Re: memo zeilen anzahl?!!
Hallo,
Zitat:
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))); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz