Die Textberichtsengine erkennt eine spezifische Gruppe von Ereignissen während der Berichterstellung. Jedes Ereignis ist in der Engine durch eine Variable dargestellt.
Sie können angepasste Funktionen aus Ihrem generischen Handler einer beliebigen Variablen zuweisen, wobei Sie dieselbe Punktsyntax verwenden, die auch beim Zuweisen zu einer Variablen in einer Bibliothek zum Einsatz kommt. Eine Funktion namens
printPageTotals() können Sie beispielsweise der Variablen
onPageTrailerListener zuweisen, damit die Funktion auf jeder Seite ausgeführt wird, wenn der Seitennachsatz gedruckt werden soll. Der folgende Beispielcode zeigt die Zuweisung:
myReport.onPageTrailerListener = printPageTotals;
Jede dieser TextReportListener-Variablen ist vom Typ Stellvertreter.
Das bedeutet, Sie können eine Funktion mit einer passenden Signatur
(dieselbe Nummer und derselbe Typ von Parameter) einer dieser Variablen zuweisen.
Jede Variable nimmt ein einzelnes Argument an, das einen TextReportEvent-Typ aufweist
('TextReportEvent' ist ein weiterer EGL-ExternalType-Abschnitt). In den meisten Fällen müssen Sie sich nicht auf die Details dieses Ereignistyps konzentrieren. Deklarieren Sie die Variable zum selben Zeitpunkt wie Sie die Funktion deklarieren. Dies wird in dem folgenden Beispiel gezeigt:
function printPageTotals(myEvent TextReportEvent in)
...
end
Sie müssen in der Funktion nicht auf
myEvent verweisen. Wie der Ausnahmedatensatz (siehe
Ausnahmebedingungsbehandlung) kann der TextReportEvent-Parameter Informationen zum Status des Berichts und zum Grund für den Aufruf der Funktion bereitstellen. Es gibt vier Felder in der TextReportEvent-Variablen, auf die Sie zugreifen können. Das erste Feld enthält einen Wert, der angibt, warum die Funktion aufgerufen wurde, und drei andere Felder enthalten konstante Werte, die Sie mit dem ersten Wert vergleichen können:
- state
- Eine ganze Zahl, die Informationen zum Ereignis enthält, das den Aufruf der Funktion ausgelöst hat. Die Variable ist auf eines der folgenden Felder festgelegt (in den meisten Fällen auf 'STATE_UNSPECIFIED').
- STATE_UNSPECIFIED
- Eine ganzzahlige Konstante gleich 1. Wenn das Statusfeld dem Feld 'STATE_UNSPECIFIED' entspricht, werden keine Informationen dazu bereitgestellt, warum die Funktion aufgerufen wurde.
- STATE_LASTROW
- Eine ganzzahlige Konstante gleich 2. Wenn das Statusfeld dem Feld 'STATE_LASTROW' entspricht, wird die Funktion aufgerufen, weil die letzte Zeile gedruckt wurde.
- STATE_FIRSTROW
- Eine ganzzahlige Konstante gleich 3. Wenn das Statusfeld dem Feld 'STATE_FIRSTROW' entspricht, wird die Funktion aufgerufen, weil die erste Zeile in Kürze gedruckt wird.
Der folgende Code gibt ein Beispiel für die Verwendung des Felds
state in dem speziellen Fall an, dass Sie den Druck des Berichts bereits begonnen haben:
function beforeGroup (myEvent TextReportEvent in)
if ((currentReportRecord.customerName != previousReportRecord.customerName)||
(myEvent.state == myEvent.STATE_FIRSTROW))
printCustomerName(currentReportRecord);
end
end
Sie können eine Funktion einer der folgenden Variablen zuweisen:
- onFirstPageHeaderListener
- Zeigt auf die Funktion, die den Header der ersten Seite druckt. Weisen Sie dieser Variablen nichts zu, wenn die erste Seite nicht über einen eigenen, speziellen Header verfügt.
- onPageHeaderListener
- Zeigt auf die Funktion, die den Seitenheader druckt. Wenn kein Header für die erste Seite angegeben ist, wird dieser Header auf allen Seiten gedruckt. Andernfalls wird er ab der zweiten Seite gedruckt.
- onEveryRowListener
- Zeigt auf die Funktion, die die Zeilendaten druckt.
- onLastRowListener
- Zeigt auf die Funktion, die Text nach der letzten Zeile druckt. Dabei handelt es sich um den letzten Teil, der in einem Bericht gedruckt wird, abgesehen von dem Nachsatz am unteren Ende der letzten Seite.
- onPageTrailerListener
- Zeigt auf die Funktion, die den Nachsatztext druckt.
- onBeforeGroupListener
- Wird immer unmittelbar vor der Funktion 'onEveryRowListener' aufgerufen.
Sie stellt einen Mechanismus zum Drucken von Text vor dem Drucken einer Gruppe von Daten bereit.
- onAfterGroupListener
- Wird unmittelbar vor der Funktion 'onBeforeGroupListener' aufgerufen (außer in der ersten Datenzeile). Sie stellt einen Mechanismus zum Drucken von Text nach dem Drucken einer Gruppe von Daten bereit. Sie wird auch unmittelbar vor der Funktion 'onLastRowListener' aufgerufen.