TotalPages$() in RTF

Hallo,
ich nutze List & Label 16 und habe da Problem, dass bei RTF-Feldern (egal ob innerhalb des Berichtscontainer oder als Formatiertes Feld) die Gesamtseitenanzahl nicht ausgegeben wird. In der Vorschau steht dann immer eine durch je zwei übereinanderliegende Tilden eingeschlossene Null.
Die Darstellung der aktuellen Seitenzahl funktioniert.
Gibt es eine Möglichkeit in einem RTF-Feld auch die Gesamtseitenzahl darzustellen?

Bei mir hat es in LL16 noch funktioniert, seit LL18 nicht mehr. Sehr ärgerlich.

Hallo,

vielen Dank für Ihre Beiträge.

Mit welchen Service Pack Modulen arbeiten Sie momentan? TotalPages$() kann mit den Modulen des aktuellen Service Pack 18.005 bei unseren internen Testdurchläufen korrekt ausgegeben werden. Die Tests wurden mit verschiedenen Reports der List & Label Beispielanwendung (…\combit\LL18\Beispielanwendung\lldemo32.exe) und folgendem Inhalt des RTF-Controls durchgeführt:

«ToRtf$(Page$()+" von "+TotalPages$())»

Mit freundlichen Grüßen

Christian Rauchfuß
Technischer Support
combit GmbH

Hallo,
ich habe es mit dem aktuellem Servicepack 18.005 gemacht. Als Beispielprogramm habe ich verwendet: (…\LL18\Programmierbare Beispiele und Deklarationen\Delphi\RTF Example). Dort habe ich exakt Ihr obiges Code in die RTF-Datei debwin.rtf eingefügt. Ergebnis: “1 von ˜0˜” (In der Vorschau steht dann immer eine durch je zwei übereinanderliegende Tilden eingeschlossene Null.) Wie erkenne ob die richtige DLL angezogen wird (SP5)? Die verwendete MaxRTFVersion ist 1025.

Hallo Herr Sanz,

vielen Dank für Ihren Beitrag.

In diesem Sample wird ein fertiges RTF-Dokument in das RTF-Control und ausgegeben. In einem solchem Fall bräuchten Sie einen ExpressionEvaluater, welcher Ihnen die im RTF enthalten LL-Formeln auch auswertet bzw. berechnet. Alternativ hierzu könnten Sie die Quelle von der RTF-Variable auf “Freier Text” ändern und die Formel entsprechend vor oder nach dem RTF-Inhalt ausgegeben.

Mit freundlichen Grüßen

Christian Rauchfuß
Technischer Support
combit GmbH

Hallo Herr Rauchfuß,

danke für Ihre Antwort. Doch folgendes verstehe ich nicht:
Wieso funktioniert es in der selben Beispielanwendung unter List&Label 16?
Wir gingen immer davon aus, dass Combit auf Kompatibilität mit den alten Versionen Wert legt. Sie können nicht einfach eine Funktionalität, die vorher funktioniert hat, einfach entfernen.

Wir haben keine alternative, als es im RTF zu schreiben, da der Briefkopf vom Anwender als RTF editiert wird und der Anwender selber entscheidet, wo er die Gesamtanzahl an Seiten positionieren will. Eine Umprogrammierung würde uns mehrere Mannmonate kosten da wir unser Konzept komplett überarbeiten müssten.

Aus meiner Sicht ist es eindeutig ein Bug, da eine bisherige Funktionalität aud früheren L&L Versionen nicht mehr geht. Ich bitte Sie dieses als solches zu behandeln.

Ansonsten hat mir Ihr Tipp mit dem ExpressionEvaluater auch nicht geholfen, da der Evaluator zum Zeitpunkt des Aufrufes doch gr nicht weiss, wieviele Seiten das Gesamtdokument hat.

Bitte helfen Sie mir weiter.

Gruß
Alfonso Sanz

Hallo Herr Rauchfuß,

könne Sie mir bitte sagen, ob ich für die Meldung dieses Fehlers ein Ticket aufmachen muss? Oder haben Sie es bereits weitergegeben.

Gruß
Alfonso Sanz

Sehr geehrter Herr Sanz,
vielen Dank für Ihren Beitrag.

Das Verhalten wurde auch mit der Version 16 getestet und es hat den gleichen Effekt wie in der Version 18, aus diesem Grund benötigen wir eine genaue Beschreibung (Schritt für Schritt) der Vorgehensweise.

Bitte beschreiben Sie genau alle Schritte und auch die jeweiligen Dateiversionen, Vielen Dank.

Sollte dies auch nicht zu einem Erfolg führen, müssten wir Sie bitten über unser
Supportportal einen Supportcase zu eröffnen, im Rahmen des Supports wäre es wahrscheinlicher eine Lösung zu finden, da es dort weitere Möglichkeiten zur Problemlösung gibt wie z.B. Dateien austauschen.

Mit freundlichen Grüßen

Erdal Alacali
Technischer Support
combit GmbH

Hallo Combit,

