Референцирање на полињата на базата на податоци
Настани
Досега гледавме на скрипти со само една главна процедура, која се извршува кога извештајот започнува да се извршува. Во главната процедура можат да се направат почетни поставки и да се иницијализираат променливи. Сепак, ова не е доволно за целосна контрола над процесот на генерирање на извештајот. За да се овозможи колку што е можно поголема контрола над генерирањето на извештајот, секој објект има неколку настани на кои можат да се доделат обработувачи (т.е. процедури во скриптата). На пример, поврзувањето на обработувач со податочната лента овозможува запишаните записи да се филтрираат, така што лентата може да биде скриена или откриена во зависност од исполнувањето на специфични услови.
Да го демонстрираме процесот на создавање извештај и настаните кои се активираат преку едноставен извештај кој содржи една страница и има една “MasterData” лента, со два “Text” објекти на лентата:

Како што е опишано погоре, главната процедура на скриптата се повикува на самиот почеток на извршувањето на извештајот. По тоа, започнуваат основите на конструкцијата на извештајот. Прво, настанот “OnStartReport” на објектот "Report" се повикува. Потоа, пред да се создаде излезна страница, настанот “OnBeforePrint” за страницата се повикува. Овој настан се повикува еднаш за секоја дизајнерска страница во шаблонот на извештајот (дизајнерските страници не треба да се мешаат со излезните страници на извештајот!). Во нашиот пример, настанот се повикува еднаш, бидејќи дизајнот на извештајот се состои само од една дизајнерска страница.
Потоа, настаните на податочните ленти се повикуваат во следниот редослед:
1. настанот “OnBeforePrint” на лентата се повикува
2. настанот “OnBeforePrint” на секој објект содржан во лентата се повикува
3. секој објект се пополнува со податоци (во нашиот пример со вредности на полињата “Company” и “Addr1" од базата на податоци)
4. настанот “OnAfterData” на секој објект се повикува
5. се извршуваат акции како позиционирање на објектите на лентата (ако има растегливи објекти меѓу нив), пресметување на висината на лентата и нејзино растегнување (ако е растеглива)
6. настанот “OnAfterCalcHeight” на лентата се повикува
7. се создава нова излезна страница ако лентата нема доволно простор во белото место на страницата
8. лентата и сите нејзини објекти се прикажуваат на излезната страница
9. настанот “OnAfterPrint” на секој објект од лентата се повикува
10. настанот “OnAfterPrint” на самата лента се повикува
Лентите продолжуваат да се печатат додека изворот поврзан со лентата има податоци. По тоа, печатењето на извештајот се прекинува, настанот “OnAfterPrint” на страницата на извештајот се повикува и на крајот настанот “OnStopReport” на објектот “Report”.
Така, користејќи ги настаните на различни објекти, практично секој чекор од процесот на создавање извештај може да се управува. Клучот за користење на настаните е темелно разбирање на процесот на излез на лентата, што е опфатено во следните делови. Повеќето од акциите можат да се извршат користејќи само настанот “OnBeforePrint” на лентата; сите модификации направени на објект веднаш се прикажуваат. Сепак, ако лентата е растеглива, невозможно е да се каже во овој настан на која страница лентата ќе биде отпечатена, бидејќи пресметувањето на висината на лентата се извршува во чекор 5. Сепак, тоа може да се направи, или во настанот “OnAfterCalcHeight” во чекор 6 или во настанот “OnAfterPrint” во чекор 9. Имајте на ум дека во последниот настан лентата веќе ќе биде излезена, така што модификацијата на објектите нема да има никаков видлив ефект.
Клучно е јасно да се разбере “каде и кога” лентите се излезени и да се разбере времето (редослед на повикување) на секој од нивните настани. Исто така и за секој од објектите содржани во лентите.