AGB  ·  Datenschutz  ·  Impressum  







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

Texthöhe berechnen (mit Zeilenumbruch)

Ein Thema von TheMiller · begonnen am 4. Apr 2007 · letzter Beitrag vom 5. Apr 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Texthöhe berechnen (mit Zeilenumbruch)

  Alt 4. Apr 2007, 20:14
Hallo,

ich zeichne in ein Recteck mit DrawText einen Text, den ich auch umbrechen lasse. Jetzt möchte ich schön unter dem Text einen weiteren ausgeben. Wenn ich aber die Funktion mit "dt_calcrect or dt_wordbreak" aufrufe, dann verändert sich das komplette Rechteck, was aber in meinem Fall nicht sein darf.
Dann habe ich die Funktion GetTextMetrics entdeckt, diese scheint aber keinen Textumbruch zu unterstützen. Was kann ich tun?

Danke
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Texthöhe berechnen (mit Zeilenumbruch)

  Alt 4. Apr 2007, 21:37
Hallo

dt_calcrect ändert doch aber nur die höhe, nicht das komplette Rechteck. Die Breite, die das Rechteck hatte, bleibt.

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#3

Re: Texthöhe berechnen (mit Zeilenumbruch)

  Alt 4. Apr 2007, 21:38
Nein, es ändert nicht nur die Höhe sondern manipuliert das gesamte Rechteck. Das ist ja mein Problem.
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: Texthöhe berechnen (mit Zeilenumbruch)

  Alt 4. Apr 2007, 21:41
ist mir ehrlich gesagt so noch nicht aufgefallen, hast du etwas beispielcode?

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#5

Re: Texthöhe berechnen (mit Zeilenumbruch)

  Alt 4. Apr 2007, 21:44
Einfach mal so aus der Unit gezogen (etwas unübersichtlich vielleicht, da ich doch am Experminetieren bin)

Delphi-Quellcode:
  t:=jpg.Height+10+(i*Font.Height)+(i*25);
  l:=FLeftMargin;
  r:=ceil((Width/5)*3);
  
  b:=t+DrawText(Canvas.handle, PChar(Tasks.Strings[i]), Length(PChar(Tasks.Strings[i])), TaskRect, dt_calcrect or dt_wordbreak);
  
  t:=jpg.Height+10+(i*Font.Height)+(i*25);
  l:=FLeftMargin;
  r:=ceil((Width/5)*3);
  DrawText(Canvas.handle, PChar(Tasks.Strings[i]), Length(PChar(Tasks.Strings[i])), TaskRect, dt_wordbreak);
Kannst ja noch ein kleines ShowMessage rundrum legen und die Veränderung ansehen. Das Problem bei mir ist, dass ich zwei Textausgaben nebeneinander darstellen möchte, aber dies wegen der Veränderung des Rechtecks optisch nicht klappt
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

Re: Texthöhe berechnen (mit Zeilenumbruch)

  Alt 4. Apr 2007, 22:01
ok, da seh ich jetzt nicht durch, die vielen Variablen verwirren mich für diese Uhrzeit .

und du verwirrst mich, in deinem ersten Posting möchtest du Text untereinader, im letzten nebeneinander .
Für untereinander würde ich es so probieren:
Delphi-Quellcode:
Var r:Trect;
    s1,s2:string;
    hoehe:integer;
begin
  //untereinander
  r:=rect(20,30,150,100);
  s1:='Einfach mal so aus der Unit gezogen (etwas unübersichtlich vielleicht, da ich doch am Experminetieren bin)';
  s2:='Kannst ja noch ein kleines ShowMessage rundrum legen und die Veränderung ansehen. Das Problem bei mir ist, dass ich zwei Textausgaben nebeneinander darstellen möchte ';

  Hoehe:=DrawText(Canvas.handle, PChar(s1), Length(s1), R, dt_calcrect or dt_wordbreak);
  r.Bottom:=r.Top+hoehe;
  DrawText(Canvas.handle, PChar(s1), Length(s1), R, dt_wordbreak);
  //rechteck verschieben und anderen Text daruntersetzen
  offsetrect(r,0,hoehe);
  Hoehe:=DrawText(Canvas.handle, PChar(s2), Length(s2), R, dt_calcrect or dt_wordbreak);
  r.Bottom:=r.Top+hoehe;
  DrawText(Canvas.handle, PChar(s2), Length(s2), R, dt_wordbreak);

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#7

Re: Texthöhe berechnen (mit Zeilenumbruch)

  Alt 4. Apr 2007, 22:07
Joa... muss grad voll lachen...

Also, mein Ausgangsgedanke:

Ich wollte eine Art Liste mit 2 Spalten. Damit diese schön angeordnet sind, habe ich zwei Rechtecke - eins für jede Spalte. Die Left-Position des 2. Rechtecks wird von der Rigth-Position des ersten beeinflusst. Doch wenn die Schrift einen Zeilenumbruch drin hat, verschieben sich natürlich die Einträge, sodass die Reihen nicht mehr korrekt nebeneinander stehen. So schaut's aus...

Den Code werde ich mal testen.
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

Re: Texthöhe berechnen (mit Zeilenumbruch)

  Alt 4. Apr 2007, 22:11
ok .

aber ich habs auch grad nochmal durchgesteppt. Die breite ändert sich auch, ist mir noch nie aufgefallen
aber du kannst doch dir die Breite vor Darwtext merken und dann danach wieder setzen?

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#9

Re: Texthöhe berechnen (mit Zeilenumbruch)

  Alt 4. Apr 2007, 22:16
Dafür hatte ich ja die vielen Variabeln (l (Left) t (Top) r (Right) b (Bottom)), aber da hatte ich wohl einen anderen Fehler drin. Ich hoffe halt nur, dass es eine andere, elegantere Lösung gibt...

Danke
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Texthöhe berechnen (mit Zeilenumbruch)

  Alt 4. Apr 2007, 23:15
Hilfe lesen hilft:
Zitat:
DrawText returns the height of the formatted text but does not draw the text.
Man muss DrawText also zweimal aufrufen. Einmal mit dem Flag DT_CALCRECT um die Größe zu bestimmen und einmal ohne, um den Text dann auch auszugeben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:37 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