Referenciranje polja baze podataka
Dogodaji
Do sada smo gledali skripte sa samo jednom glavnom procedurom, koja se izvršava kada se izveštaj počne pokretati. U glavnoj proceduri mogu se postaviti inicijalne postavke i inicijalizovati varijable. 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 dizajnersku stranicu u šablonu izveštaja (dizajnerske 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 dizajnerske 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 rastezljivi objekti), izračunavanje visine trake i rastezanje (ako je rastezljiva)
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 trakom 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 sledećim 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 rastezljiva, 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 izlazna, tako da izmene na objektima neće imati nikakav vidljiv efekat.
Bitno je jasno razumeti “gde i kada” se trake izlaze i razumeti vremensko (redosled pozivanja) svakog od njihovih događaja. Takođe i za svaki od objekata koji se nalaze u trakama.