• Hallo,

    im Footer einer Tabelle habe ich ein Feld eingefügt, welches die Seitensumme berechnet:

    Code
    field := Cell.AppendNewObject(wpobjTextObject, false, false, HiddenText);
    field.Name := 'PAINT_CALC';
    field.Source := 'Seitensumme'; 

    Füge ich viele Zeilen (z.B. 200) in die Tabelle ein, sind danach wie gewünscht alle Seitensummen vorhanden.

    Benutze ich die gleiche Felddefinition in einer Zelle einer Datenzeile, werden nicht alle Seitensummen berechnet, erst wenn man langsam durch das Dokument scrollt.

    Das gleiche Verhalten habe ich wenn das Feld im SeitenFooter eingefügt wird.

    Eigentlich möchte ich den Tabellenfooter gar nicht, aber die Zeilen-Höhe des Footers lässt sich nicht auf 0 setzen, sobald da irgendwo was drin steht.

    Mit welcher Procedure bekomme ich die Seitensummen alle berechnet, wenn das Summenfeld z.B. in allen Seiten-Footern steht?

    Reformat bringt keine Änderung, das Beispiel in WPReporter_Calc berechnet nur eine absolute Gesamtsumme über alle Seiten...

    Danke für Hinweise
    Ciao
    Stefan

    Nachtrag:

    Ich durchlaufe alle MergeFields im OnPaintCalc:

    Code
    oc := page.EmbeddedObjectCount([wpobjMergeField]);
    for j := 0 to oc - 1 do
    begin
     obj := page.EmbeddedObjectGet(j);

    oc ergibt 1 beim Debuggen, aber der Zugriff auf page.EmbeddedObjectGet(0) bringt Laufzeitfehler Index 0 außerhalb des gültigen Bereichs!

    Das ObjectCount also findet ein solches MergeField, was dann aber nicht vorhanden ist...

    In der Demo wird page.EmbeddedObjectCount([wpobjTextObject]) durchlaufen, liegt da der Fehler?

    Code
    page.EmbeddedObjectGet(j)

    Einmal editiert, zuletzt von skoschke (17. Februar 2020 um 15:07)

    • Offizieller Beitrag

    Die Demo macht dies ja so:

    Code
         for j:=page.EmbeddedObjectCount([wpobjTextObject])-1 downto 0 do
         begin
            obj := page.EmbeddedObjectGet(j);
            if obj.Name='LASTTOTAL' then
            begin
              ResultText := obj.Params;
              UseIt := TRUE;
              exit;
            end;
         end;

    und das funktioniert auch. EmbeddedObjectCount initialisiert ja, wie Sie sicher im Quellcode gesehen haben, die Liste sodass der Fehler vermutlich woanders herkommt.

    Wenn Sie das $DEFINE WPDEBUG aktivieren bekommen Sie einen konkreten Hinweis darauf, wo der Laufzeitfehler auftritt.