* Create a Report Listener object Local loReportListener loReportListener = Newobject("MyReportListener") loReportListener.ListenerType = 0 * Create a cursor that will be the report data source and insert some records Create Cursor curTest (field1 c(100)) Local i For i=1 To 64 Insert Into curTest Values (Str(i)+" test, test, test, test, test, test, test, test, test, test, test, test, test") Endfor Select curTest Go Top * Create a report on the fly Create Report Test1 From curTest Create Report Test2 From curTest Create Report Test3 From curTest * Run the report using the new report engine (object-assisted output) Report Form Test1 Object loReportListener Nopageeject To Printer Prompt Report Form Test2 Object loReportListener Nopageeject Noreset Report Form Test3 Object loReportListener Noreset * Close cursor and delete the report file Use In curTest Delete File Test?.fr? Return * Create a class derived from _ReportListener base class and add some features Define Class MyReportListener As _ReportListener Of Addbs(Home()) + "FFC\_ReportListener.VCX" * Internal to the class Hidden nFromPage, nToPage nFromPage = 1 nToPage = 65534 * Procedure BeforeReport If This.CommandClauses.Prompt * Save the range selected in prompt to know which page must be printed If Not (This.CommandClauses.RangeFrom==1 And This.CommandClauses.RangeTo==-1) This.nFromPage = This.CommandClauses.RangeFrom This.nToPage = This.CommandClauses.RangeTo Endif Endif Endproc * Procedure IncludePageInOutput Lparameters nPageNo Return Between(This.PageNo,This.nFromPage,This.nToPage) Endproc * Enddefine