Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Alternative zu Canvas.TextWidth (https://www.delphipraxis.net/35154-alternative-zu-canvas-textwidth.html)

Alex_ITA01 3. Dez 2004 10:25


Alternative zu Canvas.TextWidth
 
Hallo erstmal,
ich wollte mal wissen, ob es eine Möglichkeit gibt, auf die "Textweite" zu kommen ohne Canvas.TextWidth?!
Ich befinde mich in einer Komponente die keine Canvas-Eigenschaft hat daher wollte ich wissen ob es da vielleicht irgendwas anderes gibt, oder eine eigene Funktion geschrieben werden muss?!

MFG Alex

Orbmu2k 3. Dez 2004 10:51

Re: Alternative zu Canvas.TextWidth
 
japp bau dir doch ne Funktion der du deinen Font§Text übegibst die das auf einen Selbsterstellten Canvas anwendet und die TextWidth auswertet und zurückgibt.

OLLI_T 3. Dez 2004 11:18

Re: Alternative zu Canvas.TextWidth
 
Wozu Canvas? Die VCL nutzt auch nur die WINAPI Funktion: GetTextExtentPoint32

Alex_ITA01 3. Dez 2004 12:23

Re: Alternative zu Canvas.TextWidth
 
GetTextExtentPoint32 <-- genau sowas suchte ich...
Wusste nur nicht wie die Funktion in der API heißt..
MFG ALex

eddy 3. Dez 2004 13:49

Re: Alternative zu Canvas.TextWidth
 
Hallo OLLI_T,

hast Du mal auch noch einen Programmschnipsel als Beispiel für die Benutzung? (Der Hilfetext hilft mir nicht so richtig weiter)

mfg
eddy

SirThornberry 3. Dez 2004 13:52

Re: Alternative zu Canvas.TextWidth
 
Du wirst ein Fonthandle etc. verwenden müssen da die Textbreite von der Schriftart, -größe etc. abhängt. In der Codelib befindet sich dazu auch eine funktion der du den Text übergibst und ein TFont-Object

shmia 3. Dez 2004 14:10

Re: Alternative zu Canvas.TextWidth
 
Delphi-Quellcode:
function TrueFontWidth(fnt: TFont; const text:string): Integer;
var
   dc: hdc;
   tsize : Windows.TSize;
begin
   dc := GetDC(0);
   SelectObject(DC, fnt.Handle);
   GetTextExtentPoint32(dc, PChar(text), Length(text), tsize);
   ReleaseDC(0, DC);
   Result := tsize.cx;
end;

eddy 3. Dez 2004 15:15

Re: Alternative zu Canvas.TextWidth
 
Hallo shmia,

vielen Dank für das Beispiel. Damit kann ich doch mehr anfangen.

mfg
eddy


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