Druck der Summe in der Kopfzeile
Üblicherweise werden Summenwerte auf die Fußleisten (wie Datenfuß, Gruppenfuß, etc.) gedruckt. Dies entspricht einer natürlichen Druckreihenfolge, da beim Druck der Summe sein Wert ordnungsgemäß berechnet wird und gebrauchsfertig ist. Es kann jedoch erforderlich werden die Summen auf die Kopfzeile (beispielsweise auf den Gruppenkopf) zu drucken. Hierbei wird ein Nullwert angezeigt. Zum Zeitpunkt des Drucks der Summe ist diese noch nicht berechnet.
FastReport bietet die Eigenschaft "delayed print" zur Lösung dieses Problems. Das "Text"-Objekt hat die Eigenschaft mit dem Namen ProcessAt
, die eine der folgenden Werte annehmen kann:
Wert | Beschreibung |
---|---|
Default | Der standardmäßige Druckmodus. Dies ist der Standardwert. |
ReportFinished | Der Wert des Objektes wird am Ende des Berichts berechnet. |
ReportPageFinished | Der Wert des Objektes wird berechnet, nachdem alle Leisten auf der Seite beendet wurden. |
PageFinished | Der Wert des Objektes wird am Ende der Seite berechnet. |
ColumnFinished | Der Wert des Objektes wird am Ende der Spalte berechnet. |
DataFinished | Der Wert des Objektes wird am Ende der Datenleiste (wenn die Fußzeile gedruckt wird) berechnet. |
GroupFinished | Der Wert des Objektes wird am Ende der Gruppe (wenn seine Fußzeile gedruckt wird) berechnet. |
Lassen Sie uns betrachten, wie dies funktioniert. Das "Text"-Objekt, das die Summe druckt, wird auf den Gruppenkopf positioniert. Die Eigenschaft ProcessAt
des "Text"-Objektes wird auf GroupFinished
festgelegt:
Beim Durchlauf eines solchen Berichtes wird FastReport folgende Aktionen durchführen:
- Der Gruppenkopf wird gedruckt. Die Gesamtsumme wird als 0 (falsch) gedruckt. FastReport merkt sich dieses Objekt, um es später zu bearbeiten;
- Alle Datenreihen werden gedruckt;
- Der Gruppenkopf wird gedruckt. Zu diesem Zeitpunkt nimmt FastReport das im Gruppenkopf gedruckte Objekt und bearbeitet es erneut, um die korrekte Summe zu drucken.
Hiernach sieht der vorbereitete Bericht wie folgt aus:
Die Auswahl anderer Werte der Eigenschaft ProcessAt
ermöglichen es, die Berichtssumme in den Berichtstitel (ProcessAt = ReportFinished
festlegen) oder die Summe der Seite in den Seitenkopf (ProcessAt = PageFinished
) zu drucken.
Die verzögerte Druckeigenschaft funktioniert nicht, wenn der Dateicache des Berichts (Menü "Bericht|Optionen...", Kontrollkästchen "Filecache ausnutzen") angestellt ist.