Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi QRmemo: Zeilenumbruch erzwingen (https://www.delphipraxis.net/205784-qrmemo-zeilenumbruch-erzwingen.html)

kagi3624 16. Okt 2020 10:33

QRmemo: Zeilenumbruch erzwingen
 
Hallo,

ich habe einen eledlangen String, den ich auf einen QR Report packen möchte, das Problem beim Drucken ist, dass nur die eine Zeile gedruckt wird, sprich: es wird nicht umgebrochen. Kann man den Zeilenumbruch irgendwie erzwingen? Habe es schon mit verschiedenen AutoSize und AutoStretch einstellungen probiert...

bcvs 16. Okt 2020 10:39

AW: QRmemo: Zeilenumbruch erzwingen
 
Delphi-Quellcode:
WordWrap := true
schon probiert?

kagi3624 16. Okt 2020 10:43

AW: QRmemo: Zeilenumbruch erzwingen
 
Zitat:

Zitat von bcvs (Beitrag 1475608)
Delphi-Quellcode:
WordWrap := true
schon probiert?

Ja, vielleicht habe ich mich nicht gut ausgedrückt: Mein String ist ein Schlüssel aus vielen Zeichen, also es kommen keinerlei Whitespaces vor. Ich möchte, dass einfach umgebrochen wird, sobald es nicht mehr in die Zeile passt. Dankeschön

KodeZwerg 16. Okt 2020 10:51

AW: QRmemo: Zeilenumbruch erzwingen
 
Ich habe es noch nicht probiert, teste mal eine dieser varianten (falls qrmemo wie ein memo ist...)
Memo Drucken

himitsu 16. Okt 2020 13:32

AW: QRmemo: Zeilenumbruch erzwingen
 
Es kommt drauf an wie umgebrochen wird.
* erstmal an "Wortgrenzen"
* und dann kann es sein, dass es hier keinen Maximalwert gibt, der dann "irgendwo" im Wort umbricht

PS: deswegen wird im Forum in zu lange "Wörter" Leerzeichen eingebaut, damit umgebruchen werden kann ... leider hier ein "richtiges" Leerzeichnen
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaa
Wenn ihr den Browser zusammenschiebt, merkt ihr, dass mein Post eine Grenze hat und im Gegensatz zum vorherrigen Beitrag breiter bleibt, da HTML/Browser keine Wörter trennen, weil sie nicht wissen wo sie es "dürfen".

In diesem Fall könntest du selbst ein paar passende Steuerzeichen einfügen, denn genau dafür gibt es extra ein paar Zeichen, zum Steuern. :angle:
> non-breaking space = erzwungenes Leerzeichen #160 #$A0
> non-breaking hyphen = #8209 #$2011
> zero-width space = breitenlose Leerzeichen #8203 #$200b
> soft hyphen = bedingter Trennstrich #173 #$AD
> null breiter Nichtverbinder #8204 #$200C
> null breiter Verbinder #8205 #$200D

z.B. in deinen Text alle 10 Zeichen ein #173 oder #8204 einfügen.
Über große Texte könnte man auch einen lexikalischen Parser laufen lassen, der zwischen alle Silben ein #8209 einfügt, dann kann auch die dümmste Zeilenumbruchsteuerung korrekt die Wörter trennen/umbrechen.

#160 #8209 = ein Leerzeichen/Bindestrich, wo nichts umgebrochen wird (die beiden Wörter bleiben zusammen)
#8204 #173 = unsichtbares Leerzeichen/Bindestrich im Wort, der erst sichtbar wird, wenn dort umbegrochen werden muß


Problem mit uraltem Delphi: Alles mit Unicode kannst'e vergessen, also alles über #255 bzw. #$FF.

kagi3624 19. Okt 2020 08:11

AW: QRmemo: Zeilenumbruch erzwingen
 
Danke für die Antworten und das Bestätigen meiner Vermutung, dass es nicht umgebrochen werden kann. Ich wollte es vermeiden in den Schlüssel selbst irgendwas einzubauen, nun muss ich es dennoch tun. Dazu vielleicht eine Frage an himitsu, da Delphi 6 wahrscheinlich zero-width space nicht kann, ist es die einzige Möglichkeit "unsichtbare" Trennzeichen zu erzwingen?

kagi3624 19. Okt 2020 10:41

AW: QRmemo: Zeilenumbruch erzwingen
 
Ich habe die soft hyphen und leerzeichen ausprobiert, es wird trotzdem nicht umgebrochen! Habe wieder alle möglichen Einstellungen ausprobiert: autosize, autostrech wordWreap ist an. Also langsam verzweifle ich an diesem QR report.

Edit: autostretch auto und autosize deaktiviert&manuell sollte doch die richtige Einstellung sein? Es wird trotzdem nur zur ende der Zeile gedruckt und nicht umgebrochen.

BerndS 19. Okt 2020 12:17

AW: QRmemo: Zeilenumbruch erzwingen
 
Versuch es mal mit QrLabel. Da kann man bei Wrapstyle BreakAnywhere einstellen.

Bei mir klappt es innerhalb eines Bandes mit:
Band
PreCaluculateBandHeight = True
qrLabel
AlignToBand = True
AutoSize = False
AutoStretch = True
WrapStyle = BreakAnywhere

BerndS 19. Okt 2020 13:01

AW: QRmemo: Zeilenumbruch erzwingen
 
Das QRMemo scheint doch zu funktionieren. Nur ist das Property WrapStyle nicht publisched.
Man kann es aber zur Laufzeit setzen da Public (WrapStyle := BreakAnywhere).

himitsu 19. Okt 2020 13:47

AW: QRmemo: Zeilenumbruch erzwingen
 
Ihr könnt sowas auch gleich als Bugreport/Featurerequest an den Hersteller schicken.

https://www.delphipraxis.net/205782-...ml#post1475660
Nach dem Tod des letzten Entwicklers, gibt es nun einen Neuen und somit geht's weiter.
Aktuell wird zwar erstmal nur am Upgrade gearbeitet, aber danach soll es mit den Bugfixen und neuen Features weitergehn. (allerdings dann nur in der neuen Version)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:35 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf