AGB  ·  Datenschutz  ·  Impressum  







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

Textlänge abschneiden

Ein Thema von EWeiss · begonnen am 14. Jun 2016 · letzter Beitrag vom 19. Jun 2016
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: Textlänge abschneiden

  Alt 17. Jun 2016, 23:24
@Sir Rufo

Habe dein Projekt jetzt mal umgelegt nach D2010
Ging nicht auf Anhieb lSuffixLength musste ein globale Variable sein.

Werde jetzt mal nach GL umlegen.
Über die PaintBox sieht es schon mal gut aus.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Textlänge abschneiden

  Alt 17. Jun 2016, 23:29
@Sir Rufo

Habe dein Projekt jetzt mal umgelegt nach D2010
Ging nicht auf Anhieb lSuffixLength musste ein globale Variable sein.
Das wundert mich doch sehr. Kannst du den Code mal zeigen?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Textlänge abschneiden

  Alt 17. Jun 2016, 23:36
@Sir Rufo

Habe dein Projekt jetzt mal umgelegt nach D2010
Ging nicht auf Anhieb lSuffixLength musste ein globale Variable sein.
Das wundert mich doch sehr. Kannst du den Code mal zeigen?
Klar! Hänge ihn an.
Der Compiler hat gemeckert das lSuffixLength nicht initialisiert war.. also (33339483884) so ne zahl.

raise EArgumentNilException.Create( 'CharMeasurement' );

Musste ich ausblenden gibt es scheinbar in D2010 nicht.

raise EArgumentOutOfRangeException.Create( 'SuffixLength > MaxLength' );

kommt immer sobald ich einen Char eingebe habe es deaktiviert.


opps zurück hab vergessen den anderen Kram noch auszublenden war mein Fehler.
Delphi-Quellcode:
// if not Assigned( CharMeasurement )
// then
// raise EArgumentNilException.Create( 'CharMeasurement' );
// if MaxLength < 0
// then
// raise EArgumentOutOfRangeException.Create( 'MaxLength'
Korrigierte Version hochgeladen D2010

gruss

Geändert von EWeiss (11. Jul 2019 um 16:02 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Textlänge abschneiden

  Alt 18. Jun 2016, 00:06
Das ist was ich vorher sagte.
Solange man Monotype Fonts verwendet funktioniert dein Code gut. (Auch meiner in GL)
Ich kann keinen Monotype Font verwenden weil es bescheiden aussieht

Aber wehe wenn nicht.
Bei Arial geht es nicht mehr.

PaintBox und Label2 der gleiche Font Arial, Size = 24
Ich komme nicht auf die 560 mit dem Label2

siehe Anhang.
Font8 und Font24
Damit muss ich mich auch in GL rumschlagen.

Um das jetzt richtig zu berechnen müsste man über GetTextExtentPoint gehen incl. Kerning und dann wird es richtig kompliziert.
Dann würde es unter VCL gehen aber nicht mehr mit OpenGL.
Das ist nun mal so.

Ich denke das ist schon eine Wissenschaft für sich

gruss

Geändert von EWeiss (11. Jul 2019 um 15:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Textlänge abschneiden

  Alt 18. Jun 2016, 00:31
Das Canvas was die Länge des Textes berechnet muss natürlich auch die gleiche Font und die gleiche Fontgröße eignestellt haben...

Das ist eigentlich keine Wissenschaft. Du machst nur komische Dinge glaube ich...
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Textlänge abschneiden

  Alt 18. Jun 2016, 00:40
Das Canvas was die Länge des Textes berechnet muss natürlich auch die gleiche Font und die gleiche Fontgröße eignestellt haben...

Das ist eigentlich keine Wissenschaft. Du machst nur komische Dinge glaube ich...
Ja was denn
Habe ich natürlich.

Zitat:
Du machst nur komische Dinge glaube ich...
Denke ich nicht. Bin Dumm aber so dumm auch wieder nicht.

PaintBox und Label2 der gleiche Font Arial, Size = 24
bzw.
PaintBox und Label2 der gleiche Font Arial, Size = 8
Selbst der EditBox, Form1 habe ich den gleichen Font verpasst

So Unten der Label oben die PaintBox
Anhänge extra für dich.

gruss

Geändert von EWeiss (11. Jul 2019 um 15:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Textlänge abschneiden

  Alt 18. Jun 2016, 01:35
Also in meinem Original-Quelltext ist lSuffixLength initialisiert ... wenn du das vergessen hast, warum initialisierst du die nicht einfach, anstatt da eine globale Variable von zu machen?

Anyway, im Anhang mal der Source (etwas umgebaut) und ein EXE (zum direkten Testen). Mit einem Klick auf die Paintbox kann man den Font auswählen und schwupps wird der Text mit dem neuen Font wieder angepasst dargestellt.

Ich hoffe wegen der Pixel-Geschichte sprechen wir jetzt nicht darüber, dass der Text ganz exakt genau so breit sein soll wie die Vorgabe ist. Das das so (zeichne mal einfach so den Text) nicht geht is hoffentlich jedem klar.
Angehängte Dateien
Dateityp: zip dp_189448.zip (965,1 KB, 13x aufgerufen)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 18:31 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