MERGEFIELD im Header und Footer mehrfach triggern

  • Hallo zusammen,

    ich bin hier neu und hoffe auf die Hilfe von erfahrenen WPTools Freunden.

    Wir wechseln gerade von WPTools V4.08 auf V9.2.3 um und haben bei sogenannten „Fortsetzungshinweisen„ Probleme. Fortsetzungshinweisen wurde im V4 Stand als wpobjTextObject realisiert und im Event WPRichText1TextFieldGetText () mit Werten befühlt.

    Aufgabe: Es soll Bericht mit Hilfe von WPSuperMerge.Execute generiert werden. Auf jeder Seite, wo ein Textblock nicht vollständig auf die Seite passt soll der Rest auf die nächste Seite mit <<Fortsetzungshinweis>> übertragen werden.

    Dafür wurden auf dem Seitenfuß und Seitenkopf wpobjTextObject (neu MergeFields) angelegt. Diese sind in einer Tabelle platziert und mit include(row.prop, paprIsHeader); versehen.

    Problem ist das wpobjTextObject in keinem Event getriggert wird.

    Setzt man statt dessen MERGEFIELD ein, so wird dieser im WPSuperMerge1MailMergeGetText() Event nur einmal getriggert (es werden 3 Seiten gedruckt). Ich brauche einen Event auf jeder neuer Seite im Header und Footer.

    Dafür habe ich ein kleiner Demo auf Basis von WPTools\Demos\N) WPReporter\WPReporter\ SimpleReporter.dproj aufgebaut. Datei Demo1.rtf im Template laden und auf die Output-Page wechseln. Header wird auf 3 Seiten gedruckt aber nur einmal getriggert.

    Kann mir jemand Tipp geben was ich falsch mache?

    Oder soll ich lieber gleich PAINT_CALC Objekte benutzen? Klappt es damit?

    Demo1.rtf mit MergeField

    Demo1.rtf mit wpobjTextObject

    Bereits angeschaute Lösung (ohne Erfolg):link

    Danke für jeden Hinweis

    VG wneumann

    • Offizieller Beitrag

    Im Gegensatz zu WPTools 4 berechnet die "neue" WPReporter Engine seit 2004 keine Seitenumbrüche während der Report Erstellung. Daher kann Ihr Wunsch so nicht direkt umgesetzt werden.

    Ein PAINT_CALC wurde eingebaut um während des Druckes bzw. der Anzeige den aktuellen, tatsächlichen, Seiteninhalt auszuwerten. Damit kann wie im Beispiel gezeigt eine Zwischensumme berechnet werden.

    Ihr Problem ließe sich vielleicht mit speziellen Tabellenfusszeilen lösen - aber nicht in vorliegenden Version WPTools 9.2. Das wäre eher eine Custom Entwicklung.

  • Hallo zusammen,

    ich konnte für unsere Zwecke folgende Lösung erarbeiten.

    Es wird weiterhin WPSuperMerge.Execute verwendet. Es wurde neue WPFormulaInterface1 Komponente mit onTextObjectPaintCalc() Event für Berechnete Felder angelegt. Die alten wpobjTextObject Objekte wurden in PAINT_CALC-Felder umgewandelt.

    Jetzt kann im auf die Pages "TWPRTFEnginePaint(Sender).Body.Pages[APagenr]" zugegriffen und werden. Hier können Sie auf die Objekte jeder Page zugreifen:

    Code
    for i := 0 to APage.EmbeddedObjectCount([wpobjMergeField], '')-1 do begin
          APage.EmbeddedObjectGet(i).EmbeddedText;
    end;

    So können Sie an alle Pages über: TWPRTFEnginePaint(Sender).Body.Pages[APageNr] kommen.

    Konstruktionsbeding können wir im ersten Paragraph der zweiter (folge) Seite an den Propertys "(pa.lastpagenr <> pa.pagenr)" den Text-Umbruch erkennen.

    So kommen wir vorerst weiter.

    WPTools Version 9.2

    Danke allen.