ich bin wie folgt vorgegangen:
Ich habe die LL16 Beispielanwendung RTFDEMO aus dem Pfad “…\LL16\Programmierbare Beispiele und Deklarationen\Delphi\rtf” mit Delphi XE compiliert. Um sicher zu gehen, dass die richtigen DLLs genommen werden, habe ich dann die EXE in das Verzeichnis “…\LL16\Redistributierbare Dateien” kopiert und dort gestartet.
Ich habe mit Klick auf “Load…” die Datei debwin.rtf geladen, die sich im rtf Ordner befindet.

Als allererste Zaile habe ich eingefügt:

«ToRtf$(Page$()+" von "+TotalPages$())»

Dann habe ich auf “Preview…” geklickt.
Gewählt habe ich dann rtf.lbl und auf “Starten” geklickt.
In der Vorschau sehe ich dann 1 von 1.
Die Version der cmll16.dll ist 16.0.2010.30416

Mache ich exakt das gleiche mit der Vesion 18 im Pfad “…\LL18\Programmierbare Beispiele und Deklarationen\Delphi\RTF Example”, erhalte ich als Ergebnis 1 von ~0~.
Die Version der cmll18.dll ist 18.5.2013.20214

Da ich keine Subskription habe, tu ich mir schwer ein Ticket zu eröffnen, weil mir angedroht wird, dass ich dafür 180 € pro Stunde zahlen muss, wenn sich herausstellt, dass es kein Fehler ist.
Aus meiner Sicht ist es ein Fehler, wenn es in LL16 funktioniert hat und in LL18 nicht, aber ich weis nicht, ob irgend jemand bei Combit es plötzlich als Feature einstuft und ich dann doch zahlen muss.

Deswegen versuche ich es erst über das Forum einzugrenzen, bevor ich ein Ticket aufmache.

Bitte testen Sie es in LL16 und wenn es bei Ihnen nicht 1 von 1 ergibt, dann erklären Sie mir bitte, wieso es bei mir funktioniert (oder ist es ein Fehler, dass es funktioniert?) :slight_smile:

Viele Grüße und vielen Dank für den bisherigen, hervorragenden Support.

Alfonso Sanz

Hallo zusammen,
ich habe dies nun auch mal ausprobiert und dies mit LL16 und LL18 (neuester SP) getestet. Allerdings nicht mit der Delphi-, sondern mit der VC++ Anwendung (RTF Example).
Und hier funktioniert es sowohl in LL16 als auch in LL18 (bei mir ist es aber Seite 1 von 2) :slight_smile:
Hilft dir wahrscheinlich nicht wirklich weiter, aber eventuell combit. Delphi kann ich nicht probieren.
Betriebssystem ist Windows 7 64 bit.

Gruß
Simon

Hallo Simon,

vielen Dank für deinen Beitrag. Es wäre hilfreich, wenn Combit deine Aussage auch bestätigen oder verneinen würde. Dann wüsste ich, ob der Fehler bei mir (LL18) oder bei LL mit Delphi zu suchen ist.
Gruß
Alfonso

Sehr geehrter Herr Sanz,

vielen Dank für Ihren Beitrag.

Ihre Beschreibung der Thematik sieht nicht nach einem Fehler aus, der durch Sie verursacht wurde, insofern bieten wir Ihnen an, dass ein Support-Case zu dieser Thematik kostenlos bearbeitet wird.

Bitte kommen Sie diesbezüglich auf uns zu.

Mit freundlichen Grüßen

Patrick Preuschoff
Technischer Support
combit GmbH

Hallo Herr Preuschoff,

vielen Dank für das Angebot. Ich werde ein Ticket erstellen. Inzwischen, mit der Hilfe des Forums in Delphi-Praxis konnten wir den Fehler eingrenzen. Es funktioniert scheinbar unter Windows 7 einwandfrei, unter windows 8 nicht. Ich kann es in einer Virtualbox mit Windows 7 auch nachvollziehen. Dort läuft es korrekt.

Hallo,

wenn es wirklich nur unter Win8 passiert könnte ein Workaround auch sein, per MaxRTFVersion das “alte” Control zu verwenden. Ich habe das für ein Transparenzproblem auch gebraucht; das Win8-Control scheint sich in mancher Hinsicht “zickig” zu verhalten. Der Wert 0x601 für MaxRTFVersion hat bei mir geholfen.

G.

BINGO!
Durch Ändern der MaxRTFVersion auf 0x601 funktioniert es auch unter Windows 8.
Aber: Welchen Nebeneffekt hole ich damit. Was wird dann nicht mehr funktionieren?

Gruß und Danke.
Alfonso

Denke, das sollte nix Schlimmes sein - ich fahre mit dem “alten” Control sehr gut, seit ca. 2 1/2 Monaten. Ist mir sogar lieber so, so kann ich sicher sein, dass die Reports unter Win7 und Win8 gleich aussehen, sonst müsste ich immer beide Varianten testen. Was genau Microsoft da geändert hat werden wir wohl nie erfahren ;-).

Trotzdem sollte TotalPages$ natürlich richtig funktionieren; bin gespannt, wie es hier weitergeht.

G.