AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Länge eines Strings in Pixel ermitteln (ohne Komponenten) ?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Thomas233 · begonnen am 17. Sep 2005 · letzter Beitrag vom 18. Sep 2005
Antwort Antwort
Thomas233

Registriert seit: 20. Feb 2004
Ort: Villach
66 Beiträge
 
Delphi 2005 Personal
 
#1

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

  Alt 17. Sep 2005, 21:26
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
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#2

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

  Alt 17. Sep 2005, 22:00
Guck mal (im PSDK) nach GetTextExtentPoint32

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

Registriert seit: 20. Feb 2004
Ort: Villach
66 Beiträge
 
Delphi 2005 Personal
 
#3

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

  Alt 17. Sep 2005, 22:32
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
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#4

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

  Alt 17. Sep 2005, 22:39
hi,

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

aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#5

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

  Alt 17. Sep 2005, 22:43
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 von Aenogym:
der volsltädigkeit halber möchte icha uch noch Delphi-Referenz durchsuchenTCanvas.TextWidth() erwähnen
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#6

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

  Alt 17. Sep 2005, 22:56
http://www.dsdt.info/tutorials/nonvcl/?page=5

...mal was zum abschauen.

// 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
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#7

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

  Alt 17. Sep 2005, 23:50
Zitat von turboPASCAL:
Igitt. Lieber nicht. Das sind Jugendsünden ...
  Mit Zitat antworten Zitat
Thomas233

Registriert seit: 20. Feb 2004
Ort: Villach
66 Beiträge
 
Delphi 2005 Personal
 
#8

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

  Alt 18. Sep 2005, 14:37
Oooppsss....schlim sowas, wie konnte ich DAS nur vergessen *indenbodenschäm* !?!

Es scheitert halt immer am einfachsten

Vielen vielen Dank !

Liebe Grüße,
Thomas
  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 12:03 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