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 integrate data validation to our data window. 2 - Implementation Steps Open customers.SFF Fig. 1 Declare and define the method CheckData Fig. 2 Fig. 3 Fig. 4 Fig. 5 Open method CheckData Fig. 6 Fig. 7 Fig. 8 Fig. 9 Fig. 10 Fig. 11 Fig. 12 Fig. 13 Fig. 14 Fig. 15 Fig. 16 Fig. 17 Fig. 18 Fig. 19 Fig. 20 Fig. 21 Fig. 22 Fig. 23 Fig. 24 Fig. 25 Fig. 26 Fig. 27 Fig. 28 Fig. 29 Press CTRL+R to generate the source code file Customers.PRG Fig. 30 Open Main.SSF and run the application Fig. 31 3 - Final Steps Tree ======================= Customers.SSF ======================= Set Class Name & Window Name PWCT-Code Generator: Replace String (MyClassName) with (CustomersDataClass) PWCT-Code Generator: Replace String (MyWindowName) with (&(self:cWindowName)) Class Define Class MyClassName From SystemDatabase Declare Class Data Data cWindowName Init Value "CustomersDataWindow" ************************** Record Data Here ************************** Data TableName Init Value "Customers" Data cCustName Init Value "" Data cCustAddress Init Value "" Data cCustPhone Init Value "" Country Data nCountry Init Value 0 Data CountryItems Init Value {} Data CountryItemsIDs Init Value {} Data dDateOfBirth Init Value date() Declare Class Methods Method showwindow Method closewindow Method SetMode Method UserInterface2Class Method Class2ADO Method ADO2Class Method Class2UserInterface Method ClearRecord Method AutoGotoRecord Method CheckData End of Class ******************************* Methods to Customize ***************************** Define Method showwindow Class MyClassName Start Here myout = self.connect() myout = self.AutoGotoRecord() Define New Window ( MyWindowName ) , Title : "Customers Data" Window Events Window Properties Window Controls Define New Image ( image1 ) , Image : "image\Back.jpg" Events Properties Window Title Define Label ( lblTitle ) , Caption : "Customers Data Window" Label Events Label Properties Data Buttons Define New Button ( btnFirst ) , Caption : "First" Button Events Event: ON CLICK : Action self:firstrecord() Button Properties Define New Button ( btnNext ) , Caption : "Next" Button Events Event: ON CLICK : Action self:nextrecord() Button Properties Define New Button ( btnLast ) , Caption : "Last" Button Events Event: ON CLICK : Action self:lastrecord() Button Properties Define New Button ( btnClose ) , Caption : "Close" Button Events Event: ON CLICK : Action self:closewindow() Button Properties Define New Button ( btnPrev ) , Caption : "Prev " Button Events Event: ON CLICK : Action self:prevrecord() Button Properties Define New Button ( btnDel ) , Caption : "Delete" Button Events Event: ON CLICK : Action self:delrecord() Button Properties Define New Button ( btnsave ) , Caption : "Save" Button Events Event: ON CLICK : Action self:saverecord() Button Properties Define New Button ( btncancel ) , Caption : "Cancel" Button Events Event: ON CLICK : Action self:cancelrecord() Button Properties Define New Button ( btnedit ) , Caption : "Edit" Button Events Event: ON CLICK : Action self:editrecord() Button Properties Define New Button ( btnadd ) , Caption : "Add" Button Events Event: ON CLICK : Action self:addrecord() Button Properties Define Label ( lbl1 ) , Caption : "Name" Label Events Label Properties Define Label ( lbl2 ) , Caption : "Address" Label Events Label Properties Define Label ( lbl3 ) , Caption : "Phone" Label Events Label Properties Define TextBox ( textName ) TextBox EVENTS TextBox Properties Define TextBox ( textAddress ) TextBox EVENTS TextBox Properties Define TextBox ( textPhone ) TextBox EVENTS TextBox Properties Country myout = Self.LoadLookupTable("country","country",@self:countryitems,"id",@self:countryitemsids) Define Label ( lblCountry ) , Caption : "Country" Label Events Label Properties Define Combobox ( comboCountry ) , Items : self:CountryItems Combobox Events Combobox Properties Define Label ( lbl5 ) , Caption : "Date of Birth" Label Events Label Properties Define New DatePicker ( DateOfBirth ) Events Properties End Of Window MyWindowName.Center ( ) myout = self.showrecord() myout = self.setmode(2) Activate window End of Method (Return 0) Define Method UserInterface2Class Class MyClassName Start Here self:cCustName = MyWindowName.textName.Value self:cCustAddress = MyWindowName.textAddress.Value self:cCustPhone = MyWindowName.textPhone.Value Country self:nCountry = MyWindowName.ComboCountry.Value self:nCountry = self:CountryItemsIDs[self:nCountry] self:dDateOfBirth = MyWindowName.DateofBirth.Value End of Method (Return 0) Define Method Class2ADO Class MyClassName Start Here ADODB RecordSet (self:oRS) Set Field ("CustName") Value To (self:cCustName) ADODB RecordSet (self:oRS) Set Field ("CustAddress") Value To (self:cCustAddress) ADODB RecordSet (self:oRS) Set Field ("CustPhone") Value To (self:cCustPhone) ADODB RecordSet (self:oRS) Set Field ("CountryID") Value To (self:nCountry) ADODB RecordSet (self:oRS) Set Field ("DateOfBirth") Value To (self:dDateOfBirth) End of Method (Return 0) Define Method ADO2Class Class MyClassName Start Here self:cCustName = ADODB RecordSet (self:oRS) Get Field ("CustName") Value self:cCustAddress = ADODB RecordSet (self:oRS) Get Field ("CustAddress") Value self:cCustPhone = ADODB RecordSet (self:oRS) Get Field ("CustPhone") Value self:nCountry = ADODB RecordSet (Self:oRS) Get Field ("CountryID") Value self:dDateOfBirth = ADODB RecordSet (self:oRS) Get Field ("DateOfBirth") Value End of Method (Return 0) Define Method Class2UserInterface Class MyClassName Start Here MyWindowName.textName.Value := self:cCustName MyWindowName.textAddress.Value := self:cCustAddress MyWindowName.textPhone.Value := self:cCustPhone Country self:nCountry = self.LookupIDToIndex(self:nCountry,@self:CountryItemsIDs) MyWindowName.ComboCountry.Value := self:nCountry MyWindowName.DateOfBirth.Value := self:dDateofBirth End of Method (Return 0) Define Method ClearRecord Class MyClassName Start Here self.cCustName = "" self.cCustAddress = "" self.cCustPhone = "" self.nCountry = 0 self.dDateOfBirth = Date() End of Method (Return 0) Define Method setmode(p1) Class MyClassName Start Here IF ( p1 = 1 ) Start Here MyWindowName.btnfirst.Enabled := false MyWindowName.btnnext.Enabled := false MyWindowName.btnprev.Enabled := false MyWindowName.btnlast.Enabled := false MyWindowName.btndel.Enabled := false MyWindowName.btnclose.Enabled := false MyWindowName.btnsave.Enabled := true MyWindowName.btncancel.Enabled := true MyWindowName.btnedit.Enabled := false MyWindowName.btnadd.Enabled := false MyWindowName.textName.Enabled := true MyWindowName.textAddress.Enabled := true MyWindowName.textPhone.Enabled := true MyWindowName.ComboCountry.Enabled := True MyWindowName.DateOfBirth.Enabled := True END OF IF STATEMENT IF ( p1 = 2 ) Start Here MyWindowName.btnfirst.Enabled := true MyWindowName.btnnext.Enabled := true MyWindowName.btnprev.Enabled := true MyWindowName.btnlast.Enabled := true MyWindowName.btndel.Enabled := true MyWindowName.btnclose.Enabled := true MyWindowName.btnsave.Enabled := false MyWindowName.btncancel.Enabled := false MyWindowName.btnedit.Enabled := true MyWindowName.btnadd.Enabled := true MyWindowName.textName.Enabled := False MyWindowName.textAddress.Enabled := False MyWindowName.textPhone.Enabled := False MyWindowName.ComboCountry.Enabled := False MyWindowName.DateOfBirth.Enabled := False END OF IF STATEMENT self:OperationMode = p1 End of Method (Return 0) Define Method CheckData Class MyClassName Start Here Local myret,cName,nCountry myret = True Check Name cName = MyWindowName.textName.Value cName = All Trim cName IF ( cName == "" ) Start Here Show Message "Enter Customer Name" Title "Sorry" Type: Message Info myret = False END OF IF STATEMENT Check Country nCountry = MyWindowName.ComboCountry.Value IF ( nCountry = 0 ) Start Here Show Message "Please select the country" Title "Sorry" Type: Message Info myret = False END OF IF STATEMENT End of Method (Return myret) Class Methods Define Method closewindow Class MyClassName Start Here myout = self.disconnect() MyWindowName.Release ( ) End of Method (Return 0) Define Method AutoGotoRecord Class MyClassName Start Here IF ( self:LFindRecord = true .and. self:OperationMode = 2 ) Start Here ADODB RecordSet (self:oRS) Find , Cirteria self:CFindExpr mycheck = ADODB RecordSet self:oRS , Check EOF IF ( mycheck = true ) Start Here ADODB RecordSet self:oRS - Goto Previous Record END OF IF STATEMENT IF ( iswindowdefined( MyWindowName ) ) Start Here myout = self.showrecord() MyWindowName.SetFocus ( ) END OF IF STATEMENT END OF IF STATEMENT self:LFindRecord = false self:CFindExpr = "" End of Method (Return 0) 4 - Application during the runtime Fig. 32
|