Ereignisse

Navigation:  Bericht im FR-Designer > Script >

Ereignisse

Previous pageReturn to chapter overviewNext page

Bis jetzt haben wir Scripte mit nur einer Hauptprozedur betrachtet, die beim Start des Reports ausgeführt wird. In der Hauptprozedur kann man Starteinstellungen ausführen oder die Variablen initialisieren. Aber für die volle Kontrolle über den Prozess der Reportbildung ist es ungenügend. Um den Report flexibel steuern zu können, hat jedes Objekt mehrere Ereignisse, denen ein Bearbeiter zugewiesen werden kann  eine Pozedur im Script. Man kann zum Beispiel im Editor des Datenbandes Einträge filtern, d.h. verbergen und anzeigen des Bandes abhängig von bestimmten Bedingungen.

 

Betrachten wir den Prozess der Bildung des Reports und der Ereignisse, die dabei generiert werden am Beispiel eines einfachen Berichtes, der nur eine einzige Seite, ein Band "Daten 1. Ebene" und zwei Objekte Text  im Band enthält.

 

clip0191

 

Am Anfang des Reports wird, wie gesagt die Hauptprozedur ausgeführt. Erst danach beginnt der eigentliche Prozess der Reporterstellung. Das Ereignis OnStartReport wird am Anfang des Objekts "Reports" aufgerufen. Vor dem formieren der Seite wird das Ereignis  OnBeforePrint. Dieses Ereignis wird einmal für jede Seite der Reportschablone aufgerufen (nicht zu verwechseln mit den Seiten des fertigen Reports!) In unserem Fall unabhängig der Seiten im fertigen Report, wird das Ereignis nur einmal aufgerufen, da die Reportschablone aus nur einer Seite besteht.

 

Als nächstes beginnt der Druck der Datenbänder. Das geschieht auf folgende Weise:

1. Ereignis OnBeforePrint des Bandes wird aufgerufen;

2. die Ereignisse OnBeforePrint der auf dem Band liegenden Objekte werden aufgerufen;

3. alle Objekte werden mit Daten gefüllt (in unserem Fall mit Bedeutungen der DB-Felder Company und Addr1);

4. die Objekte werden auf dem Band positioniert (falls dazwischen dehnbare sind), ebenfalls wird die Höhe des Bandes berechnet und es wird gedehnt (falls es dehnbar ist);

5. das Ereignis OnAfterCalcHeight des Bandes wird aufgerufen;

6. falls das Band nicht auf eine Seite passt, wird eine neue erstellt;

7. das Band und alle seine Objekte werden auf dem fertigen Report ausgeführt;

8. das Ereignis OnAfterPrint aller Objekte des Bandes wird aufgerufen;

9. das Ereignis OnAfterPrint des Bandes wird aufgerufen

 

 

Die Bänder werden ausgeführt, solange es Daten in der verknüpften Datenquelle gibt. Danach endet das Formieren des Reports in unserem Fall und das Ereignis OnAfterPrint der Reportseite wird aufgerufen. Als letztes wird das Ereignis OnStopReport des Objekts "Report" aufgerufen.

 

Auf diese Weise wird durch Benutzung der Ereignisse verschiedener Objekte praktisch jeder Moment beim Erstellen des Reports kontrolliert. Der Schlüssel zum richtigen Verwenden der Ereignisse ist das Verstehen all dieser neuen Punkte des Prozesses der Reporterstellung. So können viele Handlungen nur ausgeführt werden indem man das Ereignis OnBeforePrint verwendet. Alle Änderungen die im Objekt vorgenommen werden, werden sofort angezeigt. Hier kann aber nicht analysiert werden, auf welcher Seite das Band angezeigt wird wenn dieses dehnbar ist. Die Berechnung dazu findet erst bei Punkt 4 statt. Dies kann mit dem Ereignis OnAfterCalcHeight oder OnAfterPrint im Punkt 8 gemacht werden, aber im letzten Fall wird das Band schon gedruckt sein und die Bearbeitung der Objekte wird keine Auswirkungen haben. Deswegen müssen Sie genau wissen, wann welches Ereignis aufgerufen wird und genau die benutzen, die benötigt werden.