AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DrawTextEx und "1"#13#10

Ein Thema von hoika · begonnen am 24. Aug 2016 · letzter Beitrag vom 27. Aug 2016
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#1

DrawTextEx und "1"#13#10

  Alt 24. Aug 2016, 10:25
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?
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: DrawTextEx und "1"#13#10

  Alt 24. Aug 2016, 14:47
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.

Gibt es ein AutoLineBreak? (maximale Breite des CalcRects)
Wenn nicht, dann einfach (1 + CountLineBreaks(DeinText)) * TextHeight('X') .
$2B or not $2B

Geändert von himitsu (24. Aug 2016 um 14:56 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: DrawTextEx und "1"#13#10

  Alt 26. Aug 2016, 16:47
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.
Heiko

Geändert von hoika (26. Aug 2016 um 16:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: DrawTextEx und "1"#13#10

  Alt 27. Aug 2016, 00:50
dass ich vor der Berechnung prüfe,
ob #13#10 die vorletzte Position im String ist
Einfach immer Delphi-Referenz durchsuchenTrimRight machen?
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 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