PWCT 1.9 Art Documentation ( http://doublesvsoop.sourceforge.net ) 2006-2019, Mahmoud Fayed ( msfclipper@users.sourceforge.net ) _____________________________________________________________________________________ Table of contents 1 - Introduction 2 - Implementation steps 3 - Final Steps Tree 4 - Application during the runtime 1 - Introduction In this lesson we are going to learn how to use the (Access report with filter - Child Class) template. 2 - Implementation Steps Create new file using the template (Access report with filter – child class) Fig. 1 File name = CustomersReport2.SSF Fig. 2 Fig. 3 Set class name = CustomersReport2Class Fig. 4 Fig. 5 Fig. 6 Set report name = Customers_All Fig. 7 Fig. 8 Set datecolumn = DateOfBirth Fig. 9 Set the property cWindowName to CustomersReport2Window Fig. 10 Delete the attribute OrderColumn Fig. 11 Fig. 12 Fig. 13 Fig. 14 Delete step (Order Number) Fig. 15 Fig. 16 Open method SizeReport Delete step Order Number Controls Resize Fig. 17 Fig. 18 Open method CheckChange Delete steps that check the order number Fig. 19 Fig. 20 The cDate() function used to convert text column to data column Since dateofbirth is a date column not text, we don’t need to use cDate() with dateofbirth (self:dateColumn) Fig. 21 Fig. 22 Press CTRL+R to generate the source code file CustomersReport2.PRG Fig. 23 Open Main.SSF Fig. 24 Use the component (Set procedure to) to include the source code file (CustomersReport2.PRG) Fig. 25 Fig. 26 Create new object CustomersReport2Object of class CustomersReport2Class Fig. 27 Fig. 28 Fig. 29 Fig. 30 Fig. 31 Fig. 32 Fig. 33 Fig. 34 Fig. 35 Fig. 36 Fig. 37 Fig. 38 Fig. 39 3 - Final Steps Tree ======================= Main.SSF =======================
The First Step Load System Modules Set Procedure to "About.PRG" Set Procedure to "Database.PRG" Set Procedure to "Customers.PRG" Set Procedure to "CustomersBrowse.PRG" Set Procedure to "CustDataBrowse.PRG" Set Procedure to "CustomerBrowse2.PRG" Set Procedure to "ReportParent.PRG" Set Procedure to "CustomersReport.PRG" Set Procedure to "CustomersReport2.PRG" Create System Objects Create Object AboutObject of Class AboutClass Create Object CustomersDataObject of Class CustomersDataClass Create Object CustomersBrowseObject of Class CustomersBrowseClass Create Object CustDataBrowseObject of Class CustDataBrowseClass Create Object CustomersBrowse2Object of Class CustomersBrowse2Class Create Object CustomersReportObject of Class CustomersReportClass Create Object CustomersReport2Object of Class CustomersReport2Class Define New Window ( win1 ) , Title : "System" Window Events Window Properties Window Controls START OF MAIN MENU MENU POPUPS DEFINE POPUP "File" POPUP ITEMS Define ITEM ( "Customers Data/Browse" ) Define ITEM ( "Customers Browse" ) Define ITEM ( "Customers Browse by Country" ) Define ITEM ( "Customers" ) Define ITEM ( "Customers Report" ) Define ITEM ( "Customers Report - filter by date of birth" ) Define ITEM ( "About" ) Define ITEM ( "Close System" ) END OF POPUP END OF MAIN MENU Define New Statusbar Items Define New StatusItem ( "Ready" ) Events Properties Keyboard Events Properties Clock Events Properties End Statusbar End Of Window win1.Maximize ( ) Activate window Procedures Define Procedure closesystem Start Here win1.Release ( ) End of Procedure
============================ CustomersReport2.SSF ============================
Set Class Name & Window Name PWCT-Code Generator: Replace String (MyClassName) with (CustomersReport2Class) PWCT-Code Generator: Replace String (MyWindowName) with (&(self:cWindowName)) Class Define Class MyClassName From Report_Base Declare Class Data Data ReportName Init Value "Customers_All" Data datecolumn Init Value "DateOfBirth" Data cWindowName Init Value "CustomersReport2Window" Declare Class Methods Method showwindow Method closewindow Method SizeReport Method checkchange End of Class Class Methods Define Method ShowWindow Class MyClassName Start Here Define New Window ( MyWindowName ) , Title : "Report" Window Events Event: ON INIT : Action self:ShowReport() Event: ON SIZE : Action self:SizeReport() Event: ON MAXIMIZE : Action self:SizeReport() Window Properties Window Controls Define New Button ( btn1 ) , Caption : "Close" Button Events Event: ON CLICK : Action self:CloseWindow() Button Properties Define New Button ( btn2 ) , Caption : "Print" Button Events Event: ON CLICK : Action self:PrintReport() Button Properties Define New Button ( btn3 ) , Caption : "Refresh" Button Events Event: ON CLICK : Action self:ShowReport() Button Properties Active Control ( self:oActiveX ) Date Range Controls Define Label ( lbl1 ) , Caption : "From" Label Events Label Properties Define Label ( lbl2 ) , Caption : "To" Label Events Label Properties Define CheckBox ( check1 ) , Caption : "Date Range :" CheckBox Events Event: ON CHANGE : Action self:checkchange() CheckBox Properties Define New DatePicker ( datepicker1 ) Events Event: ON CHANGE : Action self:checkchange() Properties Define New DatePicker ( datepicker2 ) Events Event: ON CHANGE : Action self:checkchange() Properties End Of Window MyWindowName.Maximize ( ) Activate window End of Method (Return 0) Define Method CloseWindow Class MyClassName Start Here MyWindowName.Release ( ) End of Method (Return 0) Define Method SizeReport Class MyClassName Start Here Local tempvar1,tempvar2 tempvar1 = MyWindowName.Width tempvar2 = MyWindowName.Height self:oactivex.nWidth := tempvar1 - 84 self:oactivex.nHeight := tempvar2 - 125 MyWindowName.btn1.Row := tempvar2-88 MyWindowName.btn2.Row := tempvar2-88 MyWindowName.btn3.Row := tempvar2-88 self:oactivex.Show ( ) Date Range Controls Resize MyWindowName.lbl1.Row := tempvar2 - 88 MyWindowName.lbl2.Row := tempvar2 - 88 MyWindowName.check1.Row := tempvar2 - 88 MyWindowName.DatePicker1.Row := tempvar2 - 88 MyWindowName.DatePicker2.Row := tempvar2 - 88 End of Method (Return 0) Define Method CheckChange Class MyClassName Start Here Check Filter tvalue = MyWindowName.Check1.Value self.filter = "" IF ( tvalue = true ) Start Here cdate1 = MyWindowName.Datepicker1.Value cdate2 = MyWindowName.Datepicker2.Value cdate1 = CONVERT Date cdate1 TO String cdate2 = CONVERT Date cdate2 TO String cdate1 = All Trim cdate1 cdate2 = All Trim cdate2 self.filter = self:datecolumn+" >= cdate('" + cdate1 + "') and "+self:datecolumn+" <= cdate('" + cdate2 + "')" ELSE Start Here self.filter = "1 = 1" END OF IF STATEMENT End of Method (Return 0) 4 - Application during the runtime Fig. 40 Fig. 41 Fig. 42
|