Verwendung von PageBreak$() in RTF-Text

Wir verwenden LL29 zur Ausgabe von Reports, denen eine GUI zu Grunde liegt, in der es möglich ist, in ein RTF-Feld Seitenumbrüche einzufügen. Diese werden als \u745? im RTF-String gespeichert, in der GUI erscheint das entsprechende Zeichen (˩).

Wir haben dann versucht, nach folgenden Methoden den Seitenumbruch in der Ausgabe zu erzeugen:

Die alte Methode führt auf einigen (nicht allen) Systemen, trotz Setzen der Option “Line Options > Data Lines > Keep Line Definitions Together” auf den Wert “False / No”, zu unnötigen, ungewollten Umbrüchen.

Die neue Methode haben wir so implementiert, dass dem RTF-Feld auf dem Bericht per Funktion Folgendes zugewiesen wird:
ReplaceStr$(Einträge.BeschreibungRTF,"\u745?", PageBreak$())

Das funktioniert auch soweit, dass dann im Report wie in der Anleitung gezeigt
> — —
erscheint. Allerdings nicht nur in der Vorschau, sondern auch in der Ausgabe.

Die Einstellung “Seitenumbruch” finden wir weder auf dem RTF-Feld noch auf anderen (Text-)Feldern, wo ist das einzustellen? In einem alten Projekt, das LL18 verwendet, ist die Option vorhanden, in LL29 für uns nicht auffindbar.

Der Grund für die ungewollten Umbrüche könnte möglicherweise an unterschiedlichen RTF-Versionen auf dem jeweiligen Zielsystem liegen. Das ist ja das Control von Microsoft innerhalb von List & Label und kann mit LL_OPTION_MAXRTFVERSION beeinflusst werden.

Das Verhalten wäre insofern erklärbar, dass PageBreak$() nicht nur einen String ausgibt (damit dieser auch gesehen wird), sondern eben auch eine Aktion ausführt; die Aktion wird aber bei einem ReplaceStr$() nicht ausgeführt.

Die Eigenschaft “Seitenumbruch” findet sich nur bei “Stand-Alone”-Objekten.
image

Innerhalb einer Tabelle kümmert sich sozusagen die Tabelle selbst um den Umbruch.

Hallo Onursal, danke für deine Antwort.

Die MAXRTFVERSION zu setzen hatten wir schon getestet, dadurch hat sich aber kein Unterschied ergeben. Wir haben auch in den Systemen, die sich unterschiedlich verhalten, keine Unterschiede in den geladenen Assemlies feststellen können. Nach der Ursache für die unterschieldiche Ausgabe suchen wir also noch.
Für uns sieht diese Variante ( mit \page im RTF) aber nicht nach einer machbaren Option aus, da man nicht sicher sagen kann, wie sich das letzten Endes beim Kunden verhalten wird.

Daher waren wir sehr erfreut festzustellen, dass es nun die PageBreak$()-Funktion gibt. Allerdings klingen deine Erläuterungen dazu nun danach, dass sie für uns auch nicht zum Ziel führt.

Siehst Du eine Möglichkeit, unser GUI-Feature “RTF-Textfeld mit Seitenumbruch” zuverlässig in den datengebundenen Report zu überführen? Könnte eine selbst geschrieben Designer-Function zum Ziel führen?

Hallo Johannes,

Die PageBreak$()-Funktion wird wohl in diesem Zusammenhang nicht zum Ziel führen, da wie besprochen die Aktion selbst nicht ausgeführt wird.

Bei internen Tests konnten wir erfolgreich testen, in der ReplaceStr$()-Funktion statt PageBreak$() den Parameter mit “\page” zu übergeben. Das löst den Umbruch dann an der gewünschten Stelle aus. Wie genau äußert sich das Problem mit den “unnötigen, ungewollten Umbrüchen” in eurem Projekt? Vielleicht gibt es an dieser Stelle noch etwas, was wir tun können.

Hallo Onursal,

mit ReplaceStr$(Einträge.BeschreibungRTF,"\u685?", "\page ") funktioniert es nun auf all unseren Testsystemen! Unser Sonderzeichen erst im Report selbst durch \page zu ersetzen, darauf waren wir nicht gekommen. Wir haben es schon immer vor der Übergabe der Daten an den Report ersetzt, und hatten dadurch doppelte Umbrüche, wie in Trigger Page Wraps in RTF Text geschildert.

Ich habe Deine Antwort als Lösung markiert, vielen Dank!

Gruß Johannes

1 Like