Referenciranje polja baze podataka
Dogadjaji
Do sada smo gledali skripte sa samo jednom glavnom procedurom, koja se izvršava kada izveštaj počne da se pokreće. U glavnoj proceduri mogu se postaviti inicijalne postavke i inicijalizovati promenljive. Međutim, to nije dovoljno za potpunu kontrolu nad procesom generisanja izveštaja. Da bi se omogućila što veća kontrola nad generisanjem izveštaja, svaki objekat ima nekoliko događaja kojima se mogu dodeliti handleri (tj. procedure u skripti). Na primer, povezivanje handlera sa podacima omogućava filtriranje zapisa, tako da se traka može sakriti ili otkriti u zavisnosti od ispunjavanja specifičnih uslova.
Prikažimo proces kreiranja izveštaja i događaje koji se aktiviraju putem jednostavnog izveštaja koji sadrži jednu stranicu i ima jednu “MasterData” traku, sa dva “Text” objekta na traci:

Kao što je opisano iznad, glavna procedura skripte se poziva na samom početku pokretanja izveštaja. Nakon toga počinju osnovne stvari konstrukcije izveštaja. Prvo se poziva “OnStartReport” događaj objekta "Report". Zatim, pre nego što se kreira izlazna stranica, poziva se “OnBeforePrint” događaj stranice. Ovaj događaj se poziva jednom za svaku dizajn stranicu u šablonu izveštaja (dizajn stranice ne treba mešati sa izlaznim stranicama izveštaja!). U našem primeru, događaj se poziva jednom, jer dizajn izveštaja sastoji se samo od jedne dizajn stranice.
Zatim se događaji podataka traka pozivaju u sledećem redosledu:
1. poziva se “OnBeforePrint” događaj trake
2. poziva se “OnBeforePrint” događaj svakog objekta koji se nalazi u traci
3. svaki objekat se popunjava podacima (u našem primeru sa vrednostima “Company” i “Addr1" DB polja)
4. poziva se “OnAfterData” događaj svakog objekta
5. vrše se akcije kao što su pozicioniranje objekata na traci (ako među njima postoje rastegljivi objekti), izračunavanje visine trake i rastezanje (ako je rastegljiva)
6. poziva se “OnAfterCalcHeight” događaj trake
7. kreira se nova izlazna stranica ako traka nema dovoljno prostora u belom prostoru stranice
8. traka i svi njeni objekti se prikazuju na izlaznoj stranici
9. poziva se “OnAfterPrint” događaj svakog objekta trake
10. poziva se “OnAfterPrint” događaj same trake
Trake se nastavljaju štampati sve dok izvor povezan sa trakama ima podatke. Nakon toga štampanje izveštaja se zaustavlja, poziva se “OnAfterPrint” događaj stranice izveštaja i konačno “OnStopReport” događaj objekta “Report”.
Dakle, korišćenjem događaja različitih objekata praktično se može upravljati svakim korakom procesa kreiranja izveštaja. Ključ za korišćenje događaja je temeljno razumevanje procesa izlaza trake, što će biti objašnjeno u narednim sekcijama. Većina akcija može se izvršiti koristeći samo “OnBeforePrint” događaj trake; sve izmene napravljene na objektu se odmah prikazuju. Međutim, ako je traka rastegljiva, nemoguće je reći u ovom događaju na kojoj stranici će se traka štampati, pošto se izračunavanje visine trake vrši u koraku 5. To se može uraditi, međutim, ili u “OnAfterCalcHeight” događaju u koraku 6 ili u “OnAfterPrint” događaju u koraku 9. Imajte na umu da će u poslednjem događaju traka već biti prikazana, tako da izmene na objektima neće imati nikakav vidljiv efekat.
Bitno je jasno razumeti “gde i kada” se trake prikazuju i razumeti vremenski raspored (redosled pozivanja) svakog od njihovih događaja. Takođe za svaki od objekata koji se nalaze u trakama.