Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Länge eines Strings in Pixel ermitteln (ohne Komponenten) ? (https://www.delphipraxis.net/53503-laenge-eines-strings-pixel-ermitteln-ohne-komponenten.html)

Thomas233 17. Sep 2005 21:26


Länge eines Strings in Pixel ermitteln (ohne Komponenten) ?
 
Hallo,

kann mir einer von euch vielleicht verraten wie man die Länge eines Strings in Pixel errechnen kann (bei einem vorgegebenem Font-Namen) ?

Ich greife dabei auf keine Komponenten zurück, d.h. meine Anwendung ist eine reine NonVCL-Anwendung (ansonsten hätte ich schon eine Lösung gefunden).

Für einen Tipp wäre ich sehr dankbar.

Vielen Dank im Vorraus !

Liebe Grüße,
Thomas

Phistev 17. Sep 2005 22:00

Re: Länge eines Strings in Pixel ermitteln (ohne Komponenten
 
Guck mal (im PSDK) nach GetTextExtentPoint32

/edit: Hab ich aus'm Delphi05-Quelltext, Graphics.pas:2615

Thomas233 17. Sep 2005 22:32

Re: Länge eines Strings in Pixel ermitteln (ohne Komponenten
 
Hallo,

vielen Dank, das dürfte weiterhelfen.

Das einzige Problem ist noch das ich nicht weiss wie ich eine Font (von der ich nur den Namen als String kenne) festlege der verwendet werden soll.

Momentan erledige ich dies so:
Delphi-Quellcode:
procedure TD3dText.CalcTextSize;
var textSize:TSize;
    dc:hdc;
    fnt:TFont;
begin
dc:=GetDc(0);
fnt.Name:=FontName; // Hier geschieht der Fehler !
SelectObject(DC, fnt.Handle);
GetTextExtentPoint32(dc,PChar(text),length(text),textSize);
end;
In der zweiten Zeile der Prozedur ("fnt.Name:=FontName") jedoch steigt Delphi mit einer Zugriffsverletzung aus. "FontName" ist der String in dem der Name der zu verwendenden Font drinnen steht.

Wie kann ich nun am besten die Font festlegen ?

Vielen Dank nochmals im Vorraus !

Liebe Grüße,
Thomas

Aenogym 17. Sep 2005 22:39

Re: Länge eines Strings in Pixel ermitteln (ohne Komponenten
 
hi,

der volsltädigkeit halber möchte icha uch noch Delphi-Referenz durchsuchenTCanvas.TextWidth() erwähnen ;)

aenogym

Phistev 17. Sep 2005 22:43

Re: Länge eines Strings in Pixel ermitteln (ohne Komponenten
 
Zitat:

Zitat von Thomas233
Ich greife dabei auf keine Komponenten zurück, d.h. meine Anwendung ist eine reine NonVCL-Anwendung (ansonsten hätte ich schon eine Lösung gefunden).

Zitat:

Zitat von Aenogym
der volsltädigkeit halber möchte icha uch noch Delphi-Referenz durchsuchenTCanvas.TextWidth() erwähnen

:roll:

turboPASCAL 17. Sep 2005 22:56

Re: Länge eines Strings in Pixel ermitteln (ohne Komponenten
 
http://www.dsdt.info/tutorials/nonvcl/?page=5

...mal was zum abschauen. :wink:

// Edit:

Code:
[b]procedure[/b] TD3dText.CalcTextSize;
[b]var[/b] textSize:TSize;
    dc:hdc;
    fnt:TFont;
[b]begin[/b]
  dc:=GetDc(0);
  [color=#ff0000]fnt.Name:=FontName; // Hier geschieht der Fehler ![/color]
  SelectObject(DC, fnt.Handle);
  GetTextExtentPoint32(dc,PChar(text),length(text),textSize);
[b]end;[/b]
Normalerweise müstest Du ja erst fnt := TFont.Create aufrufen damit fnt mit einem Font "gefüllt" wird.


Delphi-Referenz durchsuchenCreateFont

Olli 17. Sep 2005 23:50

Re: Länge eines Strings in Pixel ermitteln (ohne Komponenten
 
Zitat:

Zitat von turboPASCAL
http://www.dsdt.info/tutorials/nonvcl/?page=5

...mal was zum abschauen. :wink:

Igitt. Lieber nicht. Das sind Jugendsünden ... :oops:

Thomas233 18. Sep 2005 14:37

Re: Länge eines Strings in Pixel ermitteln (ohne Komponenten
 
Oooppsss....schlim sowas, wie konnte ich DAS nur vergessen *indenbodenschäm* !?! :oops: :oops: :oops:

Es scheitert halt immer am einfachsten ;-)

Vielen vielen Dank !

Liebe Grüße,
Thomas


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