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/)
-   -   Delphi DrawText mit CALC_RECT (https://www.delphipraxis.net/27834-drawtext-mit-calc_rect.html)

Gruber_Hans_12345 16. Aug 2004 13:42


DrawText mit CALC_RECT
 
Hallo

Weisz wer warum folgender Code nicht so funktioniert wie er sollte ?

temp is ein TRect mit (0, 0, 200, 1000);

danach sollte ja eigentlich der Rückgabewert die Höhe des Textes in Pixel sein oder ?

Leider bekomme ich nur die Höhe ohne (DT_WORDBREAK) also alle manuellen Zeilenumbrüche sind berücksichtugt, und die breite des TRect wurde angepasst.
Abert laut Doku sollte das ja nicht sein, wenn ich DT_CALCRECT verwende.

Delphi-Quellcode:
DrawTextEx(Canvas.Handle, PChar(Kommentar), length(Kommentar), temp, DT_CALCRECT or DT_WORDBREAK, nil);
Hoffe mir kann jemand weiterhelfen.

Gruss
Hans

w3seek 16. Aug 2004 15:10

Re: DrawText mit CALC_RECT
 
deine temp.bottom wurde durch die Funktion veraendert.

Gruber_Hans_12345 16. Aug 2004 15:21

Re: DrawText mit CALC_RECT
 
Laut Doku sollte die Rect struktur geändert werden, und die Höhe zurückgegeben werden.
Aber es wird nur die Höhe berechnet, die die fixen Zeilenumbrüche benötigt zurückgeben, und die Breite des Rect verändert.
(Aber die Breite sollte eigentlich fix bleiben oder ?)

Irgendwie siehts aus als ob DT_WORDBREAK nicht oder nicht mit DT_CALCRECT funktioniert !

Gruss
Hans

w3seek 16. Aug 2004 15:25

Re: DrawText mit CALC_RECT
 
Ich hab leider nicht die Beschreibung der Funktion im Kopf (und bin gerade zu faul nachzulesen) aber soweit ich mich erinnere berechnet CalcRect (ohne DT_SINGLELINE) nur die Hoehe des Textes. ist DT_SINGLELINE gegeben dann wird die Breite und Hoehe des Textes berechnet. Der Rueckgabewert ist wenn ich mich richtig erinnere, die Hoehe, ja.

w3seek 16. Aug 2004 15:27

Re: DrawText mit CALC_RECT
 
Zitat:

Zitat von Gruber_Hans_12345
(Aber die Breite sollte eigentlich fix bleiben oder ?)

Eigentlich ja, solange DT_SINGLELINE nicht gesetzt ist.

Zitat:

Zitat von Gruber_Hans_12345
Irgendwie siehts aus als ob DT_WORDBREAK nicht oder nicht mit DT_CALCRECT funktioniert !

Ich hab dieses Flag bisher nie gebraucht aber sollte eigentlich funktionieren.

Gruber_Hans_12345 16. Aug 2004 20:18

Re: DrawText mit CALC_RECT
 
Entweder bin ich zu blöd, und übersehe was, oder das funkt unter XP SP1 nicht (habs noch nicht mit anderen Systemen Probiert, aber wenn's unter XP nicht funktioniert ....)

Hans


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:06 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 by Thomas Breitkreuz