Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi memo zeilen anzahl?!! (https://www.delphipraxis.net/61638-memo-zeilen-anzahl.html)

polondo 24. Jan 2006 09:32


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?!?!

Sharky 24. Jan 2006 10:14

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:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := Format('Es sind %d Zeilen im Memo',[Memo1.Lines.Count]);
end;
Der code sagt mir das im Memo zwei Zeilen stehen wenn ich den Text solange schreibe das er wegen WordWrap umgebrochen wurde.

DP-Maintenance 24. Jan 2006 10:15

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Object-Pascal / Delphi-Language" nach "VCL / WinForms / Controls" verschoben.
Memo -> VCL-Controll *G*

polondo 24. Jan 2006 10:56

Re: memo zeilen anzahl?!!
 
Danke erstmal für die Antwort! Leider hab ich auch mit dem Format-Befehl nicht alle tatsächlichen Zeilen... :/

tomsel 24. Jan 2006 11:13

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?)

Lannes 24. Jan 2006 11:53

Re: memo zeilen anzahl?!!
 
Hallo,
Zitat:

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 :zwinker:

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 04:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz