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 TStringGrid. Zeilenumbruch. Langer Text, wie #13#10 einfügen (https://www.delphipraxis.net/136202-tstringgrid-zeilenumbruch-langer-text-wie-13-10-einfuegen.html)

Jackie1983 25. Jun 2009 12:56


TStringGrid. Zeilenumbruch. Langer Text, wie #13#10 einfügen
 
Servus,

ich möchte gerne das wenn der Text die Länge von Zelle 3 überschreitet ein Zeilenumbruch eingefügt wird.
Jetzt habe ich mal geschaut wie ich einen Zeilenumbruch hinbekomme, das ist kein Problem.

Nur der Text macht mir ein wenig gedanken, weil ich nicht weis wie ich es umsetzen kann.
So sieht es zur zeit in der Draw Methode aus
Delphi-Quellcode:
      if ACol = 3 then
      begin
        if length(CellText) > sgMonitor.ColWidths[3] then
        begin
          Insert(#13#10,CellText,sgMonitor.ColWidths[3]-1);
          RowHeights[ARow] := DefaultRowHeight * 2;
        end;
        DrawText(canvas.Handle, PChar(CellText), Length(CellText), Rect, DT_left+DT_Vcenter);
      end else
        Canvas.TextOut(rect.left,rect.top+1,cells[acol,arow])
Aber jetzt mache ich ja nur einen Zeilenumbruch, was ist aber wenn die zweite Zeile auch zu lang ist dann brauche ich noch einen umbruch.

Hatte mit das irgend wie so gedacht.
Zitat:

Lange = RichtigeLangeVomText(Text);
solange wie textzelle <> ''
begin
liste.add(copy(textzelle,1,LangeZelle))
delete(textzelle,1,LangeZelle)
end;
dann kann es aber auch passieren das mitten im Text ein Zeilenumbruch eingefügt werden...
Habt ihr vielleicht ne Idee...

Mfg

Gollum 25. Jun 2009 13:13

Re: TStringGrid. Zeilenumbruch. Langer Text, wie #13#10 einf
 
Hallo,

wie wäre es damit?

Zitat:

Zitat von windows SDK
DT_CALCRECT
Determines the width and height of the rectangle. If there are multiple lines of text, DrawText uses the width of the rectangle pointed to by the lpRect parameter and extends the base of the rectangle to bound the last line of text. If there is only one line of text, DrawText modifies the right side of the rectangle so that it bounds the last character in the line. In either case, DrawText returns the height of the formatted text but does not draw the text.


Lannes 25. Jun 2009 13:33

Re: TStringGrid. Zeilenumbruch. Langer Text, wie #13#10 einf
 
Hallo,

ja, berechnen der Gesamt-Ausgabehöhe mit DT_CALCRECT.

Bei Textausgaben mit Zeilenumbrüchen ist die Konstante DT_WORDBREAK sehr hilfreich.

Jackie1983 25. Jun 2009 13:55

Re: TStringGrid. Zeilenumbruch. Langer Text, wie #13#10 einf
 
ok habe es hinbekommen, war ja doch recht einfach.... thx


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 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