Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   DrawTextEx und "1"#13#10 (https://www.delphipraxis.net/190045-drawtextex-und-1-13-10-a.html)

hoika 24. Aug 2016 09:25

DrawTextEx und "1"#13#10
 
Hallo,
ich versuche, dem DrawTextEx beizubringen,
dass er die Höhe bei '1'+#13#10 genauso wie bei '1'#13#10+' ' errechnet.

Die Funktion ist aber zu schlau ;)

Hintergrund
TAdvStringrid.AutoSizeRow benutzt DrawTextEx, um die Höhe der Zelle zu ermitteln.
Es handelt sich um fremde Daten, die ich darstellen muss,
und wenn da ein Umbruch ist, soll er auch dargestellt werden.

Im Moment behelfe ich mir mit einem künstlichen Leerzeichen vor dem AutoSizeRow,
wenn das letzte Zeichen des Textes ein #10 ist.

Geht das auch anders?

himitsu 24. Aug 2016 13:47

AW: DrawTextEx und "1"#13#10
 
Bezüglich der eventuell breiteren Breite ist es egal? (durch das Leerzeichen)
Ansonsten gibt es auch Zero-Width Whitespaces / 0-breite Leerzeichen (https://de.wikipedia.org/wiki/Breitenloses_Leerzeichen).

Für DrawTextEx+DT_CALCRECT ist die letzte Zeile halt 0 hoch, wenn da keine Zeichen drin sind.
Das ist wohl einfach so.
PS: Beim Delphi-IDE-Property-Editor sind die Zeilen auch 0 hoch (ClientHeight + einen Offest/Abstand zu den Trennlinien), wenn das Ding keinen Namen und keinen Value zum Anzeigen findet. :stupid:

Gibt es ein AutoLineBreak? (maximale Breite des CalcRects)
Wenn nicht, dann einfach
Delphi-Quellcode:
(1 + CountLineBreaks(DeinText)) * TextHeight('X')
.

hoika 26. Aug 2016 15:47

AW: DrawTextEx und "1"#13#10
 
Halo,
ich muss DrawTextEx benutzen, weil das das TAdvStringGrid intern auch macht.
Ich habe mich so jetzt beholfen, dass ich vor der Berechnung prüfe,
ob #13#10 die vorletzte Position im String ist und das in diesem Fall entferne.

himitsu 26. Aug 2016 23:50

AW: DrawTextEx und "1"#13#10
 
Zitat:

Zitat von hoika (Beitrag 1345865)
dass ich vor der Berechnung prüfe,
ob #13#10 die vorletzte Position im String ist

Einfach immer Delphi-Referenz durchsuchenTrimRight machen?


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