Menü

Die Abfolge der Ereignisse bei doppeltem Durchlauf
(Pascal-Script)

Zurück | Ebene zurück

Beim doppelten Durchlauf werden manche Ereignisse zweimal aufgerufen. Im folgenden Diagramm ist die Abfolge der Ereignisse dargestellt. Dabei gehen wir von einem einfachen Bericht ohne Unterberichte aus und beschränken uns auf die in EULANDA® gebräuchlichen Ereignisse  von
    Bericht
    Seitenstil
    Titel
    Kopf
    Detailbereich
    Zusammenfassung
    Fuß .
Die Ereignisse der Objekte (Calc, DBCalc, TextField) werden hier außen vor gelassen. Wann genau die Ereignisse dieser Objekte aufgerufen werden, ist nicht von entscheidender Bedeutung, sie werden bis auf wenige Ausnahmen in der EULANDA® kaum benutzt.
 

Report BeforePrint
Report OnStartFirstPass
Report OnStartPage			(*)

    	PageStyle BeforePrint
    	PageStyle BeforeGenerate
    	PageStyle AfterGenerate
    	PageStyle AfterPrint

		Title BeforePrint
		Title BeforeGenerate
		Title AfterGenerate
		Title AfterPrint

    			Header BeforePrint
    			Header BeforeGenerate
    			Header AfterGenerate
    			Header AfterPrint

        	    			Detail BeforePrint
    	    			Detail BeforeGenerate
    	    			Detail AfterGenerate
    	    			Detail AfterPrint

			Summary BeforePrint
			Summary BeforeGenerate
			Summary AfterGenerate
			Summary AfterPrint

    		Footer BeforePrint
    		Footer BeforeGenerate
    		Footer AfterGenerate
    		Footer AfterPrint

Report OnEndPage			(**)
Report OnEndFirstPass

Report OnStartSecondPass
Report OnStartPage			(*)

    	PageStyle BeforePrint
    	PageStyle BeforeGenerate
    	PageStyle AfterGenerate
    	PageStyle AfterPrint

		Title BeforePrint
		Title BeforeGenerate
		Title AfterGenerate
		Title AfterPrint

    			Header BeforePrint
    			Header BeforeGenerate
    			Header AfterGenerate
    			Header AfterPrint

        	    			Detail BeforePrint
    	    			Detail BeforeGenerate
    	    			Detail AfterGenerate
    	    			Detail AfterPrint

			Summary BeforePrint
			Summary BeforeGenerate
			Summary AfterGenerate
			Summary AfterPrint

    		Footer BeforePrint
    		Footer BeforeGenerate
    		Footer AfterGenerate
    		Footer AfterPrint

Report OnEndPage			(**)

Report AfterPrint

Wie man sieht werden fast alle Ereignisse zweimal aufgerufen. Ausnahmen bilden hiervon nur
    Report BeforePrint
    Report OnStartFirstPass
    Report OnEndFirstPass
    Report OnStartSecondPass
    Report AfterPrint.

Außerdem wird der Bereich von OnStartPage (*) bis OnEndPage (**) wird für jede Seite einmal aufgerufen, sofern die entsprechenden Bereiche (wie Summary oder Title) existieren.
D.h. bei einer 3-seitigen Rechnung (Detailbereich erstreckt sich über 3 Seiten) wird OnStartPage und OnEndPage dreimal (insgesamt also sechsmal wegen doppeltem Durchlauf) aufgerufen, die Ereignisse von PageStyle und Detail auch, die Ereignisse von Title und Summary dagen nur einmal (auf der ersten Seite Title und auf der letzten Seite Summary, insgesamt da doppelter Durchlauf also zweimal). Die Ereignisse von Fuß und Kopf so oft wie selbige gedruckt werden.

Zusammenfassend kann man also sagen, dass die Ereignisse eines bestimmten Bereichs so oft aufgerufen werden, wie dieser Bereich gedruckt wird, auch wenn es nur ein Teil ist. Erstreckt sich der Detailbereich beispielsweise über 3 Seiten, so werden auch dreimal (insgesamt sechsmal wegen doppeltem Durchlauf) die Ereignisse DetailBeforePrint, AfterPrint usw. aufgerufen. Geht man davon aus, dass der Fuß auf jede Seite gedruckt wird so werden auch pro Seite einmal die Ereignisse des Fußes aufgerufen. Sprich alles was zwischen (*) und (**) liegt wird jedes Mal auf einer neuen Seite aufgerufen, falls der entsprechende Bereich dort existiert.
 

Dies ist das Grundgerüst. Durch hinzufügen von Gruppen (Groups) oder Unterberichten kommen einige Ereignisse hinzu. Wie diese einzuordnen sind können Sie den folgenden Seiten entnehmen.

Mit Gruppen (Pascal-Script)
Mit Unterbericht (Pascal-Script)