403Webshell
Server IP : 182.53.201.61  /  Your IP : 216.73.217.175
Web Server : Apache/2.2.15 (Fedora)
System : Linux km10.dyndns.org 2.6.31.5-127.fc12.i686.PAE #1 SMP Sat Nov 7 21:25:57 EST 2009 i686
User : apache ( 48)
PHP Version : 5.3.3
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/html/Strategy/AH/file/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/Strategy/AH/file/_Visual_Foxpro.doc
ࡱ>	 	*bjbj
F l|||8|@4Ԍ"qqqg(i(i(i(i(i(i(A Czi(qO"qqqi(YN@qMg(qg(܈Qu|iN
"ld@0@bD
bD@#4H!I1 Visual Foxpro 
2#*#I2#026I!2*1+6H#01I 3@G-"H2"4H5H0I-!52#@5"B#A#!!2'8!2#32-*H'H2F C+I@GD2!'2!I-2#-9IC
I2 C2#@5"B#A#!AH%0 2)20!5'452#@5"AH21--D AHB"+%12#A%I'D!H'H28032#@5"B#A#!I'" 2)2-0D#G2!3*1HA%01L
1H0D!H@+!7-115@5"' AH+%1A%0'452#@5"B#A#!0@GCA'2@5"'1C"81815I'452#@5"B#A#! DI12D@G2#@5"B#A#!@
4'18 (Object-Oriented Programming OOP) 6HH-+I25I@#2@"
412#@5"B#A#! AB#*#I2(Structure Programming) 0*1@DI'H2122#I2B#A#!DI!5'2!I2'+I26I@#7H-"F 6H0-3'"'2!*0'C2#@5"B#A#!C+IAH9I12#02!2"4H6I'H2@!7H-H- Visual FoxPro G@G-5+6HB#A#!5HDI12!2#01H@GB#A#!A OOP 6HH-012!2@G Visual FoxPro 1IB#A#!DI12@#4H!I!22 FoxBase, FoxPro A%I'G!26 Visual FoxPro 5H@#23%1%H2'6-"9H5I 

@#4H!@5"B#A#!A# @!7H-8@I2*9HB#A#! Visual FoxPro A%I' C+I8*#I2B#A#!2!1'-"H215I
 1. 2@!9 File @%7-3*1H New  2. @%7- Program  3. 4!L
7H-B#A#! 'H2 Program1 
+#7- 32#4!L3*1HH22 Command Window B"4!L 3*1H MODIFY COMMAND Program1 A%I'8H! Enter  

@%GD!H%1 -@I2*9HB#A#!I2D!HI-2#C+I Visual FoxPro A*B%BI6I!2C+IC*Hparameter -T D'II2+%1 VFP.EXE -T
Visual FoxPro 032#*#I2+I2H26I!2C+IB"!5
7H-'H2 Program1 6HG7-
7H-D%L 6-5I8G32#I-3*1H2!1'-"H2@I2DDI@%" 
* Program1 #DEFINE myProgram "B#A#!-	1" PRIVATE nVAR myForm = CREATEOBJECT("TestForm") myForm.Show STORE 1 TO nVAR DO WHILE nVAR <= 300 myForm.Height = nVAR myForm.Width = nVAR nVAR = nVAR + 1 ENDDO FOR nVAR = 4 to 400 STEP 4 myForm.left = nVAR myForm.top = nVAR / 4 ENDFOR && NEXT READ EVENTS DEFINE CLASS Testform AS FORM Caption = myProgram Left = 1 Top = 1 Height = 1 Width = 1 ADD OBJECT MyButton AS CommandButton WITH ; Caption = "Cancel", Forecolor = RGB(255,0,0), ; Left = 100, Top = 120, Height = 30, Width = 100 * Define the command button myButton Click event method PROCEDURE myButton.Click RELEASE THISFORM CLEAR EVENTS ENDPROC ENDDEFINE
+%125HI-@*#G@#5"#I-"A%I' C+I32#16B#A#! B"2#8H! Ctrl-W +#7- 2@!9 File @%7-3*1H Save GDI 
-5I@#2G*2!2#@#5"B#A#!6I!2C
I2DIA%I'B"  1. 2@!9 Program @%7-3*1H Do  2. @%7-B#A#!5HI-2# 6HG7- Program1 A%I'%4J5H8H! DO 
+#7- 32#4!L3*1HH22 Command Window B"4!L 3*1H DO Program1 A%I'8H! Enter 
6-5II283*3@#G8G0DI@+G+I2H2"2" A%I'G@%7H-5HDI G-A*'2!"4518I'" C-5I8"1D!HI-D*C'H2B#A#!5I!53*1H-0D#3D!6@5"A@GF 6H3*1HA%0'452#H2F !032#-42"C+I@I2CC-H-FD 
C#55H8I-2#AIDB#A#!  1. 2@!9 File @%7-3*1H Open  2. @%5H" file of type @G Program  3. @%7-B#A#!5HI-2# A%I'%4J8H! OK 
+#7- 32#4!L3*1HH22 Command Window B"4!L 3*1H MODIFY COMMAND Program1 A%I'8H! Enter 
@-2%0@5"B#A#!@GA%I'%04 H-25ID@#20!296'452#A%0#0@ -I-!9%C Visual FoxPro 1 6H#0-DI'"   HYPERLINK "http://kasem.sstplus.com/" \l "#0@ -I-!9%A%04%L (Data and Field Types)" #0@ -I-!9%A%04%L (Data and Field Types)   HYPERLINK "http://kasem.sstplus.com/" \l "2#@GI-!9% (Storing Data)" 2#@GH2-I-!9% (Storing Data)   HYPERLINK "http://kasem.sstplus.com/" \l "B-@-@#@-#L (Operators)" B-@-@#@-#L (Operators)   HYPERLINK "http://kasem.sstplus.com/" \l "2#*#I24L (Building" 2#*#I24L (Building Expressions) 
#0@ -I-!9%A%04%L (Data and Field Types) 
2#@GI-!9%H2F %AI!I-!9% @#23@GI-#2'H2%1)0-I-!9%5H@#20@G1I7--0D# '#0@G@GAC @7H-C+I#1'2!I-2#!25H*8 
#0@ I-!9%C Visual FoxPro  
Data TypeDescriptionSizeRangeCharacterAny Text1 Byte per CharacterAny CharactersCurrencyMonetary amounts8 Bytes-92222337203685477.5808 to 922337203685477.5807DateChronological data Consisting of Month, Year and Date8 Bytes01/01/100 to 12/31/9999DateTimeChronological data Consisting of Month, Year ,Date and Time8 Bytes01/01/100 to 12/31/9999, plus 00:00:00 a.m. to 11:59:59 p.m.Logical BooleanValue of true or false1 ByteTrue(.T.) or False(.F.)NumericIntegers or Fractions8 Bytes in Memory; 1-20 Bytes in table-9999999999E+19 to .9999999999E+20AI!I-!9%- FoxPro 0!52!*8%'H2 .DBF @7H-C+I1*!1"+H-" C Visual FoxPro @%"@#5"AI! DBF 'H2 Table @+G5HD+G-"H2DA%C !1G7-1@J- 
#0@ -4%LC Visual FoxPro  
Field TypeDescriptionSizeRangeDoubleA double-precision Floating-point number8 bytes+/-4.94065645841247E-324FloatSame as Number8 bytes in Memory:1-20 Bytes in table-.9999999999E+19 to .9999999999E+20GeneralReference to an OLE Object4 bytes in tableLimited by available memoryIntegerInterger values4 bytes-2147483647 to 2147483647MemoReference to a block of data4 bytes in tableLimited by available memory   
@%GD!H%1 8*2!2#C
I1L
1H TYPE() @7H-A*#0@ -I-!9%5H@GDI2#@GI-!9% (Storing Data) 
2#@GI-!9%-81I8'#3662#@GI-!9%C+I@+!20*!1
45H!1##8-"9H(Container) B"A*D'I2!2#215I   
ContainerScopeExampleConstantsPrivate#DEFINE myprogram "B#A#!-	1"VariablesPublic,PrivateSTORE 1 to nVARArraysPublic,PrivatecARRAY[1,1] = "-0@#"L-	1"FieldsPermanent storageREPLACE name WITH "
7H--	1"ObjectProperties Referenced through the objectTestform.Caption = myProgramCVisual FoxPro 80DI1 Contrainer -"9H%-@'%2A%I'!17--0D# ? !GD!HH-"0#9I*1@H2D+#H AH-0@2F DI'H2 !17--0D#G2!5H@G8-"H2@5H"'1I-!9%-8 D!H'H20@G 1'A#,4%L,-0@#"L +#7-A!IAH8*!14-'18 (Object Properties) 
H25H (Constants) 
H25H7-1'A# 5HC
I@GH2H2F5H@-2D'C
ICB#A#!-@#2B"5HD!H!52#@%5H"A% C2#3+H25H @#20C
I3*1H 
 #DEFINE ConstantName eExpression 
 @
H #DEFINE myprogram "B#A#!-	1" 
I2I-2#"@%4H25HC+IC
I3*1H #UNDEF ConstantName 
1'A# (Variables) 
1'A#7-
7H-5H@#21I6I!2@7H-C
IAH2H2F5H@#2@GD'I B"H25H@GD'I1I*2!2# @%5H"A%@GH2-7HFDI2!I-2# 2#3+H21'A#@#2C
I3*1H 
 STORE +#7- = 
 @
H STOR 1 TO nVAR  nVAR = 1 
-@(scope)2#C
I21'A#@#2*2!2#3+C+I1'A#1IF@G1'A#A I-4H (Private) +#7-@G1'A#A*22#0(Public) DIB"2#C
I3*1H 
 *3+#11'A#I-4H PRIVATE MemVarList 
 - +#7- - 
 PRIVATE ALL [LIKE Skeleton | EXCEPT Skeleton] 
 *3+#11'A#*22#0 PUBLIC MemVarList 
 - +#7- - 
 PUBLIC [ARRAY] ArrayName1 (nRows1 [, nColumns1])  [, ArrayName2 (nRows2 [, nColumns2])] ... 
A%I!1!5#0B"
L-"H2D#%H0? 2#C
I1'A#CB#A#!H2FI2@#2D!HDI3+'H2@G Public 2 Visual FoxPro 07-'H21'A#1I@GA Private I-AHH2-!1-"9H#5H 1'A#Private H2H2F*2!2#C
IDI@	20 CB#A#!(procedure) 1IF@H21I@!7H-3
7H-1'A#DC
ICB#A#!-7HH2H2F G09%I2-- *H' Public H2H2F5H3+D'I*2!2#C
IDI85H-#02-8 B"!10!5H22!H2+%1*85H3+C+I 
-0@#"L (Arrays) 
-0@#"L7-
8-1'A#5H-I26B"C
I1'@% 1'A#-0@#"L0@G-"9HC memory --!4'@-#L !1632DI#'@#G'!2 @!7H-H265!7-61I+6HA%I' 2#C
I1'A#-0@#"L0@G*4H3@G-"H2"4H C2#*#I21'A#-0@#"L1I@#2C
I3*1H 
 DECLARE [cFunctionType] FunctionName IN LibraryName [AS AliasName]  [cParamType1 [@] ParamName1, cParamType2 [@] ParamName2, ...] 
 +#7- DIMENSION ArrayName1 (nRows1 [, nColumns1])  [, ArrayName2 (nRows2 [, nColumns2])] ...
 @
H DIMENSION cARRAY[5] 
 DECLARE cARRAY[2,5]
4%L (Fields) 
4%L7-
7H--I-!9%5H@G-"9HC@#-#L(record) 
7H-4%L0*#I2B"2#*#I2 Table 2#*#I2 Table C Visual FoxPro C
I3*1H 
 CREATE TABLE | DBF TableName1 [NAME LongTableName] [FREE]  (FieldName1 FieldType [(nFieldWidth [, nPrecision])]  [NULL | NOT NULL]  [CHECK lExpression1 [ERROR cMessageText1]]  [DEFAULT eExpression1]  [PRIMARY KEY | UNIQUE]  [REFERENCES TableName2 [TAG TagName1]]  [NOCPTRANS]  [, FieldName2 ...]  [, PRIMARY KEY eExpression2 TAG TagName2  |, UNIQUE eExpression3 TAG TagName3]  [, FOREIGN KEY eExpression4 TAG TagName4 [NODUP]  REFERENCES TableName3 [TAG TagName5]]  [, CHECK lExpression2 [ERROR cMessageText2]])  | FROM ARRAY ArrayName
 +#7- CREATE [FileName | ?]
 @
H CREATE TABLE customer (SalesID c(6), CustName c(20),;  FOREIGN KEY SalesId TAG SalesId REFERENCE SALESMAN) 
'18 (Object) 
'187- %2*(class)*3@#G#9 8*2!2#3!1DC
I2DI C
HD+!!G"1F-"9HAH-!!5 - 9 20 1' 1I!"1'-"H2(@-2A!HI31I 5 I31I1I)@%"A%I'1 'H2D-I5H@2-'H2@G Object-Oriented Programming !1@G-"H2D# 8@"@%H 1'H- hobby +#7-D!H I2D!H@"D!HI-!2-! !10A"@G
4IF*3@#G!2C+IA%I'C
H+#7-D!H A%I'!1G0!52' !5*5 !5-0D#-5G
H2!1GA%I'1 D-I1'5IA+%0!1G@*!7-@G%2* @#2G3!1!2#0-1 B"32'!243*5!2AI! '5IG7- 8*!14(properties)6H@#23!2AHAI!!1@I2D @!7H-3@*#G!1G0@G+8HC+I@#2 @+!7-11 OOP 1HA+%0@-2%2*!2!1H'F1@5K"' !1G--!2@GB#A#!@- *H'#0%0@-5"A@7I- * 1 D'I42!DICH-FD 
B-@-@#@-#L (Operators) 
B-@-@#@-#L0@G1'5H3C+I8*2!2#@%7H-"I2"I-!9% @#5"@5"I-!9%H2F C Visual FoxPro DIAH B-@@#@-#LD'I15I 
  HYPERLINK "http://kasem.sstplus.com/" \l "B-@-@#@-#L1'-1)# (Character" B-@-@#@-#L1'-1)# (Character Operators)   HYPERLINK "http://kasem.sstplus.com/" \l "B-@-@#@-#L'15HA%0@'%2 (Date and Date Time" B-@-@#@-#L'15HA%0@'%2(Date and Date Time Operators)   HYPERLINK "http://kasem.sstplus.com/" \l "B-@-@#@-#L##0(Logical Operators)" B-@-@#@-#L##0(Logical Operators)   HYPERLINK "http://kasem.sstplus.com/" \l "B-@-@#@-#L@#5"@5"(Relational" B-@-@#@-#L@#5"@5"(Relational Operators)   HYPERLINK "http://kasem.sstplus.com/" \l "B-@-@#@-#L1'@%(Numeric Operators)" B-@-@#@-#L1'@%(Numeric Operators)
B-@-@#@-#L1'-1)# (Character Operators) 
B-@-@#@-#L1'-1)#0C
I*3+#1@
7H-!1'-1)# 1IAH 2 %8H!@I2I'"1 B"2#C
IB-@-@#@-#L + - A%0 @#5"@5"1'-1)# 2 %8H!B"C
IB-@-@#@-#L $ 
 @
H ?  *'1*5   +  #1   *'1*5 #1 (%%1L5HDI) 
 cVAR =  *'1*5    ? cVAR    #1   *'1*5#1 (%%1L5HDI) 
 ?'#1' $ '*'1*5#1  .T. (%%1L5HDI)
B-@-@#@-#L'15HA%0@'%2 (Date and Date Time Operators) 
C
I' +#7-%'15H 
 @
H SET DATE DMY  ? DATE() + 30 (*!84'15H181@@G 15/09/98)  10/15/98 (%%1L5HDI) 
 ? DATE() - {17/06/98}  90 (%%1L5HDI)
B-@-@#@-#L##0(Logical Operators) 
C
IDI18#0@ -I-!9% 6H#0-I'"B-@-@#@-#L () , NOT +#7- ! , AND , OR 
 @
H IF !(cVAR= *'1*5 ) OR (nSaraly >= 50000)
B-@-@#@-#L@#5"@5"(Relational Operators) 
B-@-@#@-#L@#5"@5"#0-DI'" 
<I-"'H2>!2'H2<>, # , !=@H21<=D!H@H21>=!2'H2+#7-@H21==C
I@#5"@5"I-'2! 2 I-'2!B-@-@#@-#L1'@%(Numeric Operators) 
C
IC2#3'H2H2F #0-DI'"  
OperatorDescription%312#32( )A%8H!3'%315H 1**, ^"3%1%315H 2* , /9 , +2#%315H 3%+2@()%315H 4+ , -' , %%315H 5 @
H ? (4+5) * 10 - (12%10) ^ 2  86.00 (%%1L5HDI) 
2#*#I24L (Building Expressions) 
4L7--0D# 7-I-"A%5H!5'2!+!2"3C+IB#A#!#9I1 *2!2#4142!3*1HDI I2"1D!HH-"0@I2CC+I%-"I-%1D91'-"H2B#A#!A# CB#A#!+6HF 0#0-DI'"I-"A%+%2"F I-"A%!2#0-1 @
H  nVAR = 1 + 2  IF (nVAT = 10/100)  FOR nVAR = 4 to 400 STEP 4  ? DATE()  @GI 
2#@5"4L @G(4%0-"H2+6H6I-"9H'H29I5H@5"1IF I-2#C+IB#A#!@G-"H2D# 4L1I-2#0-DI'" 1'-1)# B-@-@#@-#L(Operators) H25H(Constants) 1'A#(Variable) 1L
1H(Function) 15HDI%H2'!2A%I'I2I 
2#1I
7H-C Visual FoxPro  1. C
I1'-1)#, _ (Under Score) A%01'@%  2. 1'A#I-6III'"1'-1)# +#7- Under Score  3. *2!2#1I
7H-DI1IAH 1 1'6 254 1'-1)#  "@'I
7H- Field C Free Table (file 5H!52!*8% .DBF)  A%0 Index Tag 1I
7H-DID!H@4 10 1'-1)#  4. +I2!C
I3*'C Visual FoxPro  
+%1B#A#!@7I-I (Basic Programming)
C2#@5"4L6I!2D!H'H280@5"I'"B#A#! 2)2CG2! 6H-2@G  2)2 C , BASIC +#7- PASCAL 83@G0I-@I2CA%0#9I@5H"'13*1H5HC
IC2#'8!2#32-B#A#! 6H!5-"9H 2 
4 DIAH  HYPERLINK "http://kasem.sstplus.com/chapter2.htm" \l "3*1H5H@5H"'12#*-" 4L3*1H5HC
IC2#*-  , HYPERLINK "http://kasem.sstplus.com/chapter2.htm" \l "3*1H5HC+I32I3F1" 3*1H5HI-2#C+I32I3F1  C'2!4!1II29I5HI-2#0@G +#7-@GB#A#!@!-#LD!H#23*1H#0@ 5IA%I' @%4@GB#A#!@!-#LA%I'D2"@I2.'"05'H2 
3*1H5H@5H"'12#*- 3*1H#0@ 5I0!52#*-H2-1'A#@7H-1*4C (Decision) 'H2032##0!'%%-0D#H-D 6H2@%7-C2#4*4C-2!5DI+%2"2@%7-GDI C Visual FoxPro !53*1H#0@ 5IDIAH  3*1H IF..ENDIF  IF lExpression  Commands  [ELSE  Commands]  ENDIF 
 1L
1H IIF()  IIF(lExpression, eExpression1, eExpression2) 
 3*1H DO CASE ... ENDCASE  DO CASE  CASE lExpression1  Commands  [CASE lExpression2  Commands  ...  CASE lExpressionN  Commands]  [OTHERWISE  Commands]  ENDCASE 
55I@#2G!291'H20C
I3*1H@+%H25I-"H2D# C+I832#*#I2B#A#!
7H- Program2 A%I'4!L3*1H2!1'-"H2I2%H2A%I'32##1B#A#!1I9 
* Program2 #DEFINE myProgram "B#A#!A*2#*-@7H-D" PRIVATE nVAR myForm = CREATEOBJECT("TestForm") myForm2 = CREATEOBJECT("DisplayColor") myForm.Show myForm2.Show myForm2.BackColor = RGB(255,0,0)READ EVENTS DEFINE CLASS TestForm AS FORM Caption = myProgram Top = 1 Left = 0 Height = 250 Width = 300 ADD OBJECT MyButton AS CommandButton WITH ;Top = 180, Left = 36, Height = 37, Width = 73, ;Caption = "Exit"ADD OBJECT MyGroup AS OptionGroup WITH ;AutoSize = .T. , ButtonCount = 5, BackStyle = 1, Value = 1 ,;Height=108,Left=36,Top=48,Width=78,;Option1.FontName = "CordiaUPC", Option1.FontSize = 16,;Option1.Caption = "*5A",;Option1.Height = 18, Option1.Left = 5, ;Option1.Top = 5, Option1.Width = 68, ;Option2.FontName = "CordiaUPC", Option2.FontSize = 16, ; Option2.Caption = "*5@+%7-", ;Option2.Height = 18, Option2.Left = 5, ;Option2.Top = 25, Option2.Width = 68, ;Option3.FontName = "CordiaUPC", Option3.FontSize = 16, ;Option3.Caption = "*5@5"'", ;Option3.Height = 18, Option3.Left = 5, ;Option3.Top = 45, Option3.Width = 68, ;Option4.FontName = "CordiaUPC", Option4.FontSize = 16, ;Option4.Caption = "*5I3@4", ;Option4.Height = 18, Option4.Left = 5, ;Option4.Top = 65, Option4.Width = 68, ;Option5.FontName = "CordiaUPC", Option5.FontSize = 16, ;Option5.Caption = "*52'", ;Option5.Height = 18, Option5.Left = 5, ;Option5.Top = 85, Option5.Width = 68ADD OBJECT MyCheckBox AS CheckBox WITH ;Top = 84, Left = 144, Height = 49, Width = 121, ;FontName = "CordiaUPC", FontSize = 16, ;Caption = "A*+I2H2", Value = 1PROCEDURE myButton.ClickRELEASE THISFORMCLEAR EVENTSENDPROCPROCEDURE myCheckBox.ClickIF myForm.myCheckBox.Value = 1myForm2.ShowELSEmyForm2.HideENDIFENDPROCPROCEDURE myGroup.ClickDO CASECASE myForm.myGroup.Value = 1myForm2.BackColor = RGB(255,0,0)CASE myForm.myGroup.Value = 2myForm2.BackColor = RGB(255,255,0)CASE myForm.myGroup.Value = 3myForm2.BackColor = RGB(0,255,0)CASE myForm.myGroup.Value = 4myForm2.BackColor = RGB(0,0,128)CASE myForm.myGroup.Value = 5myForm2.BackColor = RGB(255,255,255)OTHERWISEmyForm2.BackColor = RGB(255,255,255)ENDCASEmyForm2.RefreshENDPROCENDDEFINE DEFINE CLASS DisplayColor AS FORMCaption = myProgramTop = 1Left = 320Height = 250Width = 300ENDDEFINE
@!7H-8DI@#5"B#A#!6I!2A%I'8G0DI1'452#C
I3*1H IF...ENDIF, IIF(), DO CASE...ENDCASE 'H232-"H2D#A%I'8#2+#7-D!H'H2 3*1H IF 13*1H DO CASE H21-"H2D# -"H2-'H2@5"H210#1 @%H2#13*1H*-3*1H5I32@+!7-1 @-I2A%I3!23D!%H0? !1H215H8#0*L 3*1H DO CASE @236I!2@7H-3'2!*0'C2#@5"B#A#!A5H!52@%7-+%2"F 2 *H' 3*1H IF G*2!2#3DI AH2#@5"B#A#!0"8H"2!2'H2#1 "1!5-5"H26C-5!1@5H"'1@#7H--'2!@#G'C2##0!'%%I'" A%I'H2#2+#7-D!H'H23*1HD+32@#G''H21? 
3*1H5HC+I32I3F1 3*1H#0@ 5I0@G3*1H5H!52#*-@7H-DA%I'I2%-@7H-D1I@G#4(True) G032I3F1D'H2@7H-D0@G@G(False) A%I'G0--2%9(Loop) -3*1H1IF 3*1H#0@ 5IDIAH  3*1H DO WHILE...ENDDO  DO WHILE lExpression  Commands  [LOOP]  [EXIT]  ENDDO 
 3*1H FOR...ENDFOR  FOR MemVarName = nInitialValue TO nFinalValue [STEP nIncrement]  Commands  [EXIT]  [LOOP]  ENDFOR | NEXT 
 3*1H SCAN...ENDSCAN  SCAN [NOOPTIMIZE] [Scope] [FOR lExpression1] [WHILE lExpression2]  [Commands]  [LOOP]  [EXIT]  ENDSCAN 
C+I832#*#I2B#A#!
7H- Program3 A%I'4!L3*1H2!1'-"H2I2%H2A%I'32##1B#A#!1I9  * Program3 * Test will hold references to 5 forms PUBLIC ARRAY test(1) DIMENSION test(5) STORE 1 TO nCount DO WHIL nCount <= 20 ? 'Display Loop ====> ' + ALLTRIM(STR(nCount)) nCount = nCount + 1 ENDDO WAIT WINDOW 'Press any key to continue.' * Clear the screen _SCREEN.CLS * Fill the array with forms FOR nCount = 1 TO 5 test(nCount) = CREATEOBJECT("testform") ENDFOR * Ask the user if they want to see the forms nAnswer = MESSAGEBOX("Do you want to see the forms?", ; 36, "Multiple Instances - Arrays") IF nAnswer = 6 && yesFOR nCount = 1 TO 5 IF TYPE("test(nCount)") = "O" && "O" = Object test(nCount).Show test(nCount).Top = 30*nCount test(nCount).Left = 50*nCount _SCREEN.ActiveForm.BackColor=RGB(51*ncount,255,255)&&less than or equal to 255ENDIF ENDFOR ENDIF * Form class testform DEFINE CLASS testform AS Form ADD OBJECT cmdExit As CommandButton WITH ; Caption = "E\<xit", Top = 100, Left = 140, ; Height = 29, Width = 94, Visible = .T. PROCEDURE cmdExit.Click RELEASE ThisForm ENDPROC ENDDEFINE 
3*1H1I 3 3*1HI2I1I!5'2!AH21-*!'# B"3*1H DO WHILE 1I032#*-@7H-DDI8#0@ D!H'H20@G 1'@% 1'-1)# @!7H-DIH2@G#4A%I'G0322!3*1HC%9 DO WHILE @G3*1H1I@4!- foxbase *H'3*1H FOR...NEXT A%0 SCAN 1I@4H0!56IC*!1" FoxPro (H- Visual FoxPro) #4FA%I'3*1H DO WHILE *2!#3DI8-"H2+#7-@7-08-"H25H FOR...NEXT A%0 SCAN 3DI AH@236I@7H-'2!*0'C2#C
I2C+I!5!2"4H6I 3*1H FOR...NEXT 032#*-@7H-D1'@% *H'3*1H SCAN 032#*-@7H-D5H-"9HCAI!I-!9% AH2#C
I2C 2 3*1H+%15I0!5'2!H2"'H2 DO WHILE !2I2C
IC%1)0@5"'1 
21'-"H2I2I!!53*1H+6H5H0-A03C+I8DI3'2!#9I1D'I @#20C2#@5"B#A#!83@G0I-C
I!1-"H2AH- A%I'C1'-"H2H-FD!0"2"2!A#3*1H (command) A%01L
1H (function) H2F@H25H!6--A%0C
I2DI#4  3*1H (1L
1H) MESSAGEBOX( )  1L
1H5I0@G2#A*D-0%-J-L (dialog box) 6I!2@7H-*HH2'*2#2-"H2C+I9IC
I2#2 A%I'-32!2!5HI-2# !5#9A2#C
I15I   MESSAGEBOX(cMessageText [, nDialogBoxType [, cTitleBarText]   cMessageText 7-I-'2!5HI-2#C+IA*CD-0%-J-L  nDialogBoxType 7-1'@%5HC
I-'H20C+I!58H!-0D#I2@7H-C+I9IC
I2-%1!2  A%I'0!5*1
%1)L#9 2A*I'"+#7-D!H A%0C
I3+8H! Default  H25HI-2#C+IA*8H!H2F !515I  0 8H! OK  1 8H! OK A%0 Cancel  2 8H! Abort, Retry, A%0 Ignore  3 8H! Yes, No, A%0 Cancel  4 8H! Yes A%0 No  5 8H! Retry A%0 Cancel  H25HI-2#C+IA**1
%1)L#9 2 !515I  16 *1
%1)L Stop  32 *1
%1)L Question mark  48 *1
%1)L Exclamation point  64 *1
%1)L Information (i) icon  H25HC
I3+8H! Default !515I  0 8H!A#  256 8H!5H*-  512 8H!5H*2!  C2#C
I21II2@#2I-2#C+IA*8H! Yes, No ,Cancel  A%0I-2#A**1
%1)L Stop A%I'C+I8H! Default -"9H5H8H!5H*-  GC+I3H21I 3 H21I!2#'!1 0DIH2@H21 3 + 16 + 256 = 275  cMessageText 7-I-'2!5HI-2#C+IA**H'+1'-D-0%-J-L  @!7H-9IC
I2-32!%1!2G0!5H21'@%*H%1!2C+I@7H-5H@#20DI3D#0!'%%H-D 6H!515I  1 @!7H-8H! OK  2 @!7H-8H! Cancel  3 @!7H-8H! Abort  4 @!7H-8H! Retry  5 @!7H-8H! Ignore  6 @!7H-8H! Yes  7 @!7H-8H! No 8*2!2#*-DIB"2#I-3*1H5I5H Command Windows DI@%"A%I'9'H2%@G-"H2D#I2 @
H nAnswer = MESSAGEBOX("Do you want to see the forms?" 36, "Multiple Instances - Arrays")  ? nAnswer  6 (%%1L @!7H-8H! Yes) 
%2* (Classes) 
C Visual FoxPro @#27-'H2 -#L!(Forms) , -#L!@G(Form Set) A%0-B#%(Control) 1I+!5I@G'18(Object) A%I'@#2G3@-2 Object DC
ICB#A#!H2F5H@#2@5"6I!2 !26-5I@#2G@I2AJ-2#@5"B#A#!A OOP -5A%I'#1H2 Object H2F5H@#2@5"6I!21I0#0-DI'" 8*!14(Properties) , -5@'L(Events) A%0@!-(Methods) @-I25H'H2!2!1D!H@+G0@5H"'1%2*#D+@%" @-2%0 %2* 1 Object !1D!H@5H"'1+#-@#20!1D!H!50-@5H"'... AH!1!5'2!%0!I2"CI%@5"1!2@#20 Object !1@4!22%2* -H2!26#5I-"H2@4H0#1 *H'!0DA%I' 1I"1'-"H2@%"A%I'1 1'-"H2G!5-"9H'H2 C Visual FoxPro DI1@#5"! %2**3@#G#9@#5"!D'IC+I@#26H@#5"'H2 @*%2*(Base Class) A%I'@#23!2@4H!8*!14 C*H-5@'L @4!@!- A%I'@#2G3!1!2C
I@#2@#5"1'5H3!2C
I'H2 Object 6-5I@I2CH +#7-H@I2C AH!5-53+6H-"20-042"C+I1*1+H-" 3'H2 12%*(Sub Class) %1)0- Sub Class G@+!7-1%2*-51HA+%0AH Sub Class 0-"9H#%2#0+'H2 %2* 1 Object 8#0*L- Sub Class G!5D'-!...D!HC
H 1'-"H2@
HI2@#2I-2#*#I2-#L!A%I'!58H!3*1H@#2G3 @*%2* !2C*HA%I'3+ 8*!14 , -5@'L A%0@!- @!7H-@#23+@*#GG0DI@G Sub Class A%I'@#2G32#@#5" C
I2 @'%2@#3!2C
IG%2"@G Object -5A%I'#1H2 DG!2-"9H#5IA+%0 
25H%H2'!21IH2G0DI#2'H2 2#B#A#!@
4'18(OOP) 1I@G-"H2D# 5H5I@#2G39'H2 @*%2* !5-0D#I2 2!2#2H-D5I  
CheckBoxEditBoxListBoxShapeColumnFormOLEBoundControlSpinnerCommandButtonFormSetOLEContainerControlTextBoxCommandGroupGridOptionButtonTimerComboBoxrHeaderOptionGroupToolBarContainerImagePageControlLabelPageFrameCustomLineSeparator%2*5H@#2C
I2-"9H0#0-DI'" -@#@-#L(Contrainers) A%0 ---@#@-#L(Non-Contrainers) +#7-@#5"-5-"H2'H2 -B%%2*(Control Class) 1'-@#@-#L1I0"-!C+I3%2*CF!2C*HD'IDI D!H'H20@G -@#@-#L%2* +#7- -B#%2* @
H @*%2* Form @G-@#@-#L !1*2!2#3 8H! CommandButton !2C*HD'IDI@GI 
2#2A* -@#@-#L  
-@#@-#L%2*5H*2!2###0C-@#@-#LCommand button groupsCommand buttonsContainerAny controlsControlAny controlsForm SetsForms, toolbarsFormsPage frames, any controls, containers, customGrid columnsColumn headers, any objects except forms, form sets, grid columns, and toolbarsGridsGrid columnsOption button groupsOption buttonsPage framesPagesPagesAny controls. containers, customToolbarsAny controls, page fame, container!26 . 85I8G#2A%I''H2%2*!17--0D# !5D'I3-0D# AH03!1!2C
IDI-"H2D#%H0 @#203%2*DC
I2@#2C
I3*1H  DEFINE CLASS ClassName1 AS ParentClass  [[PROTECTED PropertyName1, PropertyName2 ...]  PropertyName = eExpression ...]  [ADD OBJECT [PROTECTED] ObjectName AS ClassName2 [NOINIT]  [WITH cPropertylist]]...  [[PROTECTED] FUNCTION | PROCEDURE Name  [NODEFAULT]  cStatements  [ENDFUNC | ENDPROC]]...  ENDDEFINE 
@
H DEFINE CLASS TestForm AS Form  ADD OBJECT cmdExit As CommandButton WITH ;  Caption = "E\<xit", Top = 100, Left = 140, ;  Height = 29, Width = 94, Visible = .T. 
 PROCEDURE cmdExit.Click  RELEASE ThisForm  ENDPROC  ENDDEFINE 
3DI+#7-D!H'H2DI13*1H5I5H1'-"H2B#A#!H2FI2I!2A%I' 0*1@8DI'H2@!7H-@#2DI 32# DEFINE CLASS 6I!2@G Sub Class (TestForm @G Sub Class - base class FORM) A%I'@#2I-32#*#I2 object -5#1I+6H B"C
I3*1H 
 CREATEOBJECT(ClassName [, eParameter1, eParameter2, ...]) 
@
H myForm = CREATEOBJECT("TestForm") 
+%125H32# Create Object 6I!2A%I'I2@#2I-2#C+I Object 1I#2C+I2-@#2I-3+ @!-- Object 1IC+I!52#A*
6I!2 B"2#-I2

7H-- Object 5HI-2#A%I'C*H@!- Show @I2D 15I  myForm.Show 
@!7H-H-5H!0!2%-+1@5"B#A#!A Visual !@+G@2@5"3*1H3+8*!14H2F !!2 I28@G!7-C+!HGA!@#20I2C FoxPro #8HH-F I2@#2C
I 8(.) @G1'1H%2@#2G0+!2"6 2#-I264%LCAI!I-!9% +#7- -'H2@G1'A# memvar AH*3+#1 Visual FoxPro DI!52# @4H!C+I@G2#3+ 8*!14A%0@!-H2FC+I1 Object 55I@#2!29 1'H20-I26 Object H2F @7H-3+H28*!14A%0@!-H22F DI-"H2D# '452#-I26 Object 1I@#2!5'452#-I26-"9H 2 AI'"17-   HYPERLINK "http://kasem.sstplus.com/chapter3.htm" \l "2#-I26A*!9#L (Absolute" 1. 2#-I26A*!9#L (Absolute Referencing)   HYPERLINK "http://kasem.sstplus.com/chapter3.htm" \l "2#-I26A*1!1L (Relative"  2. 2#-I26A*1!1L(Relative Reference) 
2#-I26A*!9#L (Absolute Reference) 2#-I26A*!9#L G7-2#-D#F'H2 Object 1IF-"9H5HD+I2*1@8C+I51'-"H25H!A*D'I CIF1HA+%0@G2#-I2A*!9#L @
H  myForm2.Show  myForm2 7-
7H- Sub Class - Form 5H@#2*#I26I  Show 7-@!-5HC+I32#A* -#L! myForm2 
 _SCREEN.ActiveForm.BackColor = RGB(51*ncount,255,255)  _SCREEN 7-2#-I26+I2- *H' ActiveForm @G2#-I26 Form 5H32#@4-"9H . 01I  BackColor 7-3+8*!14C+IA**5-7I-#L! 
 myForm.txtDate.ForeColor = RGB(0,0,0) && black text  myForm.txtDate.BackColor = RGB(192,192,192) && gray background 
 myFormSet.myForm.Show  myFormSet.myForm.cmdButton1.SetFocus 
1'-"H21I+!I2I1I@G2#-I26A*!9#L 
2#-I26A*1!1L (Relative Reference) 2#-I26A*1!1L G7-2#-A-I26'2!*1!1L 6H#0-DI'" keyword H-D5I  
ParentThe immediate container of the object.THISThe object.THISFORMThe form that contains the object.THISFORMSETThe form set that contains the object1'-"H2@
H  THIS.Caption = 'OK' && 3+C+IA*3'H2 OK C Object  THIS.Parent.BackColor = RGB(192,0,0) && 3+*5	2+%1--#L!  THISFORM.cmd1.Caption = 'OK' && 3+C+IA*3'H2 OK C object cmd1 - Form 181  THISFORMSET.myForm.cmd1.Caption = 'OK' 
6-5I8DI#2'452#-I26 Object - Visual FoxPro A%I''H23-"H2D# AH"1!5I-*1@8-"9H-"H2+6HG7- %31-2#-I26I28*1@8C+I5 %1)0-%31C2#-I260@#4H!I2%31H3*8G7- 8*!14 +#7- @!- 1!20-I26 object 21IG!2@G -#L! A%I'*8I2"G0@G -#L!@G 8%-3'2!@I2C1 2#-I25I9THIS.Paret.BackColor 3'H2 parent !1+!2"6--0D# !1+!2"6-#L! C
H+#7-D!H 
2#3+8*!14 (Setting Properties) 8*2!2#3+8*!14 (Properties) - Object DIB"C
I#9A15I  Parent.Object.Property = Value @
H  myForm.txtDate.Value = DATE() && display the current date  myForm.txtDate.Enabled = .T. && the Control is enabled  myForm.txtDate.ForeColor = RGB(0,0,0) && black text  myForm.txtDate.BackColor = RGB(192,192,192) && gray background 
0@+GDI'H22#12#3+8*!14@#2032#3+8*!14+%2"F-"H2C Object 1IF 6H@#2D!H3@GI-@5" code 2!1'-"H2I2GDI C Visual FoxPro DI@#5"!3*1H*3+#1D'I3+ 8*!14+%2"F8*!14D'I 2"C Object @5"'1B"C
I3*1H WITH...ENDWITH  WITH ObjectName  [.cStatements]  ENDWITH 
21'-"H2H-+I2@#2*2!2#3!2@5"C+!HDI15I  WITH myForm.txtDate  .Value = DATE()  .Enabled = .T.  .ForeColor = RGB(0,0,0)  .BackColor = RGB(192,192,192)  ENDWITH 
2#@#5"@!- (Calling Method)  @!7H-8DI32#*#I2 Object 6I!2A%I' 8*2!2#32#@#5" @!- - Object 25HCGDICB#A#! B"@5" code 15I  Parent.Object.Method @
H  myForm.Show  myForm.cmdExit.SetFocus 
C*H'-'2!+!2"'H2 8*!14A%0@!-AH%01'!5'2!+!2"-"H2D# C
I2-"H2D#1I!0-42"D'ICH-FD C2#-I26@!-1I Visual FoxPro DI@#5"!B-@@#@-#LD'IC+I-51'+6H6HD'I-I26 parent %2*B"C
I :: (Scope Resolution Operator) C2#-I26 @
H 
 cmdButton::Click() 
!26 . 85I8GDI#2%2*H2F #26'452#-I26C#9AH2F CH-DG0@G@#7H--2#*#I22I-!9% 
12#I-!9%@7I-I (Data Base Design) 
8#25-"9HA%I''H2 Visual FoxPro 9*#I26I!2@7H-12#12I-!9% 6H0!52#@GI-!9%H2FA%I'3!2#0!'%% C5I@#20!2%H2'1@5H"'1'2#--A2I-!9% AI!I-!9% @#-#L 4%L @7H-@GA'2C2#--AA%0*#I22I-!9%H-D H2#2+#7-D!H'H2+H'"@GI-!9%5H@%G5H*8--!4'@-#L7--0D# 
4(Bit) @G+H'"@GI-!9%5H@%G5H*8C-!4'@-#L @!7H-@#234+%2"F4!2#'!1G0@G DL (#+1* ASCII 8 4 @H21 1 DL) 6HG7- 1 1'-1)#1H@- A%I'31'-1)#!2#'!1A%I'!5'2!+!2"-"H2C-"H2+6H@#2@#5"@G4%L(Field) 34%L+%2"F4%L!5!5'2!@5H'"@7H-1!2#0-1#'!@G @#-#L(Record) +%2"F@#-#L#'!1@GD'ICAI!I-!9%(File) A%I'3AI!I-!9%+%2"FAI!I-!9%!2*#I2'2!*1!1L1#0-1@G2I-!9% I28I-2#5H0*#I2#026I!2C
I2*1#02+6H*4H5H3@G-"H2"4HG7- 2I-!9% (Database) A%I'2I-!9%!5#0B"
L-"H2D#? 
 1. @7H-%'2!I3I--I-!9%  2. @7H-%I-4%2C2#I-I-!9%DI#01+6H  3. *2!2#3I-!9%DC
I#H'!1DI  4. '8!9A%H2" @GI 
!0-"1'-"H22I-!9% C*H*4I2(Invoice) @7H-@GA'2C2#--A1H-D5I H--7HH2I-!29H-'H2C*H*4I21I#0-DI'"I-!9%-0D#I2 #0-I'" I-!9%%9I2 I-!9%*4I2 I-!9%2#*1H*4I2 @GI A%I'@#23I-!9%5HDI1I!2--AAI!I-!9%(Table) 6H*2!2#3A--@GAI!I-!9%12#2 
AI!I-!9%%9I2(Customer) 
#1+*%9I2 CUST_ID 
7H- NAME 5H-"9H ADDRESS "-@4I2 OUTSTNDING '@4*4@
7H- CREDITLMT '1C+I*4@
7H- TERM_DAY 122" SALES_ID 00001 .22!55198 .*2# !.150000 20000 30 S0001 00002 #I2*0-2189 .-4*# 2 !0 50000 60 S0001 00003 .*9H'2!*3@#G44 .#H!@%I2 !.9850 7500 15 S0002 AI!I-!9%122"(Salesman) 
#+1*122" SALES_ID 
7H- NAME 5H-"9H ADDRESS -1#2-!!4

1H COMMRATE S0001 2"*!+'1393 .#2!3A+ !.0.50% S0002 2"#0@5"78 .-H-8
 !.0.75% AI!I-!9%C*H*4I2(Invoice) 
@%5HC*H*4I2 INV_NO '15H*1H DATE #+1*%9I2 CUST_ID 9800001 15/09/1998 00002 9800002 01/10/1998 00001 9800003 01/10/1998 00002 AI!I-!9%#2"2#*4I2(Invoice Detail)  
@%5HC*H*4I2 INV_NO #+1**4I2 PROD_ID 3' QUANTITY #22H-+H'" UNITPRICE 980001 AA001 5000 2.50 980001 BB001 850 10.00 980002 AA001 1000 2.25 98003 CC001 50 100.00 AI!I-!9%*4I2(Product)  
#+1**4I2 PROD_ID 
7H- NAME3'@+%7- ON_HAND+H'"1 UM #22H-+H'" UNITPRICE AA001 J-550000 1' 2.50 BB001 @1*2"D4000 !I' 10.00 CC001 *56 #0K- 110.00 I2842#29AI!I-!9%2!2#20*1@@+G'H2AI!I-!9%AH%0AI!0!5'2!*1!1L1-5AI!I-!9%+6H @
HAI!I-!9%C*H*4I2 1 AI!I-!9%%9I20!5#+1*%9I2@G1'@
7H-!'2!*1!1L A%I'AI!I-!9%%9I2 G0 @
7H-!1AI!I-!9%122"B"!5#+1*122"@G1'*#I2'2!*1!1L A%I'@!7H-D+#H@#2I-32#*#I2'2!*1!1L#0+'H2AI!I-!9%? -11A#C2#*#I2'2!*1!1L(relation) @#2I-36H6'2!I3I-I-I-!9% @
HCC*H*4I2 0#0-DI'"I-!9%%9I2 I2%9I2#2"1IF32#*1H*4I2@*!- @!7H-@#232#--C*H*4I2C+I 8#1I@#2I-!232#I-I-!9%%9I2#2"1I-5 6HI-!9%5HI-0!5%1)0@+!7-18#1ID 11I@#2 3@GI-*#I2AI!I-!9%%9I2@7H-!2#-#1C*H'5I A%I'12#@
7H-!AI!I-!9%1I*-AI!I'"#+1* 6H2#@
7H-!5I@#2@#5"'H22#*#I2'2!*1!1L @!7H-AI!I-!9%!52#*#I2'2!*1!1L6I!2G@4@G 2I-!9%6I 
A%I'C Visual FoxPro 0*#I22I-!9%6I!2DI-"H2D#? C5HH2!2!DI%H263*1H5HC
I*#I2 AI!I-!9%(Table) D'IA%I' 5H5I@#20!232#*#I2 AI!I-!9%6I!22!1'-"H2C2#2I2I C+I32#*#I2B#A#!@7H-32#*#I2 2I-!9% (Database)  32#4!L3*1HH22 Command Window B"4!L 3*1H  MODIFY COMMAND GenStru A%I'8H! Enter  A%I'G32#I-3*1HH-D5I 
*GenStru.PRG * Create Database File CREATE DATABASE myDatabase * Create Database Table CREATE TABLE Salesman (Sales_ID c(5) PRIMARY KEY, ;  Name c(60),Address c(120),CommRate n(5,2)) CREATE TABLE Customer (Cust_ID c(5) PRIMARY KEY,;  Name c(60),Address c(120),Creditlmt n(3,0), ;  Term_day n(3,0), Sales_ID c(5), ;  FOREIGN KEY Sales_ID TAG Sales_ID REFERENCE Salesman) CREATE TABLE Product (Prod_ID c(5) PRIMARY KEY, ;  Name c(60),On_Hand n(7,0),UM c(10),UnitPrice n(10,2)) CREATE TABLE Inv_Head (Inv_NO n(6,0) PRIMARY KEY, ;  Date d(8),Cust_ID c(5), ;  FOREIGN KEY Cust_ID TAG Cust_ID REFERENCE Customer) CREATE TABLE Inv_Dtl (Inv_NO n(6,0),Prod_ID c(5), ;  Quantity n(6,0),UnitPrice n(10,2), ;  FOREIGN KEY Inv_NO TAG Inv_NO REFERENCE Inv_Head ,;  FOREIGN KEY Prod_ID TAG Prod_ID REFERENCE Product)
+#7- 
*GenStru.PRG CREATE DATABASE 'MYDATABASE.DBC' ***** Table setup for SALESMAN ***** CREATE TABLE 'SALESMAN' (SALES_ID C(5) NOT NULL, ;  NAME C(60) NOT NULL, ;  ADDRESS C(120) NOT NULL, ;  COMMRATE N(5, 2) NOT NULL) ***** Create each index for SALESMAN ***** ALTER TABLE 'SALESMAN' ADD PRIMARY KEY SALES_ID TAG SALES_ID ***** Change properties (if any) for SALESMAN ***** ***** Table setup for CUSTOMER ***** CREATE TABLE 'CUSTOMER' (CUST_ID C(5) NOT NULL, ;  NAME C(60) NOT NULL, ;  ADDRESS C(120) NOT NULL, ;  CREDITLMT N(3, 0) NOT NULL, ;  TERM_DAY N(3, 0) NOT NULL, ;  SALES_ID C(5) NOT NULL) ***** Create each index for CUSTOMER ***** ALTER TABLE 'CUSTOMER' ADD PRIMARY KEY CUST_ID TAG CUST_ID INDEX ON SALES_ID TAG SALES_ID ***** Change properties (if any) for CUSTOMER ***** ***** Table setup for PRODUCT ***** CREATE TABLE 'PRODUCT' (PROD_ID C(5) NOT NULL, ;  NAME C(60) NOT NULL, ;  ON_HAND N(7, 0) NOT NULL, ;  UM C(10) NOT NULL, ;  UNITPRICE N(10, 2) NOT NULL) ***** Create each index for PRODUCT ***** ALTER TABLE 'PRODUCT' ADD PRIMARY KEY PROD_ID TAG PROD_ID ***** Change properties (if any) for PRODUCT ***** ***** Table setup for INV_HEAD ***** CREATE TABLE 'INV_HEAD' (INV_NO N(6, 0) NOT NULL, ;  DATE D NOT NULL, ;  CUST_ID C(5) NOT NULL) ***** Create each index for INV_HEAD ***** ALTER TABLE 'INV_HEAD' ADD PRIMARY KEY INV_NO TAG INV_NO INDEX ON CUST_ID TAG CUST_ID ***** Change properties (if any) for INV_HEAD ***** ***** Table setup for INV_DTL ***** CREATE TABLE 'INV_DTL' (INV_NO N(6, 0) NOT NULL, ;  PROD_ID C(5) NOT NULL, ;  QUANTITY N(6, 0) NOT NULL, ;  UNITPRICE N(10, 2) NOT NULL) ***** Create each index for INV_DTL ***** INDEX ON INV_NO TAG INV_NO INDEX ON PROD_ID TAG PROD_ID ***** Change properties (if any) for INV_DTL ***** *************** Begin Relations Setup ************** ALTER TABLE 'CUSTOMER' ADD FOREIGN KEY TAG SALES_ID REFERENCES SALESMAN TAG SALES_ID ALTER TABLE 'INV_HEAD' ADD FOREIGN KEY TAG CUST_ID REFERENCES CUSTOMER TAG CUST_ID ALTER TABLE 'INV_DTL' ADD FOREIGN KEY TAG INV_NO REFERENCES INV_HEAD TAG INV_NO ALTER TABLE 'INV_DTL' ADD FOREIGN KEY TAG PROD_ID REFERENCES PRODUCT TAG PROD_ID
@!7H-I-@*#GC+I32# Save B" Ctrl+W A%I'4!L3*1H DO GenStru 5H Command Windows B#A#!G032#*#I22I-!9%
7H- myDatabase 6I!2C+I-1B!14 21IC+I4!L3*1H  CLOSE DATABASE  MODIFY DATABASE myDatabase A%I'9'H2!5-0D#@46II2  
@%GD!H%1 I28!5AI! Database -"9HA%I'8*2!2#A%%1!2@G .PRG DIB"C
I3*1H DO HOME()+'\TOOLS\GENDBC\GENDBC.PRG'#4FA%I'C2#*#I22I-!9%C Visual FoxPro 1I!5'452#*#I2+%2"'45 5H!-42"!25IG@G -5'45+6HC2#*#I2 AH5H!*#I2@GB#A#!D'I5IH-FD@#203DC
I21-5 !5+%2"H2**1"'H2@!7H-*#I2@*#GA%I'GA%I'13D!I-@5"@GB#A#!C+I"8H"2 @+8%-!+#7-'452#-!1I!5@-2D'I@7H-  I2AI!I-!9%-81@-4
9%+!A%I'83B#*#I2-AI!I-!9%D!HDI 8*2!2#3!1D*#I22I-!9%6I!2C+!HDI  @!7H-83B#A#!DAH2" (Compile @G .exe A%I'8D!H3@GI- Copy AI!I-!9%DI'"@5"AH832#@5"B#A#!C+I!1D@#5" B#A#! GenStru 6I!2!1G032#*#I22I-!9%C+I8 *H''452#3DC
I1I-*#I2 #02!0-42"-5#1I -"I35I@G@5"A''2!4*H'1'!4DI+I2!@%5"A -5I@#2!29#2"%0@-5"A%03*1HH2F@5H"'1 2I-!9% A%0 AI!I-!9% 1H- C Visual FoxPro DIA"AI!I-!9%--@G 2 
4 7- Free Table 1 Database Table #4FA%I'!1G7-AI!1'@5"'1!52!*8%@G .DBF A%I'!1H21-"H2D#? Free Table 7-AI!I-!9% .DBF 5HD!H9-"9H1 AI! Database 8*2!2#32#@4AI!5I+#7-@4H!AI!5I@I2DC AI! Database CGDI Database Table 7-AI!I-!9% .DBF 5HD9-"9H1 AI! Database @!7H-3DC
I20I-@4#I-!1 Database File  A%I'3D!I-*#I2 Database file @7H-!291 Database Table I'"  @+8%+%1@%"G7-3C+I8*2!2#@+G'2!*1!1L#0+'H2AI!I-!9%6HG@I2+%1-#02I-!9%  A%08*2!2#1I
7H- Database Table 1I
7H- Field DI"2'6I 6 128 1'-1)# 6H AI! .DBF @4!1I
7H- AI!DI 8 1' 
7H- Field DI 10 1'-1)# 3*1HH2@5H"'12I-!9% *#I22I-!9% (AI! .DBC) 
CREATE DATABASE [DatabaseName | ?]
@
H CREATE DATABASE myDatabase 
*#I2 Table (AI! .DBF) 
CREATE TABLE | DBF TableName1 [NAME LongTableName] [FREE] (FieldName1 FieldType [(nFieldWidth [, nPrecision])]  [NULL | NOT NULL]  [CHECK lExpression1 [ERROR cMessageText1]]  [DEFAULT eExpression1]  [PRIMARY KEY | UNIQUE]  [REFERENCES TableName2 [TAG TagName1]]  [NOCPTRANS] [, FieldName2 ...]  [, PRIMARY KEY eExpression2 TAG TagName2  |, UNIQUE eExpression3 TAG TagName3]  [, FOREIGN KEY eExpression4 TAG TagName4 [NODUP]  REFERENCES TableName3 [TAG TagName5]]  [, CHECK lExpression2 [ERROR cMessageText2]]) | FROM ARRAY ArrayName
@
H CREATE TABLE Customer (Cust_ID c(5) PRIMARY KEY,;   Name c(60),Address c(120),Creditlmt n(3,0), ;   Term_day n(3,0), Sales_ID c(5), ;   FOREIGN KEY Sales_ID TAG Sales_ID REFERENCE Salesman)
21'-"H2I2I0@G2#*#I2 database table #I-!F1 *#I2AI!1
5 (I2!52#@4 database file -"9HH-A%I'@!7H-@#232#*#I2 table B#A#!07-'H2@G2#*#I2 database table B"-1B!14)
** -"I3-5I8*2!2#3+
7H-4%LDI"2'6 128 1'J00-C+I 
C Visual FoxPro 0!5AI!1
5-"9H 2 #0@ 7- Structure Compound Compact Index (.CDX) A%0 Single-key (.IDX) 1I*-#0@ !5'2!AH21-"H2D#A%0@#2'#C
IAI!1
5AD+
Single-key IndexStructural Compound Compact Index3'1
5H- 1 AI!I-!9%1 1
5!2'H2 1 1
5'2!"2'-1
5100 1'-1)#240 1'-1)#2#@4AI!1
5I-32#@4@-B"C
I3*1H set index to file.idx032#@4C+I-1B!14#I-!12#@4 table2#@#5"C
I1
5@#5"2AI!1
5@#5"2 tag name22#2I2I0*#8DI'H2@#2'#C
IAI!1
5AD+ I2@G!0-C
I .CDX 
!5'45-7H-5+#7-D!H5H032#*#I2AI!1
5 ? @#2*2!2#*#I2AI!1
5IDIB"C
I3*1H
  INDEX ON eExpression TO IDXFileName | TAG TagName [OF CDXFileName] [FOR lExpression] [COMPACT] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE]
23*1HI2II2@#2C*H key word IDXFileName B#A#!032#*#I2AI!1
5@GA Single-key index C+I AHI2@#2D!HC*H G0@G Structural Compound Compact Index A
@
H  INDEX ON CUST_ID TAG CUST_ID INDEX ON SUBST(NAME,1,1) TAG NAME
@%GD!H%1 8*2!2# -9 tag name DIB"C
I3*1H ?tag(1)I2I-2#9'H21
55H@#232#1@#5"!52#@5"#0B"'H2-"H2D#C+IC
I ?sys(14,1)(1 7-%31C2#3 index I2!5+%2" tag tag 1'H-DG0@G@% 2,3 .. D@#7H-"F) 2#@#5"1
5!2C
I21II2@GA compound index @#2I--C+IB#A#!#2'H2@#203 tag C!2C
I2@#20'H22#@4 table !2C
I21IB#A#!032#@4 AI!1
56I!2C+I-1B!14-"9HA%I' AH2#0@%7-C
I'H20C
I tag 1'C+@#2I-@G9I3+ B"C
I3*1H
SET ORDER TO [nIndexNumber | IDXIndexFileName | [TAG] TagName [OF CDXFileName]  [IN nWorkArea | cTableAlias]  [ASCENDING | DESCENDING]]
@
H  SET ORDER TO 1   SET ORDER TO TAG NAME SET ORDER TO TAG SALES_ID 
+#7-@#2*2!2#@#5"1
5!2#I-!12#@4AI!I-!9%6I!2GDI B"C
I3*1H USE
 USE SALESMAN ORDER 1 USE SALESMAN TAG SALES_ID
6-5I@#2%-!291'-"H2B#A#!I-I-!9%1@%HF11'-"H2AI@G1H-A%I'H-"'H21H- C+I8*#I2B#A#!
7H- program4.prg 32#I-2!1'-"H2I2%H2A%I'%-@#5"B#A#!5I9'H2@G-"H2D#
-J0F 0@#5"B#A#!C
I3*1H do program4 5H command window J0J0
* program4.prg PUBLIC oform1ON SHUTDOWN DO PRGERR && When program error click X (close foxpro) botton SET DELETE ONIF !USED('SALESMAN')select 0use SalesmanENDIFSET ORDER TO TAG SALES_IDGO TOPSCATTER MEMVARoform1=CREATEOBJECT("form1")oform1.Show()oform1.cmdGroup.oTop.Enabled=.F.oform1.cmdGroup.oPrev.Enabled=.F.if reccount() = 0oform1.cmdGroup.oNext.Enabled=.F.oform1.cmdGroup.oBott.Enabled=.F.endifREAD EVENTRETURNDEFINE CLASS form1 AS formHeight = 261Width = 633DoCreate = .T.AutoCenter = .T.Caption = "Salesman"ControlBox = .F.LockScreen = .F.Name = "Form1"ADD OBJECT osales_id AS textbox WITH ;ControlSource = "m.sales_id", ;Enabled = .F., ;Height = 24, ;Left = 132, ;Top = 24, ;Width = 73, ;Name = "oSales_id"ADD OBJECT oname AS textbox WITH ;ControlSource = "m.name", ;Enabled = .F., ;Height = 24, ;Left = 132, ;Top = 60, ;Width = 265, ;Name = "oName"ADD OBJECT oaddress AS textbox WITH ;ControlSource = "m.address", ;Enabled = .F., ;Height = 24, ;Left = 132, ;Top = 96, ;Width = 456, ;Name = "oAddress"ADD OBJECT ocommrate AS textbox WITH ;Alignment = 3, ;Value = 0, ;ControlSource = "m.commrate", ;Enabled = .F., ;Format = "R", ;Height = 24, ;InputMask = "999.99", ;Left = 132, ;Top = 132, ;Width = 61, ;Name = "oCommrate"ADD OBJECT cmdgroup AS commandgroup WITH ;ButtonCount = 8, ;Value = 1, ;Height = 39, ;Left = 12, ;Top = 192, ;Width = 615, ;Name = "cmdGroup", ;Command1.Top = 5, ;Command1.Left = 5, ;Command1.Height = 29, ;Command1.Width = 73, ;Command1.Caption = "Top", ;Command1.Name = "oTop", ;Command2.AutoSize = .F., ;Command2.Top = 5, ;Command2.Left = 81, ;Command2.Height = 29, ;Command2.Width = 73, ;Command2.Caption = "Previous", ;Command2.Name = "oPrev", ;Command3.Top = 5, ;Command3.Left = 157, ;Command3.Height = 29, ;Command3.Width = 73, ;Command3.Caption = "Next", ;Command3.Name = "oNext", ;Command4.Top = 5, ;Command4.Left = 233, ;Command4.Height = 29, ;Command4.Width = 73, ;Command4.Caption = "Bottom", ;Command4.Name = "oBott", ;Command5.AutoSize = .F., ;Command5.Top = 5, ;Command5.Left = 309, ;Command5.Height = 29, ;Command5.Width = 73, ;Command5.Caption = "New", ;Command5.Name = "oNew", ;Command6.Top = 5, ;Command6.Left = 385, ;Command6.Height = 29, ;Command6.Width = 73, ;Command6.Caption = "Change", ;Command6.Name = "oChge", ;Command7.Top = 5, ;Command7.Left = 461, ;Command7.Height = 29, ;Command7.Width = 73, ;Command7.Caption = "Delete", ;Command7.Name = "oDele", ;Command8.Top = 5, ;Command8.Left = 537, ;Command8.Height = 29, ;Command8.Width = 73, ;Command8.Caption = "Exit", ;Command8.Name = "oExit"ADD OBJECT label1 AS label WITH ;Caption = "Salesman No.", ;Height = 18, ;Left = 24, ;Top = 24, ;Width = 88, ;Name = "Label1"ADD OBJECT label2 AS label WITH ;Caption = "Name", ;Height = 18, ;Left = 75, ;Top = 60, ;Width = 37, ;Name = "Label2"ADD OBJECT label3 AS label WITH ;Caption = "Address", ;Height = 18, ;Left = 62, ;Top = 96, ;Width = 50, ;Name = "Label3"ADD OBJECT label4 AS label WITH ;Caption = "Commission", ;Height = 18, ;Left = 35, ;Top = 132, ;Width = 77, ;Name = "Label4"PROCEDURE cmdgroup.oTop.Clickif !bof()go topscatt memvarthis.enabled=.F.this.parent.oPrev.enabled=.F.this.parent.oNext.enabled=.T.this.parent.oBott.enabled=.T.endifthisform.refreshENDPROCPROCEDURE cmdgroup.oPrev.Clickif !bof()skip -1if bof()go topthis.parent.oTop.enabled=.f.this.enabled=.f.endifscatt memvarthis.parent.oNext.enabled=.T.this.parent.oBott.enabled=.T.endifthisform.refreshENDPROCPROCEDURE cmdgroup.oNext.Clickif !eof()skip if eof()go bottthis.enabled=.F.this.parent.oBott.enabled=.F.endifscatt memvarthis.parent.oTop.enabled=.T.this.parent.oPrev.enabled=.T.endifthisform.refreshENDPROCPROCEDURE cmdgroup.oBott.Clickif !eof()go bottscatt memvarthis.enabled=.F.this.parent.oNext.enabled=.F.this.parent.oTop.enabled=.T.this.parent.oPrev.enabled=.T.endifthisform.refreshENDPROCPROCEDURE cmdgroup.oNew.Clickif this.caption = 'New'scat memvar blankthisform.oSales_id.Enabled = .T.thisform.oName.Enabled = .T.thisform.oAddress.Enabled = .T.thisform.oCommrate.Enabled = .T.this.caption = 'Save'this.parent.oChge.caption = 'Cancel'this.parent.oTop.Enabled = .F.this.parent.oPrev.Enabled = .F.this.parent.oBott.Enabled = .F.this.parent.oNext.Enabled = .F.this.parent.oDele.Enabled = .F.this.parent.oExit.Enabled = .F. elsedo casecase this.caption = 'Save' .and. this.parent.oChge.caption = 'Cancel'if !empty(thisform.oSales_id.value)INSERT INTO Salesman FROM MEMVARelsewait window 'Sales_id must be Entry! Program not save'endifcase this.caption = 'Save' .and. this.parent.oChge.caption = 'Reverse'GATHER MEMVARendcasethisform.oSales_id.Enabled = .F.thisform.oName.Enabled = .F.thisform.oAddress.Enabled = .F.thisform.oCommrate.Enabled = .F.this.caption = 'New'this.parent.oChge.caption = 'Change'this.parent.oTop.Enabled = .T.this.parent.oPrev.Enabled = .T.this.parent.oBott.Enabled = .T.this.parent.oNext.Enabled = .T.this.parent.oDele.Enabled = .T. this.parent.oExit.Enabled = .T.endifthisform.refreshENDPROCPROCEDURE cmdgroup.oChge.Clickif recc() = 0 .and. this.parent.oChge.caption = 'Change'wait wind 'No data cannot change this record' elseif this.caption = 'Change'thisform.oSales_id.Enabled = .T.thisform.oName.Enabled = .T.thisform.oAddress.Enabled = .T.thisform.oCommrate.Enabled = .T.this.caption = 'Reverse'this.parent.oNew.caption = 'Save'this.parent.oTop.Enabled = .F.this.parent.oPrev.Enabled = .F.this.parent.oBott.Enabled = .F.this.parent.oNext.Enabled = .F.this.parent.oDele.Enabled = .F.this.parent.oExit.Enabled = .F. elsedo casecase this.caption = 'Reverse'scatter memvarcase this.caption = 'Cancel' && for addnew recordgo bottscatter memvarendcasethisform.oSales_id.Enabled = .F.thisform.oName.Enabled = .F.thisform.oAddress.Enabled = .F.thisform.oCommrate.Enabled = .F.this.caption = 'Change'this.parent.oNew.caption = 'New'this.parent.oTop.Enabled = .T.this.parent.oPrev.Enabled = .T.this.parent.oBott.Enabled = .T.this.parent.oNext.Enabled = .T.this.parent.oDele.Enabled = .T. this.parent.oExit.Enabled = .T.endifendifthisform.refreshENDPROCPROCEDURE cmdgroup.oDele.Clickif recc() = 0wait wind 'No data cannot delete this record' elsenAnswer = MESSAGEBOX('Confirm Delete', 4 + 32 + 256,'Delete Record')DO CASECASE nAnswer = 6Deletego bottscatt memvarCASE nAnswer = 7* not DeleteENDCASEendifThisform.refreshENDPROCPROCEDURE cmdgroup.oExit.ClickUSESET DELETE OFFthisform.releaseCLEAR EVENTon shutdownENDPROCENDDEFINEPROCEDURE PRGERRCLEAR EVENTclose allclear allon shutdownENDPROC
1'-"H25HC+I!25I@G1'-"H22#I-I-!9%- Salesman G%-32#I-I-!9%@%HFD*1 4-5 H- A%I'@#20!2H-1CH-D@#7H-12#I-!9% 2*-
12#I-!9%(H-) 
5HA%I'8DI#2'452#*#I22I-!9% A%0AI!1
5 H2FA%I' !2C5I 80DI@#5"#9I62#C
I2I-!9% 2##031I-!9%'H2!5'452#-"H2D#I2 
21'-"H2 program4 8DI@+G3*1H5H@5H"'12#12#I-!9%!2I2A%I' 55I@#20!23'2!@I2C13*1HH2F@+%H21I1  
3*1HA#5H032#96G7-2#@4AI!I-!9% (table) 6I!2C
I2 @#2C
I3*1H USE 6H!5#9A15I
USE [TableName | SQLViewName | ?] [IN nWorkArea | cTableAlias] [AGAIN] [NOREQUERY [nDataSessionNumber]] [NODATA] [INDEX IndexFileList | ? [ORDER [nIndexNumber | IDXFileName | [TAG] TagName [OF CDXFileName] [ASCENDING | DESCENDING]]]] [ALIAS cTableAlias] [EXCLUSIVE] [SHARED] [NOUPDATE]
2#@5"B#A#!H2F 1I2#321 table @#2-23@GI-32#@4 table +%2"F table #I-!F1CB#A#!	01I@#23@GI-3+3A+H(Work Area) C+I1 table 1IFI'"B"C
I3*1H 
SELECT nWorkArea | cTableAlias
8%-I-3*1H2!1'-"H2I2%H2 5H command windows A%I'%-*1@82#32-AH%03*1H9 (8I-*#I2 database MYDATABASE H- 1'-"H2-"9H5H5HA%I')
CLOSE ALL OPEN DATABASE MYDATABASE SELECT 1USE SALESMANBROWSE SELECT 2 USE CUSTOMER BROWSE SELECT SALESMAN BROWSE SELECT 0 USE PRODUCTBROWSE 
21'-"H2@G2#3+3A+HC+I1 table SALESMAN C+I-"9H .3A+H5H 1 A%0 table CUSTOMER -"9H .3A+H5H 2 A%0 table PRODUCT 8#2+#7-D!H'H2-"9H3A+H5H@H2D+#H  3--"9H3A+H5H 3 @#2#9IDI-"H2D#%0 I2@#2C
I3*1H SELECT 0 C2#3+3A+H B#A#!032#+23A+H%H2*85H"1'H2-"9H!2C+I6HG7-3A+H5H 3
C2#@5"B#A#!#1H229IC
IA%I'3H21IF@4H!@I2*9H table (D!HC
HI-) C Visual FoxPro G!53*1H5H*2!2#3DIB"C
I3*1H15I  
INSERT INTO Salesman (SALES_ID,NAME,ADDRESS,COMMRATE), ;  VALUE("10099","MR.SOMCHAI","175 SATHORN RD.",0.50)BROWSE
+#7-
SELECT Salesman <APPEND BLANKREPLACE SALES_ID WITH "10099", NAME WITH "MR.SOMCHAI", ; ADDRESS WITH "175 SATHORN RD.", COMMRATE WITH 0.50BROWSE
21I*-1'-"H2@G2#@4H!I-!9%@I2*9H table SALESMAN @+!7-1AH'452#@5"3*1HH21 2#C
I21I6I-"9H1'2!@+!20*! .01I'H20@%7-C
I2AD+ 55I@#2!29#9A3*1H- INSERT INTO 'H2@G-"H2D#
INSERT INTO dbf_name [(fname1 [, fname2, ...])] VALUES (eExpression1 [, eExpression2, ...])- Or -INSERT INTO dbf_name FROM ARRAY ArrayName | FROM MEMVAR
5"L@'4#L MEMVAR !1+!2"6-0D#? 2#32C Visual FoxPro 5H@5H"'12I-!9%I2@G1@5"B#A#!#4FJ0D!HC
H@%HF *H'C+
H@20C
I1'A#@!!B!#5 (memory variables) A2#C
I
7H- 4%L(field) C2#-I26I-!9%C table 
7H--1'A#5I0@G
7H-@5"'11
7H- 4%L C table @5"AH0!51'*1
%1)L-'H2@G1'A#@!!B!#5 B"3 m.!2C*HD'+I2
7H-4%L @
H m.sales_id , m.name @GI A%I'!10@5H'"1 5"L@'4#L MEMVAR "1D... 5"L@'4#L MEMVAR @G1'A- 1'A#@!!B!#51I+!C table @!7H-@#2-I26 table 1IF
55I@#2!293*1H@5H"'12#AIDI-!9% 2#3I-!9%2 table @GD'IC1'A#@!!B!#5 A%02#31'A#@!!B!#5%1D update I-!9%C table 21'-"H2 program4 80DI14L3*1H scatter memvar, gather memvar *-3*1H5I@G*H'+6H-2#3I-!9%2 table !2@GD'I5H1'A#@!!B!#5 @#2!21''45C
I15'H2 C+I32#I-3*1H2!1'-"H2I2%H25H command windows A%I'%-*1@8'H2@4-0D#6II2
CLOSE ALL OPEN DATABASE MYDATABASE USE SALESMAN IN 1BROWSE && 80@+GI-!9%@H25HI-D'IH-+I25I  8H! Esc @7H---2 browseGO TOPSCATTER MEMVAR  ? m.sales_id + m.name + m.address + TRANSFORM(m.commrate, '@z 999.99')m.name = 'MR.ARKIRA SUPERMAN'm.commrate = 7.80GATHER MEMVARBROWSE m.name='MRS.SOMSRI' REPLACE NAME WITH m.name BROWSE 
3*1H SCATTER @G2#3I-!9%2 @#-#L181- table !2@GD'IC1'A#@!!B!#5 
3*1H GATHER @G2# update I-!9%21'A#@I2*9H table .@#-#L181 
*H'3*1H REPLACE %I2"1 GATHER AHI2C#55HI-2# update 1I@#-#L 3*1H gatter 0*0''H2
55I@#2!29#9A3*1H-1I 3 3*1H1
SCATTER [FIELDS FieldNameList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton] [MEMO] TO ArrayName | TO ArrayName BLANK | MEMVAR | MEMVAR BLANK | NAME ObjectName
I2C#55H@#2I-2#1'A#@!!B!#5B"D!HI-2#C+I!5I-!9%2@#-#L@%" @#2*2!2#C
I 5"L@'4#L MEMVAR BLANK @#2C
IC#55HI-2#0@4H!I-!9%C+!H@I2D @#23@GI-3C+I1'A#1IF'H2@%H2H- @
H
 SCATTER MEMVAR BLANK
GATHER FROM ArrayName | MEMVAR | NAME ObjectName [FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton] [MEMO]
REPLACE FieldName1 WITH eExpression1 [ADDITIVE] [, FieldName2 WITH eExpression2 [ADDITIVE]] ...  [Scope] [FOR lExpression1] [WHILE lExpression2] [IN nWorkArea | cTableAlias] [NOOPTIMIZE]
H-!2G!263*1H %I-!9% #4FD+2-H2DI1H'D @#203*1H5HC
I7-3*1H
DELETE [Scope] [FOR lExpression1] [WHILE lExpression2] [IN nWorkArea | cTableAlias] [NOOPTIMIZE]
+#7-3*1H
DELETE FROM [DatabaseName!]TableName [WHERE FilterCondition1 [AND | OR FilterCondition2 ...]]
*-3*1HI2I2#32@+!7-17-%DI@+!7-1AHH21#5H 3*1H5H*-32#%DIB"D!HI-@4 table H-G9@-2A%I'1'H2H2*0'AC+@%7-DI2!*2"*-1'2@5"'
1IAH*!1" dBASE @#7H-"!22#%-!9%- table 1I@G2#%+%-F 7- 032#33+4D'I'H2DI9%DA%I'AH#4F"1D!HDI%11I@#2*2!2#@#5"I-!9%@H2%1!2DIB"C
I3*1H
RECALL [Scope] [FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE]
AHI2@#2I-2#%I-!9%5H9%DA%I'#4F @#20@+8'H2#@+%7-@4 @%7-@7I-5H GC
I3*1H  PACK #1H2  "4HD'H21II2I-2#%1I table B"D!H*C@%"'H20!5@#-#LC9%+#7-D!H @-2H2"FG7-%I24I1I+!D%L @+%7-AHB##H2(structure) D'IGC
I3*1H ZAP @#5"#I-"B#@#5"D"
5H%H2'!2"7"2'625II29IC5H@5" FoxPro +#7-B#A#!3-5I-"9HA%I'G-- 1"D'II'"5H+%@I2!2-H2 -5I3D'IC+I!7-C+!H0DI#9I'H2!5I-!9%-"9H031!1-"H2D# A%I'0I-C
I3*1H-0D#I2G@H21I@-
2#@5"1L
1(Function) 
-0D#@-H"@5"#1I@5"'AHC
IH-"?
1L
17--0D#? I22!! !-DI@%"'H2!1G7-3*1H#0@ +6H@H21I@- C##2'2!+!2""2'F-I'" #9IAHC
I@H21I@-AH5HAHF!13C+I9IC
I32H2"6I AH@5"1L
125GD!HH2"0#1
C Visual FoxPro !5#0@ -1L
1-"9H 2 
4I'"1  1. 1L
15H!21B#A#! (Visual FoxPro function) 2. 1L
15H9IC
I3+@- (user-defined function (UDF))
1L
15H!21B#A#!1I!5-"9H!2-*!'#AH"1D!H-+#-#1 @#204*1"-!8)"L!1D!#9I1--"9HA%I' @2G@%"-8
24C+I8F1I+%2"3!16I!2DI@-03@G-0D#GDID!H'H212!*2" AHG!5I-A!IC2#3I2@%GFI-"F  +%12#31L
16IC
I@-GD!HDI"2@"G@GC-0D#!5I-A!IH2"F15I 1. @'%2*#I2I-@#4H!II'"3'H2  FUNCTION A%I'G2!I'"
7H--1L
1  2. 
7H--1L
1"2'DID!H@4 254 1'-1)# I28C
IB#A#!5HH3'H2 Visual FoxPro C
IDIAH 10 1' 3. 
7H--1L
1I-D!HDI31
7H--1L
1 A%03*1HC Visual FoxPro 4. H2*HH2 (parameter) 0!5+#7-D!H!5GDI @H25H@+G@I231!51I1IA+%0 5.  H2*HH2!5DI*9*8C 1 1L
1D!H@4 24 H2 6. @!7H-@G1L
1@'%2--I-!5H2%1!2@*!- D!H'H20@G1'@% 1'-1)# ##0 '15H +#7-H25HD!H!5H2(NULL) @GI 7. @5"DID!H313' "1G@5"D!5A#G3D @5"2"GD!H....I2"1D!H#9I1-
#9I+%12#3DA%I'!29+%12#C
I2I2 1. @#2*2!2#C
I1L
1DI85H5H@5"@G4L3*1HDI A%01L
1- Visual FoxPro G*2!2#@5"DI  2. *2!2#@#5"1L
1I-1L
1DI6 32 #01 (I-!9%"1D!HAH--5I-2@"-0'H25IGDI AH"1D!H@"@+GC#@5"@"-02 32 #01@%")
55I@#2!291'-"H22#C
I1H- (-"7!- 1L
1CVisual FoxPro C
IH-GA%I'1)myVAR = DATE() STOR MONTH(DATE()) TO thisMonth =CAPSLOCK(.T.)  && 3+C+II-I-!9%@G1'-1)#C+
H DO WHILE !EOF()  INSERT INTO Salesman(LASTUPDATE) VALUE(DATE())
21'-"H2I2I@#20*1@8DI-"H2D#'H2-0D#@G1L
1 H2"FG7-+%13*1H1IF0!5'@%G() -"9H AH-"H2%0'H2 Salesman @G1L
1H@#20!5'@%G !1%0@#7H-1-11I!1@G 5"L@'4#L-3*1H INSERT INTO 
@#2!2@#4H!@5"1L
1C
I15'H2 @#4H!H2"F%-I-B#A#!2!1'-"H2I2%H2H-@G2#3 1L
1- Visual FoxPro !21A%C+I@G2!A5H@#2I-2#@7H-'2!*0'-@#2@-
C+I*#I2B#A#!
7H- UTILITY.PRG 2 command windows I- modify command UTILITY A%I'4!L3*1H2!1'-"H2I2%H2%D
FUNCTION MyMessagePARAMETER cMessageText,cMessageTitle * 4 = Yes and No buttons * 32 = Question mark icon * 256 = Secound buttons is default * return value 6 for click YES * return value 7 for click NORETURN MESSAGEBOX(cMessageText,4+32+256,cMessageTitle)
@'%2@#232#@#5"C
I1L
1 C+I832#I-3*1H SET PROCEDURE TO UTILITY @7H--C+IB#A#!32#+21L
12 B#A#!5H@#23+D'IG7-B#A#! UTILITY +%121I@#2%-32#*-1L
1-@#29 C+II-3*1HH-D5I5H command windows 9'H2@4-0D#6II2
? MyMessage('I-2#16I-!9%','16I-!9%')nAnswer = MyMessage('I-2#16I-!9%','16I-!9%')?nAnswer 
H2#2+#7-D!H'H2@!7H-@#232#@#5"C
I21L
1C Visual FoxPro !5%312#I+2'H21L
15H@#2@#5"C
I21I-"H2D# %31A#@%"I2@#2!52#@#5"C
I21L
1CFG2!B#A#!032#+25H1L
1- Visual FoxPro H- %311!2B#A#!032#+25H B4@"-#L(Procedure) 5H@#232#@4-"9H  @#2@4B"C
I3*1H set procedure to .... *8I2"I2+21I*-5HD!H@-G032#+25H B#A#! .prg @
H @#5"C
I1L
1 MyMessage G032#+2'H2!5B#A#!
7H- MyMessage.prg +#7-D!H I2!5G@#5"C
I2C+I I2"1+2D!H@--5G06I Error 'H2 File '????????.prg' does not exist
C2#@5"1L
16I!21I @!7H-@#2@5"@*#G@#5"#I-"A%I'@#2'#032#@G@G+!'+!9H+#7- Library D'I @'%2@#5"C
I2+#7-3DC
I20DI*0' A%I'03-"H2D#%H0? 21'-"H2I2I!C+I*#I2B#A#!
7H- utility.prg 6I!2@7H-32#@G 1L
15H@#2DI32#@5"6I!2 C 1 B#A#!@#2*2!2#C*H1L
15H@#2@5"6I!2DI@#7H-"F6I-"9H1 memory -@#7H-8'H20#1DIAHD+ B"2#@5"H-F1D@#7H-"F 15I
* utility.prgFUNCTION MyMessage......RETURN <value>
FUNCTION tCDOWPARAMETER dDATE nDay=DOW(dDATE) DO CASE CASE nDAY=1RETRUN '-24"L' CASE nDAY=2RETRUN '1#L' CASE nDAY=3RETRUN '-12#' CASE nDAY=4RETRUN '8' CASE nDAY=5RETRUN '$+1*5' CASE nDAY=6RETRUN '(8#L' CASE nDAY=7RETRUN '@*2#L' ENDCASERETURN ''
FUNCTION myFunction......RETURN
.....
@!7H-@#232#@5"B#A#!5H32#@G1L
1H2FA%I' @'%203!2C
I2@#2I-#02(C+I Visual FoxPro #2H- B"C
I3*1H set procedure to 6H@""1'-"H2D'IC+I9A%I'C-I55I@#2!29#9A3*1H'H2@G-"H2D#
SET PROCEDURE TO [FileName1 [, FileName2, ...]] [ADDITIVE]
@
H SET PROCEDURE TO UTILITY,MYFUNCTION,STATFUNCTION SET PROCEDURE TO FORMFUNCTION ADDITIVE
*H'C+
H2##02(C
I1L
1@#20#0315H main program #02(D'I#1IA##1I@5"'G-
H-D5I@GI'-"H21L
1 I28!51L
15H5FA%I'I-2#@"A#H#82*H!2+2@#2@#20@G*7H-%2C+I
 HYPERLINK "http://kasem.sstplus.com/num2ch.zip" Download NUM2CH.PRG* ---FUNCTION NUM2CH* ---B#A#!...... @%7H"1'@%@G1'-1)# (9,999,999,999.99)* ---9I@5"........ Kasem K.* ---'1AID....... 12.08.92*-- 3DC
I...... cSTRING=NUM2CH(9999.22)***************************************************************FUNCTION NUM2CHPARA mNUM && @%D!H@4 10.2 +%1PUBL mTCH(9),mTDEC(10)mTCH(1)='+6H'mTCH(2)='*-'mTCH(3)='*2!'mTCH(4)='*5H'mTCH(5)='+I2'mTCH(6)='+'mTCH(7)='@G'mTCH(8)='A'mTCH(9)='@I2'mTDEC(1) ='1'mTDEC(2) ='#I-"'mTDEC(3) ='*4'mTDEC(4) ='%I2'mTDEC(5) ='A*'mTDEC(6) ='+!7H'mTDEC(7) ='1'mTDEC(8) ='#I-"'mTDEC(9) ='*4'mTDEC(10)=''mSTNUM=STR(mNUM*100,12)mSTTHAI=''mCNT=1DO WHIL mCNT<=10 mCHNUM=SUBSTR(mSTNUM,mCNT,1) IF mCHNUM=' ' mSTTHAI=mSTTHAI+'' ELSE IF mCHNUM='0' mSTTHAI=IIF(mCNT=4,mSTTHAI+'%I2',mSTTHAI+'') ELSE IF mCHNUM='1' IF (mCNT=4.AND.LEN(LTRIM(mSTNUM))#9).OR.(mCNT=10.AND.LEN(LTRIM(mSTNUM))#3) mSTTHAI=mSTTHAI+'@-G' ELSE IF .NOT.(mCNT=3.OR.mCNT=9) mSTTHAI=mSTTHAI+mTCH(VAL(mCHNUM)) ENDIF ENDIF ELSE IF mCHNUM='2'.AND.(mCNT=3.OR.mCNT=9) mSTTHAI=mSTTHAI+'"5H' ELSE mSTTHAI=mSTTHAI+mTCH(VAL(mCHNUM)) ENDIF ENDIF mSTTHAI=mSTTHAI+mTDEC(mCNT) ENDIF ENDIF mCNT=mCNT+1ENDDOmSTTHAI=mSTTHAI+'2'IF SUBSTR(mSTNUM,11,2)='00' mSTTHAI=mSTTHAI+'I''ELSE mCHNUM=SUBSTR(mSTNUM,11,1) IF mCHNUM#'0' IF mCHNUM#'1' IF mCHNUM='2' mSTTHAI=mSTTHAI+'"5H' ELSE mSTTHAI=mSTTHAI+mTCH(VAL(mCHNUM)) ENDIF ENDIF mSTTHAI=mSTTHAI+mTDEC(9) ENDIF mCHNUM=SUBSTR(mSTNUM,12,1) IF mCHNUM#'0' IF mCHNUM='1'.AND.SUBSTR(mSTNUM,11,1)#'0' mSTTHAI=mSTTHAI+'@-G' ELSE mSTTHAI=mSTTHAI+mTCH(VAL(mCHNUM)) ENDIF ENDIF mSTTHAI=mSTTHAI+'*2L'ENDIFRETU mSTTHAI
* ---TSCDOW.PRG* ---9I@5"........ Kasem K.* ---'1AID....... 12.08.92*-- 3DC
I...... cDayofWeek=TSCDOW(DATE())* ---B#A#!.... ROUTINE C+IH2
7H-'1D"A"H-FUNCTION TSCDOWPARA mdtmmdtnm=DOW(mdtm)mcdm=SUBST('-2.-..$(.*.',2*mdtnm-1,2)RETU (mcdm)
*----------------------------------------* B#A#! : MLOGIC.PRG* @5H"B" : / @)!* *#I2 : 01/09/92* !17- : GAME C
I6*!- !8)"L@+%G 2022* *1
%1)L : C=9*5 , P = 93A+H*----------------------------------------PROCEDURE MLOGICDECL S(5),X(5)DEFI WIND MLOGIC FROM 1,10 TO 21,45;TITLE "MASTER LOGIC" FOOT "ESC - EXIT";GROW SYSTEM ZOOM COLO N/BG,N/BR,B+/WACTI WIND MLOGICDO WHIL .T.CLEASTOR .F. TO FLAGSTOR 0 TO S(1),S(2),S(3),S(4),S(5)STOR 0 TO L,POSI,COLFSTOR 0 TO SCORESTOR '' TO Q_A@0,1 SAY 'SELECT : ' COLO 5+/3@2,0 SAY 'C P' COLO 2+/3@2,4 TO 2,22@0,24 TO 9,32@1,25 SAY 'LEGENT' COLO 6+/3@2,25 SAY '1'@2,28 SAY ' ' COLO /1@3,25 SAY '2'@3,28 SAY ' ' COLO /2@4,25 SAY '3'@4,28 SAY ' ' COLO /3@5,25 SAY '4'@5,28 SAY ' ' COLO /4@6,25 SAY '5'@6,28 SAY ' ' COLO /5@7,25 SAY '6'@7,28 SAY ' ' COLO /6@8,25 SAY '7'@8,28 SAY ' ' COLO /7@10,24 TO 13,32@11,25 SAY 'SCORE'DO WHIL SCORE < 15IF SCORE=0FOR I = 1 TO 5STOR STR(INT(RAN(1,8)),1) TO X(I)Q_A=Q_A+X(I)NEXT@ 3,0 SAY '=>' COLO 0/3ELSE@ 3+SCORE-1,1 SAY ' '@ 3+SCORE,0 SAY '=>' COLO 0/3ENDIF@1, 6 GET S(1) PICT'@Z 9' RANG 1,7 COLO ,7+;VALID(SAYCOL(S(1),1,6) .AND.SAYCOL(S(1),3+L,6 ))@1,10 GET S(2) PICT'@Z 9' RANG 1,7 COLO ,7+;VALID(SAYCOL(S(2),1,10).AND.SAYCOL(S(2),3+L,10))@1,14 GET S(3) PICT'@Z 9' RANG 1,7 COLO ,7+;VALID(SAYCOL(S(3),1,14).AND.SAYCOL(S(3),3+L,14))@1,18 GET S(4) PICT'@Z 9' RANG 1,7 COLO ,7+;VALID(SAYCOL(S(4),1,18).AND.SAYCOL(S(4),3+L,18))@1,22 GET S(5) PICT'@Z 9' RANG 1,7 COLO ,7+;VALID(SAYCOL(S(5),1,22).AND.SAYCOL(S(5),3+L,22))READmKEY=READK()DO CASECASE mKEY=12.OR.mKEY=268FLAG=.T.EXITENDCASE* PROCESSSTOR 0 TO POSI,COLFFOR I = 1 TO 5IF STR(S(I),1)=X(I)POSI=POSI+1ENDIFIF STR(S(I),1)$Q_ACOLF=COLF+1ENDIFNEXTIF POSI=5SCORE=SCORE+1@ 12,27 SAY SCORE PICT '@Z 99'TEMP=WARNN(' YOU HAVE A WINNER ! ',10)EXITENDIF* END PROCESSSCORE = SCORE+1@ 3+L,0 SAY COLF PICT '9' &&COLO 7+/3@ 3+L,2 SAY POSI PICT '9' &&COLO 7+/3@ 12,27 SAY SCORE PICT '@Z 99'L = L +1ENDDOIF FLAGEXITENDIFIF POSI#5DEFI WIND IWIN FROM 7,1 TO 12,29;TITLE "o REPLY BOX o" GROW SYSTEM ZOOM COLO N/N,N/BR,B+/WACTI WIND IWIN@0,1 TO 4,25@1, 4 SAY ' '+X(1)+' ' COLO 7+/&X(1)@1, 8 SAY ' '+X(2)+' ' COLO 7+/&X(2)@1,12 SAY ' '+X(3)+' ' COLO 7+/&X(3)@1,16 SAY ' '+X(4)+' ' COLO 7+/&X(4)@1,20 SAY ' '+X(5)+' ' COLO 7+/&X(5)@2, 4 SAY ' ' COLO /&X(1)@2, 8 SAY ' ' COLO /&X(2)@2,12 SAY ' ' COLO /&X(3)@2,16 SAY ' ' COLO /&X(4)@2,20 SAY ' ' COLO /&X(5)TEMP=WARNN(' I WINNER !!! ',10)RELE WIND IWINENDIFENDDORELE WIND MLOGICRETUFUNCTION SAYCOLPARA SEL,ROW,COLXCSEL=STR(SEL,1) @ROW,COLX-2 SAY ' '+CSEL COLO &CSEL+/&CSEL,/&CSELRETU .T.* ---RAN.PRG* ---9I@5"...... Kasem K.* ---AID%H2*8... 17/09/92* ---B#A#!.... #95*#I21'@%*8H!#0+'H2
H'FUNCTION RANPARA RA,RBRETU (RB-RA)*RAND()+RA*!**********************************************************************!*! Procedure: WARNN*!*!*********************************************************************PROCEDURE warnnPARA mmsg,mtime*SET COLO OF SCHE 9 TO N/BG,N/RB,RG/Wmlen=lcut(mmsg)mmsg=' '+REPL(' ',LEN(mmsg)-mlen)+mmsg+' 'DEFI WIND warnn FROM 19,4 TO 21,LEN(mmsg)+5 SYST ;SHAD FLOAT NOZOOM COLO SCHE 9ACTI WIND warnn*@23,40-(mLEN/2) SAY mMSG@0,0 SAY mmsg??CHR(7)i=INKEY(mtime)*@23,40-(mLEN/2) SAY SPAC(LEN(mMSG))RELE WIND warnnRETU
&& I28!51
+2@5H"'12#1@#5"I-!9% 2)2D"I--15I
 HYPERLINK "http://kasem.sstplus.com/ithai.zip" Download ITHAI.PRG* ---ITHAI.PRG* ---AID%H2*8... 06/02/35* ---B#A#!.... ROUTINE FUNCTION INDEX THAI LANGUAGE* 2#C
I21IC
I- index on ithai(name) tag sortthai && I2I-!9%@"-0F
I2#1* -A03C+I32#*#I2 filed @4H!-5 1 4%L*!!84
7H- sortname  -#1#84%L1IC+I@4H!3*1H * REPLACE SORTNAME WITH ITHAI(NAME) '455I8*2!2#34%LDC
IC3*1H SQL DII'"FUNCTION ithaiPARA str0mstr=TRIM(str0)+' 'mlen=LEN(mstr)IF mlen<=1RETU mstrENDIFmcnt=1DO WHIL mcnt<=mlenmchr=SUBSTR(mstr,mcnt,1)IF mchr$'@ABDC'mstr=LEFT(mstr,mcnt-1)+SUBSTR(mstr,mcnt+1,1)+SUBSTR(mstr,mcnt,1)+RIGHT(mstr,mlen-(mcnt+1))mcnt=mcnt+1ENDIFmcnt=mcnt+1ENDDOmcnt=1DO WHIL mcnt<=mlenmchr=SUBSTR(mstr,mcnt,1)IF mchr$'HIJKG'mstr=LEFT(mstr,mcnt-1)+SUBSTR(mstr,mcnt+1,1)+SUBSTR(mstr,mcnt,1)+RIGHT(mstr,mlen-(mcnt+1))mcnt=mcnt+1ENDIFmcnt=mcnt+1ENDDORETU mstr* ---LCUT.PRG* ---AID%H2*8... 02/09/34* ---B#A#!.... ROUTINE 1'2!"2'B"1-1#0%H2*!**********************************************************************!*! Procedure: LCUT*!*!*********************************************************************FUNCTION lcutPARA mstrcnt0 = 1cnt00 = 0DO WHIL cnt0 <= LEN(mstr)IF SUBS(mstr,cnt0,1) $ '8945671LHIJKG'cnt00 = cnt00 + 1ENDIFcnt0 = cnt0 + 1ENDDORETU (LEN(mstr) - cnt00)*!**********************************************************************!*! Procedure: STIFF*!*!*********************************************************************FUNCTION stiffPARA ma,mbmb=TRIM(LTRIM(mb))mt=LEFT(ma,LEN(ma)-LEN(mb))+mbRETU mt
Visual Class Library 
Visual Class Library(.VCX) !5D'I3-0D#? 8@"32#*#I2-#L!C Visual FoxPro !2I2A%I' I2832#*#I2B"C
I base class %I'F  801'2!"8H"2C2#3+ #9A1'-1)#(font) 5HC
IC2#A* 2)2D"C%2*H2F @
H Textbox,Label,CommandButton @GI 6H8I-3+8F#1I 5H832#@4H!!1@I2!2C-#L!-8 +#7-C#55H@#2*#I2-#L!A%I'I-2#C+I-#L-@#2"2"C+
H@G!- !58H!-B#@!9A5H0@G#9D--*814I-@#2G@%5H"@GA-@#2@- +#7-I2@#2I-C
I
8 -8H!3*1H#9AC#9A+6H AH@G%1)0%I2"F1C@7-8F-#L!5H32#*#I2 +#7- @#2I-2#A*-#L!#9A5IC-5+%2"F#1I@
H -#L!2#--#2"2@GI B"5H@#2D!H-"H2!2*#I2C+!H+#7-!23+ properties ,event ,method C+!H8#1I +#7--7H-5!2!2"##"2"D!H+!  11I Visual FoxPro 6-8
2C+I@#2*2!2#*#I2 %2*6I!2C+!HDIB"2#C
I3*1H CREATE CLASS @7H-*-'2!I-2#-@#2F1I+%2" B"!5#9A3*1H15I
CREATE CLASS ClassName | ? [OF ClassLibraryName1 | ?] [AS cBaseClassName [FROM ClassLibraryName2]] [NOWAIT]
%-!2*#I2%2*9*11'H- B"C+I832#4!L3*1H5H command window 15I  CREATE CLASS MyTextBox21I80DI1+I2-1 2I2%H2 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro6_files\\kasem_files\\chapter7_files\\c7001.jpg" \* MERGEFORMATINET 
Class Name 7-
7H- %2*5H@#23+6I7- MyTextBoxBased On @G2#3+C+I%2*5H@#2*#I2@G sub-class -%2*C C+I8@%5H"@G TextBoxStore In 3+C+I@GD'I5HAI!I-!9%
7H--0D# AI!5I0!52!*8%@G .VCX 4!L
7H-'H2 MyClass 21IG %45H OK+#7-8-2C
I3*1H CREATE CLASS MyTextBox OF MyClass AS TextBox GDI21IG0DI%2*C+!H@G MyTextBox 1#9 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro6_files\\kasem_files\\chapter7_files\\c7002.jpg" \* MERGEFORMATINET C+I83+ Properties 15I(B"%4J'25H mouse A%I'@%7- properties)FontName @G CordiaUPCFontSize 2 14 FontBold @G .F.21IG Ctrl+W @7H-32#16 8G0DI%2*C+!H6I!2@G-8@-@#2@#5"!1'H2%2*"H-"(sub-class)#4FA%I'8'#032#*#I2 C+I#8 control - base class @7H-@GD'IC
I2A base class @4!- Visual FoxPro 0@G2#5!2@%"J00-C+I
+%12832#*#I2!1@#5"#I-"A%I'@'%2803DC
I8I-#02(B"C
I3*1H
SET CLASSLIB TO ClassLibraryName [ADDITIVE] [ALIAS AliasName]
@
H SET CLASSLIB TO MyClass ADDITIVE+#7- I28-"9HC form designer C+I@%7-  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro6_files\\kasem_files\\chapter7_files\\c7003.jpg" \* MERGEFORMATINET 2 form controls A%I'@%7- Add @%7-
7H-D%L .VCX 5HI-2#
C2#*#I2%2*"H-"(sub-class)6I!21I #4F!5-"9H+%2"'45I'"15H!%H2'!2G@G'45*#I2'45+6H@H21I
A%I'I28032##1#8AID  32#%%2*2%2*5H*#I26I!2 +#7-A!IAH09 properties,event,method -%2*1IF +#7-4!L Code program --!29 I2!-3*1HD@#7H-"FG"2@#203*1H!1@"-0 *#8H2"F!!53*1H+6HC2#12#@5H"'1 Visual Class Libary(VCX) 5H0-C+I8#2 C+I84!L3*1H5H command window 15I DO (_BROWSER) && 4!LC+I@+!7-0#1D!H1ID!H--D!H#9II'" AH-2@G1'@%GGDI +#7- @%7-5H @!9 Tools A%I'@%7- Class Browser  A%I'32#@%7-AI!I-!9%5HI-2# C+I@%7- MyClass.VCX +#7-I24!L@G
7H-C+!HG07-'H2@G2#*#I2 VCX 6I!2C+!H  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro6_files\\kasem_files\\chapter7_files\\c7004.jpg" \* MERGEFORMATINET G
 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro6_files\\kasem_files\\chapter7_files\\c7005.jpg" \* MERGEFORMATINET @G3*1H*#I2%2*C+!H @+!7-13*1H CREATE CLASS I2I-2#AID%2*@4!C+I Double Click 5H
7H-%2*DI@%" INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro6_files\\kasem_files\\chapter7_files\\c7006.jpg" \* MERGEFORMATINET *H'1'5I@-2D'I9 soruce code 8*2!2#C
I class browser 1'5IC2#9 source code - -#L!5H8*#I26I!2GDI B"-@#5" class browser 6I!2A%I'-@%7-
7H-D%L5HI-2#C+ID@%5H"5H file of type @G form A%I'G@%7-
7H- -#L!5HI-2#
55I@#2!2%-*#I2 Visual Class Library H2"F9*11'*-1'H-1'A#@G2,42-@'%2GA%I'1C+I832#@#5" 3*1H DO (_BROWSE) 5H command window A%I'I-
7H-D%L'H2 clock8H!  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro6_files\\kasem_files\\chapter7_files\\c7005.jpg" \* MERGEFORMATINET @7H-*#I2%2*C+!H C
H- Class Name C+I1I
7H-'H2 digitalclock
H- Based On @%7- Container 8H! OK80DI1 Class Designer 6H0!5%1)0@+!7-1 Form Designer C+I8@%7- -B#% Label 2 Form Control A%I'@%7- -B#% Timer A%I'3+ Properties 15Idigitalclock 3+ properties @G  Width = 145 Height = 30 BorderWidth = 0 Name = "digitalclock"label 3+ properties @G AutoSize = .F. FontSize = 15 Alignment = 2 Caption = "" Height = 27 Left = 0 Top = 0 Width = 145 Name = "Label1"  A%I'3+C*H'- init event 15I this.caption=time()timer 3+ properties @G Interval = 1000 Name = "Timer1" A%I'3+ C*H'- timer event 15I this.parent.label1.caption = time()
21IC+I*#I2 -#L! +#7- B#A#!6I!2%-*-9'H2DI%-"H2D# I28*0'*#I2 -#L!G3DI@%" AH-5I!-32#*#I2B#A#!C+I9H- C+I4!L 3*1H MODIFY COMMAND PROGRAM5 5H command window A%I'I-3*1H2!1'-"H2I2%H2 A%I'%- do program5 9....
* PROGRAM5.PRGPUBLIC oform1SET CLASSLIB TO HOME() + 'clock.vcx' ADDITIVEoform1=CREATEOBJECT("form1")oform1.Show()RETURN**************************************************DEFINE CLASS form1 AS form Top = 0 Left = 0 Height = 81 Width = 193 DoCreate = .T. Caption = "*-2,42" Name = "Form1" ADD OBJECT digitalclock1 AS digitalclock WITH ; Top = 24, Left = 24, Width = 145, Height = 30, ; Name = "Digitalclock1", ; Label1.Name = "Label1", ; Timer1.Name = "Timer1"ENDDEFINE*-- EndDefine: form1**************************************************-5I!0--42" properties 21'C+IH2#2*1+H-"Object.Name[ = cName] @
H Timer1.Name="Timer1" @G2#1I
7H- object @'%2C
I2@#20C
I
7H-5IC2#-I26 object 1'1IFTimer.Interval[ = nTime] @
H INTERVAL = 1000 @G2#1I%9(loop) +H'@'%2 1000 0@H21 1 '425 @!7H-32#A%I'0C+I3-0D#@#2G32#3+C timer event I28%1D9C timer event 0@G2#C+IA*@'%26I!2C label1
@%GD!H%1 @!7H-8321AI! .VCX (Visual Class Library) A%I'8#9I*6'H2D%L-8C+
H4#4 C+I8315I32#@4AI! .VCX B"C
I3*1H  USE <
7H-AI!.VCX>  @!7H-@4@*#GA%I'C+IC
I3*1H PACK A%I'32#4AI!B"C
I3*1H USE @H25IAI! .VCX -8G0!52@%G%-"H2H2C+2" 55I@#2!232#*#I2 Visual Class Library 6H@G@#7H-4@%15'H2
 HYPERLINK "http://kasem.sstplus.com/calcultr.zip" DOWNLOAD 1'-"H2B#A#!@#7H-4@%
C+I8%-32!1'-"H2I2%H2-15I0"8H+H-"@#200!52#*#I2 properties A%0 event(method) 6I!2C
I25H command window C+I84!L3*1H do (_browser) 21IC+I4!L
7H- AI!'H2 CALCULATOR AI!5I0!52!*8%'H2 .VCX C+I32#*#I2%2*A#6I!2 B"C
I9%2#L  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro6_files\\kasem_files\\chapter7_files\\c7005.jpg" \* MERGEFORMATINET @7H-32#*#I2%2*C+!H A%I'32#1I
7H-15IClass Name = calacBased On = commandbutton A%I'%4J5H8H! OK H-!232#3+ properties 15IHeight = 27 , Width = 30 , Caption = "AC" , Name = "calac"

C*H'- Event Click C+I4!L3*1H15IWITH This.parent.r_LCalculate = .F. .r_LNewValue = .T. .r_LNewMath = .T. .calText.Value = "" .calmath.Value = "" .r_NCaltxt = 0 .r_ColdMath = "+" .r_LDot = .T.ENDWITHC*H'- Event Keypress C+I4!L3*1H15Iwith this.parent =.m_keypress(nKeyCode)endwith
H-!232#*#I2%2*5H*- Class Name = calmathBased On = textbox3+ properties 15IAlignment = 2 , Enabled = .F. , Height = 24 , Width = 20 , Name = "calmath"
32#*#I2%2*5H*2!Class Name = caltextBased On = textbox3+ properties 15IAlignment = 1 , Enabled = .F. , Height = 24 , Width = 192 , Name = "caltext" , ControlSource = ""
32#*#I2%2*5H*5HClass Name = calnumberBased On = commandbutton3+ properties 15IHeight = 27 , Width = 30 , Caption = "" , Name = "calnumber" C*H'- Event Click C+I4!L3*1H15IWITH This.parent IF this.caption="." .and. !.r_ldot RETURN  ENDIF IF this.caption="." .r_ldot = .f. ENDIF IF .r_LNewValue  .calText.value = This.Caption ELSE  .calText.value = ALLTRIM(.calText.value) + This.Caption ENDIF .r_LNewValue = .F. .r_LCalculate = .T. .r_LNewMath = .T.ENDWITHC*H'- Event Keypress C+I4!L3*1H15Iwith this.parent =.m_keypress(nKeyCode)endwith
32#*#I2%2*5H+I2Class Name = calsign && *1@8'H2C%2*5I!D!HDI3+ event keypress D'IAH!10-I22 calnumberBased On = calnumber && *H'- properties G@
H@5"'1!1G0D-I22 calnumber C+I-1B!143+ properties 15IName = "calsign" C*H'- Event Click C+I4!L3*1H15Iwith this.parent  if .r_lnewmath .cmdenter.click .r_coldmath = this.caption .calmath.value = this.caption .r_lnewvalue = .t. .r_ldot = .t. endifendwith 
32#*#I2%2*5H+%2*5I*31
8'#3'2!@I2CD'IC+I!2F C%2*5I0!52#*#I2 properties A%0 event(method) 6I!2C
I2C%2*@- @7H-2'H2 -B#%- Visual FoxPro 1IAH%0-B#%0!5 properties A%0 event(method) D!H@+!7-1 AH@#2!5'2!I-2#C
I2 event(method) 2-"H25H-"9HC -B#%-7H @#2GI-32#*#I2!16I!2A%I'G@#5"!1C
I2B"32#@#5"H22-B#%1'-7HF-55 +#7-"1I2"1 !231H- 32#1I
7H-%2*5I'H2Class Name = calculatorBased On = container3+ properties 15IHeight = 220 , Width = 160 , BorderWith = 0 , Name = "calculator"21IC+I32#*#I2 properties 6I!2C
I2@-15I C+ID%4J5H@!9 Class @%7- New Property 21IC+I4!L
7H- property 5HI-2#0*#I2 C+I32#*#I2 property 6I!2 6 1'2!#2"
7H-1H-D5Ir_LCalculate r_LNewValue r_LNewMathr_NCalTxtr_COldMathr_LDot@!7H-*#I2@*#G@#5"#I-"A%I'C+I@I2D3+ properties -%2* calculator 6H properties 5I0-"9HC*H'- Other 6H0@G5H@G properties 5H@#232#*#I26I!2C+!H A%I'@I2D32#3+H2H2F15Ir_LCalculate = .F.r_LNewValue = .T.r_LNewMath = .T.r_NCalTxt = 0r_COldMath = "+"r_LDot = .T.21IC+I32#*#I2 method 6I!2 C+ID%4J5H@!9 Class @%7- New Method 21IC+I4!L
7H- Method 5HI-2#0*#I2 C+I32#*#I26I!2 2 method 15I m_str && @G2#A%H21'@%C+I@G1'-1)#5H@G1'@% @
H 123 @G "123"m_keypress && @G2#3+C+I container *2!2##9I12#8H! B"2#-I22-B#%1'-7HA%I'C+ID32#3+ event - method m_str B"2#%4J'2@%7- properties metohd 5H*#I26I!2C+!H0-"9HC*H'- methods C+I32#4!L3*1H - method m_str 15ILPARAMETERS pnValueLOCAL lcValuelcValue = ALLTRIM(STR(pnValue, 20, 8))* Now remove all zeros after the decimal pointDO WHILE RIGHT(lcValue, 1) = '0' lcValue = LEFT(lcValue, LEN(lcValue)-1)ENDDO* Remove the decimal point if it is the last characterIF RIGHT(lcValue, 1) = '.' lcValue = LEFT(lcValue, LEN(lcValue)-1)ENDIFRETURN (lcValue)
C+I3+ method m_keypress 15ILPARAMETERS nKeyCodeLOCAL c_Chr,c_Click,c_Setfocusdo casecase nKeyCode = 27 && Esc = close calculator thisform.release()case nKeyCode = 13 && Enter this.cmdenter.click this.cmdenter.setfocuscase BETWEEN(chr(nKeyCode),"0","9") c_chr=chr(nKeyCode) c_Click="this.cmd"+c_chr+".click" c_Setfocus="this.cmd"+c_chr+".setfocus"  &c_click &c_Setfocus case chr(nKeyCode) = "." this.cmddecimal.click this.cmddecimal.setfocuscase INLIST(chr(nKeyCode),"C","c") this.calac10.click this.calac10.setfocuscase chr(nKeyCode) = "+" this.calplus.click this.calplus.setfocuscase chr(nKeyCode) = "-" this.calminus.click this.calminus.setfocuscase chr(nKeyCode) = "*" this.calmult.click this.calmult.setfocuscase chr(nKeyCode) = "/" this.caldiv.click this.caldiv.setfocusendcase@!7H-@#232#3+ properties A%0 methods H2F@#5"#I-"A%I'H-D5I@#2032#3-B#%%2*1I5H@#232#*#I2D'IH-+I25IA%I'C*HD'IC container calculatorH--7H@#2I-32#@4H! Visual Class Library(.VCX) -@#2@I2DD'IC form control H-@#20D!H@
H1I@#2GD!H*2!2#3%2*5H@#23D'IH-+I25I!2C*HD'IC container calculator 5IDI C+I@%7-  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro6_files\\kasem_files\\chapter7_files\\c7003.jpg" \* MERGEFORMATINET 2 form controls A%I'@%7- Add C+I@%7-
7H-D%L CALCULATOR.VCX 25I@#2G0DI@+G-B#%%2*5H@#2DI*#I2D'IC+I38H! Enter H--11A#B"32#%4J5H 8H! calsign C form control 21IG32#%4J 5H container calculator @#2G0DI8H! commandbutton 6I!2 1 8H! C+I32#3+ properties -8H!15ITop = 192 , Left = 37 , Height = 24 , Width = 84 Caption = "Enter" , TabIndex = 1 , Name = "CmdEnter"21IC+I32#3+C*H'- Click Event 15IWITH This.parentif .r_lcalculate if !empty(.r_ColdMath) do case case .r_ColdMath = "+" .r_Ncaltxt = .r_Ncaltxt + VAL(.calText.Value) case .r_ColdMath = "-" .r_Ncaltxt = .r_Ncaltxt - VAL(.calText.Value) case .r_ColdMath = "*" .r_Ncaltxt = .r_Ncaltxt * VAL(.calText.Value) case .r_ColdMath = "/" .r_Ncaltxt = .r_Ncaltxt / VAL(.calText.Value) endcase endif  .r_LNewValue = .T.  .r_LDot = .T. .calText.value = .m_str(.r_NcalTxt) .r_lcalculate = .F.endif ENDWITH@!7H-@#2DI32#*#I28H! enter 6I!2@#5"#I-"A%I'H-DC+I32#*#I28H!+!2@% 0 6 @% 9 H-15I8H!@% 1 32#%4J5H 8H! calnumber C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties -8H!15ITop = 120 , Left = 11 , Caption = "1" , TabIndex = 2 , Name = "cmd1"8H!@% 2 32#%4J5H 8H! calnumber C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties Top = 120 , Left = 47 , Caption = "2" , TabIndex = 3 , Name = "cmd2"8H!@% 3 32#%4J5H 8H! calnumber C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties Top = 120 , Left = 83 , Caption = "3" , TabIndex = 4 , Name = "cmd3"8H!@% 4 32#%4J5H 8H! calnumber C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties Top = 84 , Left = 11 , Caption = "4" , TabIndex = 5 , Name = "cmd4"8H!@% 5 32#%4J5H 8H! calnumber C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties Top = 84 , Left = 47 , Caption = "5" , TabIndex = 6 , Name = "cmd5"8H!@% 6 32#%4J5H 8H! calnumber C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties Top = 84 , Left = 83 , Caption = "6" , TabIndex = 7 , Name = "cmd6"8H!@% 7 32#%4J5H 8H! calnumber C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties Top = 48 , Left = 11 , Caption = "7" , TabIndex = 8 , Name = "cmd7"8H!@% 8 32#%4J5H 8H! calnumber C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties Top = 48 , Left = 47 , Caption = "8" , TabIndex = 9 , Name = "cmd8"8H!@% 9 32#%4J5H 8H! calnumber C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties Top = 48 , Left = 83 , Caption = "9" , TabIndex = 10 , Name = "cmd9"8H!@% 0 32#%4J5H 8H! calnumber C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties Top = 155 , Left = 11 , Caption = "0" , TabIndex = 11 , Name = "cmd0"8H! . (8(4"!) 32#%4J5H 8H! calnumber C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties Top = 155 , Left = 47 , Caption = "." , TabIndex = 12 , Name = "cmddecimal"8H! + (') 32#%4J5H 8H! calsign C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties Top = 155 , Left = 83 , Caption = "+" , TabIndex = 13 , Name = "calplus"8H! - (%) 32#%4J5H 8H! calsign C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties Top = 155 , Left = 119 , Caption = "-" , TabIndex = 14 , Name = "calminus"8H! * (9) 32#%4J5H 8H! calsign C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties Top = 120 , Left = 119 , Caption = "*" , TabIndex = 15 , Name = "calmult"8H! / (+2#) 32#%4J5H 8H! calsign C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties Top = 84 , Left = 119 , Caption = "/" , TabIndex = 16 , Name = "caldiv"8H! AC 32#%4J5H 8H! calac C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties Top = 48 , Left = 119 , Caption = "AC" , TabIndex = 17 , Name = "calac10"3+I2-A*%%1L  32#%4J5H 8H! caltext C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties Top = 12 , Left = 12 , Height = 24 , Width = 119 , TabIndex = 0 , Name = "caltext"3+I2-A*@#7H-+!2"3'  32#%4J5H 8H! caltext C form control 21IG32#%4J 5H container calculator A%I'32#3+ properties Top = 12 , Left = 130 , TabIndex = 0 , Name = "calmath"@-2%H0!26#5I8G32#16*4H5H8DI3!21I+!DI@%" 8DI3 Visual Class Library - Calculator @*#G@#5"#I-"A%I' H-DGC+I832#*#I2 -#L!6I!2*-'H2DI%@G-"H2D#C+I32#*#I2-#L!B"I-3*1H create form calcform 5H command window A%I' Enter @!7H-@I2*9H form designer @#5"#I-"A%I' C+ID5H form control @%7-  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro6_files\\kasem_files\\chapter7_files\\c7003.jpg" \* MERGEFORMATINET A%I'@%7- Add C+I@%7-
7H-D%L CALCULATOR.VCX @7H-5H03@-2 Visual Class 5H@#2*#I2D'I!2C
I2 21I@#2G0DI@+G-B#%%2*5H@#2DI*#I2D'C+I32#%4J5H calculator container A%I'%1!2%4J5H-#L!-5#1I@H25I@#7H-4@%G0#26I!28G32# save A%I'I-3*1H do form calcform 5H command window @7H-*1HC+I-#L!32 6-5IG@
4
2!*2"
'45*#I29%2#L(Toolbar) A%03DC
I2 HYPERLINK "http://kasem.sstplus.com/toolbar.zip" DOWNLOAD 1'-"H2B#A#!9%2#L2#*#I2B#A#!A%I'!59%2#L-"9HCB#A#!1IFI'"03C+IB#A#!-8956I!2-5!2@%" "4HI2@4-#L!A%I'!5 9%2#L--#L!1IF4*-"+I-"2!--!2I'"G"4H5DC+
HC
H+#7-D!H#1 2#5H@#2032#*#I2 9%2#L6I!2*1-1+6H!1D!HDI"2@"G@GC-0D#+#-#1@#20C Visual Class 5H@#2@"32#*#I2!2H-+I25IG0!5%2*C*H'- toolbar @#5"!D'IC+I@#2-"9HA%I' 55I@#2%-!232#*#I21@%"5'H2
1IA#8I-2#2#*#I2 Visual Class Library 5H@G toolbar 6I!2H-15IC+I832#@#5" 3*1H DO (_BROWSE) 5H command window A%I'I-
7H-D%L'H2 MyToolbar8H!  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro6_files\\kasem_files\\chapter7_files\\c7005.jpg" \* MERGEFORMATINET @7H-*#I2%2*C+!H C
H- Class Name C+I1I
7H-'H2 toolbar1
H- Based On @%7- Toolbar 8H! OK80DI1 Class Designer 6H0!5%1)0@+!7-1 Form Designer C+I8%4J'2@7H-@I2D3+ properties - toolbar1 A%I'3+ properties 15ICaption C+I32#%--C+I+! (+I2!C
I Spacebar %--)ControlBox = .F.32#I-3*1H H-D5I%C*H'- Init EventThis.Dock(0)
3*1H dock @G2#3+3A+H- toolbar 'H20C+I-"9H . 8C- Main Visual FoxPro Window !5#9A15I ToolBar.Dock [nLocation [, X, Y]]nLoction @G2#3+8- toolbar H2- nLocation !515I7- -1  "@%42#3+ 0  3+C+I-"9H*H'- Main Visual FoxPro Window  1  3+C+I-"9HI2I2"- Main Visual FoxPro Window  2  3+C+I-"9HI2'2- Main Visual FoxPro Window  3  3+C+I-"9H*H'%H2- Main Visual FoxPro Window  X,Y  3+3A+H- toolbar 2!A'1I A%I'A'- 21IC+I8@%7- -B#% Command button 2 Form Control B"32#%4J 1 #1I A%I'%1!2%4J5H toobar1 8G0DI@G command button +6H1'-"9HC toobar1 C+I83*1 4 1' +#7-80C
I Command Group GDIA%I'AH*0'C+I3+ properties - command button AH%01'15I1'A#Caption = |<Name = cmdTopClick Event 4!L3*1H15IGO TOPTHIS.Enabled = .F.THIS.Parent.cmdPrior.Enabled = .T.THIS.Parent.cmdBottom.Enabled = .T.THIS.Parent.cmdNext.Enabled = .T.THISFORMSET.Refresh1'5H*-Caption = <Name = cmdPriorClick Event 4!L3*1H15ISKIP -1IF BOF() GO TOP THIS.Enabled = .F. THIS.Parent.cmdTop.Enabled = .F.ELSE THIS.Parent.SetAll("Enabled", .T. , "Commandbutton")ENDIFTHISFORMSET.Refresh1'5H*2!Caption = >Name = cmdNextClick Event 4!L3*1H15ISKIP IF EOF() GO BOTTOM THIS.Enabled = .F. THIS.Parent.cmdBottom.Enabled = .F.ELSE THIS.Parent.SetAll("Enabled", .T. , "Commandbutton")ENDIFTHISFORMSET.Refresh1'5H*5HCaption = >|Name = cmdTopClick Event 4!L3*1H15IGO BOTTOMTHIS.Enabled = .F.THIS.Parent.cmdTop.Enabled = .T.THIS.Parent.cmdPrior.Enabled = .T.THIS.Parent.cmdNext.Enabled = .F.THISFORMSET.Refresh@!7H-3@*#G %2*9%2#L5H8*#I26I!2G0!5#9#H2+I2215I C+I32# Save @GD'I INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro6_files\\kasem_files\\chapter7_files\\c7008.gif" \* MERGEFORMATINET 
!26-5IG@G2#3 9%2#L5H*#I2D'IDC
I2C-#L! C+I32#*#I2 -#L!6I!2 B"4!L3*1H CREATE FORM CUSTFORM 5H command windowC+I32# %4'25H CUSTFORM @%7- Data Environment 32#%4J'25H data environment A%I'@%7- Add25IC+I%4J5H8H! Other -+I2H2 Add Table or View 32# double click 5H Samples H-!2C+I32# double click 5H data A%I'32# double click 5H2#2 CUSTOMER.DBF C+I32#%4J5H4%L cust_id A%I'%2D'2D'I5H-#L! CUSTFORM C+I32#%4J5H4%L company A%I'%2D'2D'I5H-#L! CUSTFORM C+I32#%4J5H4%L contact A%I'%2D'2D'I5H-#L! CUSTFORM I2I-2#-5G32#%2A%I''22!
-C21IC+ID5H form control @%7H-8H! command button 3!2C*HD'IC CUSTFORM A%I'3+ Caption = ExitClick Event 4!L3*1H THISFORM.Release
C+ID5H form control @%7-  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro6_files\\kasem_files\\chapter7_files\\c7003.jpg" \* MERGEFORMATINET A%I'@%7- Add C+I@%7-
7H-D%L myToolbar.VCX @7H-5H03@-2 Visual Class 5H@#2*#I2D'I!2C
I2 21I@#2G0DI@+G-B#%%2*5H@#2DI*#I2D'C+I32#%4J5H toolbar1 A%I'%1!2%4J5H-#L!-5#1I@H25I8G0DI8H! toolbar !2-"9H5H -#L!-832# save -#L! A%I'I-3*1H do form custform
@G-"H2D#I2#1 2#3 Visual Class Library 1ID!HDI"2-0D#@%"C
HD+!#1 *3+#15IG@-2D'I@H25IGA%I'1 +!1H6!2F A%I'8G0
32
"4HF6I A!"1DI class @4H!6I@-2D'I-3'"'2!*0'C2#*#I2-#L!-5H2+2
Event , Methods A%0 Properties 
-5@'L (Events)@#4H3...C2#@5"B#A#!@
4'18(Object Oriented Program) *4H5H3@G-"H2"4H5H0I-#9IG7-2#32- event H2F5H@46I1 object 1IF "4HI2H2@"32#@5"B#A#!AB#*#I2!2H-A%I' -!2@-1 event @GDH2A 2H261@%45H0@#5"#9ID@%" !G@G+6HC3'1I@+!7-1 AH
5'45I"1!5+'1@%"D#2"2#15H@G#4 8D# C+I#@G2"K'"@5K"'!21+6H G@%"4DI1I+I21I2%1!2(6)2C+!H+! @%"DI*10##!-@+82#L(event) H2FC Visual FoxPro 'H2#0+'H25H@#2321'18+6HF!1@4@+82#L6I!21 '181I+%2"-"H2I'"1 AH-@4A%I'@#2D!H#9I*6'H2!1@4-0D#6I+#-@#20@7H-2@#2"1D!HDI32#3!1DC
I2 AHH-5H803!1DC
I21I8I-3'2!@I2C1%312#32- event H2F1H-'H2DH1DH-0D#@4H- 
C+I832#  HYPERLINK "http://kasem.sstplus.com/eventest.zip" download -#L! EVENTEST A%I'%-32##1-#L!6I!29 8DI@+G%31-2#32- event 5H@46I1-#L!5I1IAH load -#L! 6 unload -#L!@G event *8I2"5H@46IC+I832# @#5"-#L!B"C
I3*1H DO FORM EVENTEST NAME FORMOBJ
 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro7_files\\kasem_files\\chapter8_files\\c8001.jpg" \* MERGEFORMATINET 
event Load 0@4@G-11A# @!7H-@#232#@#5"-#L!6I!2C
I2event Init 0@4@G-111!2 event 5I0@41 object 8F object *H'C+
H0C
IC2#3+H2@#4H!IH2F- object +#7-3+C+I32-"H2C-"H2+6H6H03@5"#1I@5"'@!7H-@#5"-#L!1I!2C
I2event Activate 0@4@!7H--#L!5IA*6I!2 +#7-@!7H--#L!1I9#03 C+I8%-%4J@!2*LD5H command window A%I'%1!2%4J5H -#L! eventest -5#1I event 5IG032 +#7-I284!L3*1H FORMOBJ.HIDE 5H command windows @7H-32#H--#L! A%I'C
I3*1H FORMOBJ.SHOW @7H-32#A*-#L! event 5IG032@+!7-1event When 0@46I1 object 5H cursor 1I0D#2-"9H6H-5I event When 0-"9H5H object Text1 (I2@4H32##1-#L!6I!2) *H'C+
H@#20C
I event 5IC2#@
G'H20C+I*2!2#@I2!25H object 5IDI+#7-D!H C+I8%-@I2DAID-#L! EVENTEST A%I'@I2D5H object text2 @5"3*1HC event When 15I RETURN !EMPTY(THIS.PARENT.TEXT1.VALUE)3*1HI2I@G2#@
G'H2I2 object text1 !5I-!9%6@I2!2325H object text2 DIevent GotFocus 0@4@!7H-@#232# focus D5H objcet 1I*1@8C+I5'H2 event 5I0@4+%12 event When I2H22 event When !2DI60!2325H GotFocus 3*1H#0@  focus 5I!5#0B"
L!2C Visual FoxPro H-FD80DIC
I!1-"H2AH- event KeyPress 0@46I@!7H-832#5"LCFG2! keyboard 8DI12#C
IDA%I'C2#*#I2@#7H-4@%event InteractiveChange 0@46I@!7H- object 1IF@42#@%5H"A%event Valid event 5I*H'C+
H0C
IC2##'*-I-!9%- object 1I'H2I-I-!9%9I-+#7-D!H C+I8%-@I2DAID-#L! EVENTEST A%I'@I2D5H object text1 @5"3*1HC event Valid 15I RETURN !EMPTY(THIS.PARENT.TEXT1.VALUE)3*1HI2I@G2#@
G'H2I2 object text1 D!HDI!52#I-I-!9%GD!H*2!2#--2 object 5IDevent LostFocus 0@46I@!7H-@#2032#%0--2 object 1IF '452#C
I20-42"H--55C-+I2 event Click 0@46I@!7H-@#232#%4J@!2*L 1 #1I +#7-8H! enter 5H object 1IF event 5I8G@"@+GH-"Fevent DoubleClick 0@46I@!7H-@#232# double click @!2*L 2 #1I@!7H-@#232#--2-#L!(4-#L!) 0@4 event -0D#6II2event Destroy 0@41 object 8F object H- 6H*H'C+
H@#20C
IC2# clear H2H2F5H@46I event Unload 0@4@G-*8I2" +#7-I2"*8 
ACTIVATE SCREEN @G3*1H5HC+I32#A*% Main Visual FoxPro Window@G-"H2D#I2#1*3+#1 event 7I25H@#2'##9I 6H event 5H!2%H2'!25I@G@5"*H'+6H@H21I *H' event -7HF -5!2!2"0@46I!2DI-"H2D#1I @#2I-"I-%1D9 5H control class -AH%01' 6HAH%01'1I0!5 event AH21--D I2!03!2%H2'1I+!G1

2 @#20!@-G"1#9ID!H+!@+!7-1 1'C+5H9@#5"C
I2!"2"2!-42"#2"%0@-5"-55GA%I'18@"**1"I2+#7-D!H'H2@'%2-8@#5" event 6I!2@7H-032#@5"B#A#!@I2D1I 2 event G!5 2#2!4@-#L(Parameter) B%H--!2I'" 2-1G%8+2"@I2DD!H!56I!2 !-DI3@5"''H28'#0I-#9ID'II2'H2 H25HAH%0 event *HH2!2C+I1I*HH2-0D#!2C+I@#2 @
H @#2@#5" Keypress Event 6I!2 G0#22#2!4@-#L*HH2H2!2C+I15I  LPARAMETERS nKeyCode, nShiftAltCtrl@#4H!2 *1
%1)L n 1'@%GI2+I21'A#H- +!2"6H25H*H!2@GA 1'@% (numeric) *1
%1)L a +!2"6H25H*H!2@G -0@#"L (array) *1
%1)L c +!2"6H25H*H!2@G 1'-1)# (charecter) *1
%1)L l +!2"6H25H*H!2@G ##0 .T. , .F. (logical) *1
%1)L d +!2"6H25H*H!2@G '15H (date) *1
%1)L f +!2"6H25H*H!2@G 1'@% float *1
%1)L o +!2"6H25H*H!2@G --@G (object) *1
%1)L t +!2"6H25H*H!2@G '1@'%2 (datetime) *1
%1)L y +!2"6H25H*H!2@G @@#5H (currency) *1
%1)L u +!2"6H25H*H!2@G unknow*1
%1)L5H!%H2'!21I+!5I #-8!D61'A#H2F- Visual FoxPro 5HA*--!2 nKeyCode +!2"6 H2-8H!5H@#2DI32# @
H 8H! a (@%G) 0DIH2 97 H2'5IDI!22D+ @GH2C2#2 ANSI Code @#2*2!2#A%H21'@%5I%1!2@G1'-1)#DIB"C
I1L
1 CHR(nKeyCode)  nShiftAltCtrl +!2"6 H25H*H--!2@!7H-@#28H! Shift, Ctrl +#7- Alt 0DIH2 1,2 A%0 4 2!%31 I2D!HDI*2!8H!1%H2'0DIH2 0 C#55H@#28H! Alt 1 Ctrl 0DIH2-0D# 8G3H25H!1!5!2'1 2+4=6 
+#7- ActivateCell Event C -B##4 (grid control) *HH2H2 nRow,nCol 7-%31- A'C A%0-%1!L C grid .3A+H- cursor -"9H @GI*H'5H@+%7-80DI1!1-5 AH- @7H-2-42"-5IGD!H+!@"-0#4F @H25IH-@7H-@GA'2C2#(6)2H-D
@!- (Methods)CAH%0 object 1I0!5@!-C+I@#232#@#5"C
I +#7-C+I object 32!3*1H5H@#2*1HC+I3 I28*1@8C+I5F 8G0#2'H2 @!-G7-3*1H##!23*1H+6H@H21I@-6HG@+!7-13*1H1H'FD @5"AH @!-*H'C+
H0#031 object @
HCircle Method @G3*1HC
I'2#9'%! @
H  _SCREEN.Circle(100,100,100)  #9A3*1H Object.Circle (nRadius, nXCoord, nYCoord [, nAspect])CloneObject Method @G3*1H5HC
I*3@2 object 6H032#*3@21I properites,event A%0 method DI'" #9A3*1H  Object.CloneObject(NewName)Refresh Method @G3*1H5H@#2C
IC+I32#A*C+!H @7H-32#A*H2C+!H5H@46I 3*1H5I@#2C
IH-"!2 #9A3*1H  [[FormSet.]Object.]Refresh Object.Refresh
Requery Method @G3*1H5HC
IC+I32#@#5"C
I2 SQL -5#1IC
I1-B# ComboBox A%0 ListBox 6H@#20C
IC#55HI-2#C+IA*I-!9%C+!H@7H-32# update I-!9%@I2!2C ComboBox +#7- ListBox (@!-5IGC
IH-") #9A3*1H  Control.RequeryRelease Method @G3*1H5HC+I32#%I2 -#L!, -#L!@G--2+H'"'2!3 +#7-G7-2#3C+I--2-#L!1I@- @#20C
I18F-#L!@*!- #9A3*1H  Object.ReleaseShow Method @G3*1HC+I32#A* -#L!, -#L!@G, 9%2#L 6I!2 #9A3*1H  [FormSet.]Object.Show([nStyle])*3+#1C*H'-@!-- Visual FoxPro @-2@H25IH- GA%I'
C2#1I@!7H-8I-2#C
I2 methods AHC object 1ID!H!5C+I803-"H2D#? 8I-32#*#I2 @!- (methods) 6I!2C5HA%I'8DI@+G2#*#I2 method m_keypress C2#3@#7H-4@%!2I2A%I'55I!03!2-42"C#2"%0@-5"-5#1I @5H"'1'452#*#I2 '452#C
I26H@#2*2!2#3!1DC
I2DI-"H2D#I2 A%0#9A2#*#I2 2#*HH2H2 2#*#I21IG!5'452#H2"F AH'#366I'"'H2@#20*#I2@!7H-D+#H A%00I--"9H5H object C1'D+ @7H-5H0C+I2#32@4#0*44 2*9*8 1. I2#532#*#I2-#L! C+I32#%4J5H@!9 Form +#7-  I23%132#*#I2 Visual Class Library -"9HC+I%4J5H@!9 Class 2. @%7- New Method  3. 21IC+I4!L
7H- Method 5HI-2#0*#I2 C
H- Name  8*2!2#C*H+!2"@+8H2FDIB"C*HD'IC
H- Description INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro7_files\\kasem_files\\chapter8_files\\c8002.gif" \* MERGEFORMATINET @!7H-832#*#I2@*#GA%I'8*2!2#@I2D@5"3*1HC@!-6H0@G-"9HC*H'- properties C+1'I- methods2#@5"BI3*1H - @!-1I0@+!7-12#@5" 1L
1H 2#C
I2G0%I2"12#@#5"C
I1L
1H-5@+!7-1 @!7H-8032#@#5"C
I2 @!-1I!5#9A2#@#5"C
I215I objcetName.MethodName+#7- I28I-2#*HH2H2C+I1@!-A%I'C+I32#*HH2%1!2"11'A#G32#@#5"C
I215I cVarible = ObjectName.MethodName(cParameter,nParameter..)+#7- @#5"C
I2A5IGDI = ObjectName.MethodName!26#5IC*H'-2*#I2A%02#@#5"C
I @!--0DI-0D#I2D!H!2GI-" #4FI28@"C
I2 FoxPro #9H@H2+#7-C+!H @!-!1G@+!7-1 B4@"-#L"H-"F(Procedure) 1H@-
8*!14 (Properties)Properties @G2#3+8*!14C+I1'181IF 1'-"H2H2"F@%"5H832#3+G7-2#3+#0@ --L 2--L +#7-3+C+I'181I*2!2#3-0D#2-"H2@
H *2!2#@%7H-"I2"DI +#7-@%5H"2G2! 6H2#3+8*!14CFDI1I!106I-"9H1-B#%5H83!23@G object 'H20@4B-2(C+I!2AHD+ !0-"1'-"H2 properties 21'C+I9H-GA%I'1AlwaysOnTop @G2#*1HC+IA*-#L!1I-"9H windows @*!- #9A3*1H  Object.AlwaysOnTop[ = lExpr]AutoCenter @G2#*1HC+IA*-#L!1I-"9H#%2 windows  #9A3*1H  Object.AutoCenter [ = lExpr]Closeable @G2#3+C+IA*8H! 4-#L!+#7-D!H #9A3*1H  Object.Closable[ = lExpr]WindowState 3+2--#L!-@#4H!IC+I!52 0 #4, 1 "2"C+
H, 2 "H-@%G #9A3*1H  [Object.]WindowState[ = nState]WindowType 3+%1)0-2#@4-#L! I2@G 0 *2!2#5H0@4-#L!H-DDI , 1 0I-4-#L!181H-6032#@4-#L!C+!HDI #9A3*1H  Object.WindowType[ = nType]@GI
8*2!2#3+8*!14- object 1I+!#I-!F1DIB"C
I3*1H SetAll#9A3*1H Container.SetAll(cProperty, Value [, cClass])@
H myForm.myOptionGroup.SetAll("Enabled",.F.)8@"**1"I2+#7-D!HC2#1I@#2I-2#C
I21'A#11'-#L! +#7-C object 1'-7HF @
H @#2-"2DI1'A#*11'5H@G1'@% +#7-@GA##0 @G'15H @#203-"H2D# C@#7H-- properties 5I Visual FoxPro G@4B-2*C+I@#2*2!2#*#I2 properties -@#26I!2@-DI 6H*H'C+
H5H!*#I26I!20@GC%1)0-1'A#@*5"!2'H2 I2C#@"3D3-"H2-7HDI#82
H'"-I'"GA%I'1 C5HA%I'!2@#7H-2#*#I2@#7H-4@% 80DI@+G2#*#I2 properties 6I!2I2A%I' 6H'452#!515I7-
1. I2#532#*#I2-#L! C+I32#%4J5H@!9 Form +#7-  I23%132#*#I2 Visual Class Library -"9HC+I%4J5H@!9 Class 2. @%7- New Property 3. 21IC+I4!L
7H- property 5HI-2#0*#I2 C
H- Name  8*2!2#C*H+!2"@+8H2FDIB"C*HD'IC
H- Description INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro7_files\\kasem_files\\chapter8_files\\c8003.jpg" \* MERGEFORMATINET 8*2!2#91'-"H22#C
I2 properties 5H*#I26I!2C+!HDI2 @#7H--2#*#I2 @#7H-4@% @
H5H!32#*#I2D'I1I0-"9HC*H'- %2* container calculator 6HGDIAH  r_lnewvalue = .T. r_ncaltxt = 0 r_coldmath = "+"+#7- author = "Program by Kasem K." @GI
@G-"H2D#I2#1 @#5"#9I!26 . 05I 68"1@5"-#L!I-I-!9%"1D!H@GG-"H2@4HI-0#1 5H!-42"!2+%2"+%2"- @G@5"AH9 @7H-@G2I2'@4DI'"'2!@I2CH2+2 -+I20@G2#*#I2#02A%I'#1 H2"FAHDIC'2!
B#A#!+%1(Main Program)
*3+#1B#A#!+%15H!03@*-5I@G@5"A'2+6HC+%2"FA'2 8-2#0"8LD@G-"H2-7HGDI C Visual FoxPro DI1@#5"!@#7H-!7-D'I*3+#1C+I@#2*#I2#02C+I@#26HG7- B#A#! Project Manager +%2"FH28I1!15 @#20@!7H-@#2 41I#0A%I'32#@#5"B#A#! Visual FoxPro @G#1IA#B#A#!1'5IG0B%H--!2 AH-5I!0C+I832#*#I2!1C+!H A%0@7H-C+I2#@#5"#9IA%02#*#I2@GDCA'2@5"'1 C+I832#*#I2 sub-directory 6I!2@G#02-@#2H-B"4!L3*1H5H command window 15I
! MD C:\MYAPP SET DEFAULT TO C:\MYAPPCREATE PROJECT MyProject 
-5I@#2!23'2!#9I11%1)01H'FD- main Visual FoxPro window 1H- 2#-I26 main windows 1I@#20C
I3*1H _SCREEN 6H8G@"@+G!2I2A%I' !0-"1'-"H2C+I%-32!B"I-3*1H5H commnd window 15I
_SCREEN.Caption = 'B#A#!-	1'  && @G2#@%5H"I-'2!D@4I%_SCREEN.Backcolor = rgb(192,192,192) && @%5H"*5	2+%1@G*5@2_SCREEN.Controlbox = .F. && D!HA* control box 1I+!_SCREEN.Controlbox = .T._SCREEN.Closeable = .F. && 48H! close box_SCREEN.MaxButton = .F. && 48H!"2" windows_SCREEN.MinButton = .F. && 48H!"H- windows_SCREEN.Height = SYSMETRIC(2) && @G2#3+'2!*9- Main Visual FoxPro Window *H'1L
1 SYSMETRIC(2) 0@G2#*HH2'2!*9- - 25HDI32# set D'ICB#A#! Windows I28 set - 2@G 640 x 480 H25H*H!2G0@G 480 @GI +#7-H2"FG@G2#3+2C+I*9@G!+I2 B#A#! Windows D!H'H2032# set '2!%0@-5"@G@H2D+#HG2!_SCREEN.Width = SYSMETRIC(1) && @G2#3+'2!'I2- Main Visual FoxPro Windows_SCREEN.Visible = .F. && @G3*1HC+I32#H- Main Visual FoxPro Window
*+!2"@+8 I23*1HD+@G .F. I2@%5H"@G .T. G0@G2#32#1I2!
8DI#263*1HC2#'8! Main Visual FoxPro Window I2-*!'# AH!5-5*4H+6H5H0-42"C+I#2@G@#7H-@5H"'12#3+* 2A'%I-! (environment) - Visual FoxPro 6H!4'H2H21I+%2"'#-"H2"4H5H0I-#9ID'I 6HAI!I-!9%5H03+* 2A'%I-!- Visual FoxPro G7- AI! CONFIG.FPW 2#*#I2AI!5I8*2!2#*#I2DIB"C
I text editor CFGDI +#7-C
I 3*1H modify command 6-5I@#2!291H-'H2@#203-0D#1AI! CONFIG.FPW DII2@
H2#5H@#212#1 Main Visual FoxPro Window B"C
I3*1H _SCREEN 1I@#2I-3C0-"9HC Main Visual FoxPro Windows AHI2@#2I-2#3C05H@#5"B#A#!@#2GI-C
I AI! CONFIG.FPW @I2
H'" +#7-I2@#2I-2# SET H2H2F @GI @#2!291'H2 CONFIG.FPW 1I3-0D#DII2 C+I32#4!L3*1H  modify commmand CONFIG.FPW4!L3*1H2!5I
TITLE = B#A#!-	1  && 3+ title DEFAULT = C:\MYAPP && 3+ default directoryDATE = ANSI && 3+#9A'15H@GA yy.mm.ddCENTURY = ON && 3+ 5@G 4 +%1 yyyyESCAPE = OFF && "@%42#C
I 8H! Esc DELETE = ON && 3+D!HC+IA*@#-#L5H9%DA%I'HELP = OFF && "@%4 helpTALK = OFF  && D!HC+IA*%032TMPFILE = C:\TEMP && 3+ directory - tempolary file (8I-*#I2 directory TEMP 6I!2@-I'")COMMAND = DO C*H
7H-B#A#!  && C+I32#@#5"B#A#!6I!232@%" 8*2!2#C
I3*1H _STARTUP A3*1H COMMAND GDI
@%GD!H%1 I28D!HI-2#C+I Main Visual FoxPro Window #26I!2032#@#5" Application -8C+IC*H3*1H SCREEN = OFF C CONFIG.FPW2#3+* 2A'%I-!- Visual FoxPro 1I@#2*2!2#5H03C+IB#A#!@#232DI56IA%0@#G'6I @!7H-8DI32#*#I2 AI! CONFIG.FPW @#5"#I-"A%I'8I-3!1DC*HD'IC Project Manager 5H@#2DI*#I2@#5"!D'I 7- MyProject B"315I
1. 5H Project Manager C+I %4J5H Other2. C+I@%7- Text File A%I'%4J8H! Add3. C+I4!LD%L CONFIG.FPW 5H Select file A%I' %4J8H! OK 
@#2*2!2#@#5" config D%L25H-7HDI+#7-D!H A%I'*2!2#*#I2@G
7H--7HDII'"+#7-D!H ?I2@#2032#@#5"D%L config 25H-7H A%I'@G
7H--7HI'"@#2*2!2#3DI B"C
I 2#2!4@-#L(parameter) -c@
H @#2DI32#*#I2#02-@#2A%I' build @G .exe 
7H-'H2 myproject.exe @'%2@#5"C
IC+I4!L15I  MYPROJECT.EXE -CC:\MYAPP\MyConfig.FPW+#7-I2@#5"2 Visual FoxPro GDI B"4!L VFP.EXE -CC:\MYAPP\MyConfig.FPW
2#*#I2@!B#A#!
C#02+6HF 0I-!5B#A#!1'+6H@G1'+%15H039IC
IH2D*9H*H'H2F-B#A#!6HG7- @!B#A#!(main program) 2#*#I2@!B#A#!1IGA%I'AHH20*#I2D!HDI!5@L-0D#2"1' AH!0-A03@7H-@GA'2C2#*#I2H-FD H--7H@#2!29'2!I-2#-@#2H-'H20C+IB#A#!@GD-"H2D# (!16I-"9H5H'2!-"2-AH%08%)
5I@G'2!I-2#*H'1' +I2!%-@%5"C+IJ-5ID@%"A%I'11. I-2#C+IA* B%BI032#@4#02 (A*"5H+I-'H21I@+-0)2. 21IC+I9IC
II-#+1*H2@7H-@I2*9HB#A#! (!4C+I9I#0*L5@I2!232)3. @#5"@!96I!2 A%I'A*B%BI I'"
#02AH%0#021I0I-!53*1H READ EVENTS -"9HI'"@*!- 6H*H'C+
H@#20@-2D'I5H@!B#A#! 8**1"'H2C*HD'I3D! I28@"%- build application @G .EXE B"D!HC*H3*1H READ EVENTS  A%I'%-@#5"B#A#!9I2@G!7-C+!H #I-"%0#I-"+I2*46I!2A'J@5"'A%I'G+2"D@+!7-*2"%! C help - Visual FoxPro -D'I'H2@G2# start event processing C'2!4-!1I!1G@G3*1HC+I#-#1H229IC
I2@+!7-@G %9D!H#9I 'H2@#20C
I3*1H"@%4 6H3*1H5HC
IC2#"@%4 READ EVENTS G7- CLEAR EVENTS +%125H@#232#C
I3*1H5IA%I'B#A#!G0+%82 READ EVENTS !232C##1H-!2 *H'C+
H@#20C*H3*1H READ EVENTS D'I5H main program A%I'C*H3*1H CLEAR EVENT D'I5H@!9 5H32# --2B#A#! (quit) 8*2!2#C
I READ EVENTS 5H#1IGDI AHH-C
IG'#0 CLEAR EVENT -@H2H- @#2!291'-"H22#C
I1H- 
1.C+I32# %4J5H Code C Project Manager 2.H-!2C+I%4J'25H Programs @%7- #2"2# New A%I'32#I-3*1H15I
SET PROCEDURE TO UTILITYON SHUTDOWN DO SHUT_DOWNON ERROR DO errhand WITH ;ERROR( ), MESSAGE( ), MESSAGE(1),;PROGRAM( ), LINENO( )SET CURSOR OFFDO FORM License NAME LicenseINKEY(5) SET CURSOR ONDO StartupLicense.ReleaseDO FORM Login READ EVENTDO Cleanup*** End of Program ***
 3. 32# save B#A#! B"2#%4J5H @!9 File @%7- Save As C*H
7H- B#A#!'H2 MAIN
8GDI3'2!#9I113*1H READ EVENTS A%0 CLEAR EVENTS DI2A%I' "1!53*1H5H!0-%H2'6-5 2 3*1H @G3*1H5H'8!2#@4I-4%2-B#A#! 6HC2#@5"B#A#!1I2#1I*4H5H@#22D!H6G*2!2#@46IDI @#2G'#032#'8!2#@4I-4%2@+%H21I@*5"H-5H!10@46I @!7H-!1@46IA%I'C+I!1A*I-4%26I!2AIC+I@#2#2 @#20DI+22AIDI-4%2@+%H21I-553 *1H5H0%H2'6G7- 
3*1H ON ERROR #9A3*1H ON ERROR [Command]@!7H-@4 I-4%2A%I'C+I32!3*1H5HI-2# @
H
ON ERROR DO errhand WITH ERROR( ), MESSAGE( ), MESSAGE(1),PROGRAM( ), LINENO( )
*H'B#A#! errhand 1IC+I32#*#I2B#A#!
7H-'H2 utility @7H-32#@G B4@"-#L(procedure) errhand B"32#*#I215I
 1.C+I32# %4J5H Code C Project Manager  2.H-!2C+I%4J'25H Programs @%7-#2"2# New A%I'32#I-3*1H15I
******************************************************************** Procedure OnError *******************************************************************PROCEDURE errhandPARAMETER merror, mess, mess1, mprog, mlinenoON SHUTDOWNmessagebox('+!2"@%I-4%2: ' + LTRIM(STR(merror)) + CHR(13) + ;'I-4%2: ' + mess + CHR(13) + ;'##1I-4%2: ' + mess1 + CHR(13) + ;'##15H4%2: ' + LTRIM(STR(mlineno)) + CHR(13) + ;'B#A#!: ' + mprog + CHR(13) + ;'Please contact your Vendor '+ CHR(13) + ;'I28@4 Visual FoxPro -"9HH-A%I'C+I4A%I'@#5"B#A#!-5#1I' , 288,"")QUITENDPROC
 3. 32# save B#A#! B"2#%4J5H @!9 File @%7- Save As C*H
7H- B#A#!'H2 UTILITY
3*1H ON SHUTDOWN #9A3*1H ON ERROR [Command]@G3*1H@!7H-@#232#%4J5H8H! close box A%I'C+I32!3*1H5HI-2# @
H
ON SHUTDOWN DO SHUT_DOWN
B4@"-#L SHUT_DOWN GC+I32#*#I2@GD'I5H B#A#! UTILITY @+!7-1B"4!L3*1H15I 
******************************************************************** Procedure ShutDown *******************************************************************PROCEDURE Shut_DownLOCAL nAnswernAnswer = messagebox("I-2#--2B#A#!",292,"")IF nAnswer = 6 QUITENDIF ENDPROC
*3*#1*4HH2FCB#A#!+%15H0I-!51I6I-"9H1H2'H20@5"B#A#!4(2%##%62D+ AH-"H2I-"'#0!52!*4H5H!DI%H2'D'II2I 
@!9 (MENU)
9IC
I2*2!2#@I262H2C#025H@#232#*#I2DIGB"2#@%7-#2"2#2@!9 	01I2#3@!9G!5'2!*31
D!H"4H+"H-D'H22#*#I2B#A#!#0@ -7H @#20#02-@#20C
I2DI*0'+#7-D!H G6I-"9H5H@#232#--AA%0*#I2@!96I!2 Visual FoxPro DI13@#7H-!7-C2#*#I2@!9!2C+I@#2@#5"#I-"A%I' I2@G@!7H-H-8I-!22#2#@5"B#A#!3*1H1@- '452#*#I2@!9
 5H Project Manager C+I@%7-AJ Other A%I'@%7- Menus %4J8H! New +#7- I-3*1H5H command window 15I CREATE MENU 8H! Enter* +!2"@+8 I2C
I Visual FoxPro H3'H2 Version 5.0 0*2!2#3DI@	20 Menu -"H2@5"'
C Visual FoxPro DI@#5"!@#7H-!7-C2#*#I2@!9!2C+I 2 
4 7- HYPERLINK "http://kasem.sstplus.com/chapter9-2.htm" \l "MENU" Menu @G2#*#I2@!9##!22!#4 HYPERLINK "http://kasem.sstplus.com/chapter9-2.htm" \l "SHORTCUT" Shortcut @G2#*#I2@!95H@G Shortcut Menu I26 2D!H-- !1G7-@!95H@46I-8%4J@!2*LI2'2A%I'0!5@!9B%H--!21HA+%0C
H@%" -D 2'84
MENU '452#*#I2 @!9 C+I8 %4J5H8H! Menu C dialog box New Menu +%121IG0@I2*9HC*H'- Menu Designer I28I-2#*#I2@!9C#9A5H Visual FoxPro !5!2C+I*2!2#3DIB" @%7-@!9 Menu A%I'@%7- Quick Menu B#A#!G032#*#I2@!9*3@#G#9C+I8C1% AHC@#5"5ID!H-A03C+I832!A @#2032#*#I2@!9I'"1'-@#2@- INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro9_files\\kasem_files\\chapter9-2_files\\c9202.gif" \* MERGEFORMATINET C+I8I-@!92!1'-"H2I255I@#2!29'H2AH%0*H'C
I3-0D#I2 Prompt @G2#3+@!9 title A%0#2"2#@!9 Result C
I-'H23*1HC#2"2#@!91IF32-"H2D#  Command 3+C+I@G2#I-3*1H *2!2#I-DI@5" 1 ##1  Pad Name 3+
7H- pad C2#-I26 Bar# 3+C+IC
I system menu bar 6H!5!21 Visual FoxPro Submenu 3+C+I!5 submenu "H-" Procedure 3+C+I!52#I-3*1H@G B4@"-#L"H-" Create/Edit C
I*3+#1*#I2AID submenu +#7- B4@"-#L Option @G2#3+%1)0-#2"2#@!9-8 Move Control @G8H!3*1H-"9HI2+I2 Prompt C
I*3+#1"I2"3A+HC#2"2#@!9 Menu Level C
IA*#01-@!95H3201I A%08*2!#5H0"I2"#01@!9-8DIB"C
I menu level Insert @G8H!3*1HC2#@4H!#2"2#C@!9 Insert Bar... @G8H!3*1HC2#@4H!#2"2#@!9- Visual FoxPro (sysyem menu bar) @2!2C@!9-@#2 Delete @G8H!*3+#1%#2"2#C@!9 Preview @G8H!*3+#1*-@!95H@#2*#I26I!2
55I@#2%1!29@!95H@#232#*#I21H-C prompt File C+I32#%4J5H 8H! Create A%I'32#I-#2"2#H2F15I
PromptResultCustomerCommandDO FORM CUSTOMERSalesmanCommandWAIT WINDOWS 'NO PROGRAM'C prompt Other C+I32#%4J5H 8H! Create A%I'32#I-#2"2#H2F15I
PromptResultAssign UserCommandDO FORM USERPRFC prompt Exit C+I32#%4J5H 8H! Create A%I'32#I-#2"2#H2F15I
PromptResultQuitCommandCLEAR EVENT21IC+I8%4J5H8H! Preview 8G0DI@+G#2"2#@!95H8DI32#*#I26I!2 H-5H803@!95H8*#I2DC
I28I-32# Generate @!9-8@*5"H- B"32# %4J5H @!9 Menu A%I'@%7- Generate... @!7H-32# generate @*#G@#5"#I-" Visual FoxPro G0*#I2B#A#!6I!2C+I8 !52!*8%@G .MPR @'%2803@!9DC
I28I-C
I3*1H DO C2#@#5"@!91IF6I!2 @
H
DO MENU.MPR
@!7H-8I-2#%1DC
I @!9- Visual FoxPro 8*2!2#3DIB"I-3*1H15I SET SYSMENU TO DEFAULT
A03 B#A#!5H@#2C
I*#I2@!96I!25I@G@5"AH@#7H-!7-8HA#C2#*#I2 B"5H'2!*2!2#2-"H25H!5-"9HC3*1H-@!91I @#7H-!7-1'5ID!H*2!2#3DI1I+! 8"1I-2#6H3*1HC2#B#A#!-"9H5 11I6-A03 C+I8@I2D92#@5"B#A#!5H@#2*#I22@!9A%0 generate --!2@GD%L .MPR 'H2!53*1H-0D#I2C
I-"H2D# @#G@%G@%GI-"2#3+ Keyboard Shortcut @!7H-@#2I-2#C+I!52#@I26@!9-@#2-"H2#'@#G'@#2*2!2#3DIB"2#3+ shortcut C#2"2#@!9-@#2 6H!5'452#15IC+I%4J5H8H! Option 5H
H- Key Label C+I32#8H!AI4!L5HI-2#3@G shortcut @
H 8H! Ctrl 1 F, Alt 1 F @GIC
H-- Key Text 0@G2#3+ I-'2!5HI-2#C+IA*+%1#2"2#@!9 C
H-5I*2!2#A*DIC*H'- #2"2#@!9(menu item) @H21I C*H'-@!9D@4I%(menu title)D!H*2!2#A*DI2#3+-LC#2"2#@!9(menu item)8*2!2#5H0@%5H"A% font C menu item DIB"-2(1"@4@%GI-" B"315IC+I%4J5H8H! Option 5H
H- Skip For C+II-3*1H2!1'-"H25I .F. FONT "AngsanaUPC",16 STYLE "BI" AngsanaUPC @G
7H--L5HI-2#C+IA* 16 @G2--L B,I @G2#3+C+IA*@G1'+2A%0@-5" * 2#C
I'453+ font A5I0D!HA*C+I8@+G-C
I8H! Preview 8I-32# generate H-A%I'H-"C
I3*1H DO 
7H-@!9.MPR 60*2!2#A*C+I@+GDI
C
H- Skip For I2%%1L5HDI!5H2@G #4(.T.) 0@G2#3C+I#2"2#1ID!H*2!2#32#%4JDI I2'H-D-51I2#3+@!9C+I-"9H-#L!8*2!2#3C+I@!9C+ID#2-"9H-#L!A5H0D-"9H main visual foxpro window DIB"32!1'-"H2H-D5I 1. 5H command window C+I4!L3*1H CREATE MENU MENUFORM2. C+I@%7- Menu 21I832#*#I2@!9 @7H-'2!#'@#G'C+I%4J5H@!9 Menu A%I'@%7- Quick Menu B#A#!G0*#I2@!9*3@#G#9C+I83. 21IC+ID5H @!9 View @%7- General Option C+I32#%4J5H Top-Level Form4. 32# generate @!9 B"%4J5H@!9 Menu A%I'@%7- Generate... @*#G1I-C2#*#I2@!9A%I'#15. 32#*#I2-#L! 5H command window C+I4!L3*1H CREATE FORM FORMMENU6. C+I*#I2-#L!1#9 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro9_files\\kasem_files\\chapter9-2_files\\c9203.gif" \* MERGEFORMATINET 5H form properties 3+ ShowWindows @G 2 - As Top-Level Form Init Event I- DO menuform.mpr WITH THIS,.T. Destroy Event I- RELEASE MENU5H8H! Command1 3+ properties  Caption I- Cancel Click Event I- Thisform.Release32# save -#L! A%I'%-#1B#A#!9  B"4!L3*1H5H command window 15I DO FORM FORMMENU
SHORTCUT2#*#I2 shortcut G%I2"F12#*#I2@!9#4 @#2!29'H2@#203 shortcut DI-"H2D#1H- C+I8*#I2 shortcut B"I-3*1H5H command window 15I
 CREATE MENU MYSHORT
C+I@%7- Shortcut +%121IC+I*#I2@!915I32#%4J5H8H! Insert Bar A%I'@%7- Clear A%I'%4J5H8H! Insert@%7- Paste A%I'%4J5H8H! Insert@%7- Cut A%I'%4J5H8H! Insert@%7- Copy A%I'%4J5H8H! Insert@!7H-83@*#GC+I32#%4J5H8H! Close 0DI#2"2#@!91#9 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro9_files\\kasem_files\\chapter9-2_files\\c9204.gif" \* MERGEFORMATINET 
C+I832# generate @!9 B"%4J5H@!9 Menu @%7- Generate...21IC+I83-#L!5H@#2DI*#I2D'IH-+I25I6I!332#AID B"4!L3*1H5H command windows 15I MODIFY FORM FORMMENU5H Text1 32#I-3*1HC*H'- RightClick Event @G DO MYSHORT.MPR5H Text2 32#I-3*1HC*H'- RightClick Event @G DO MYSHORT.MPR21IG32# save -#L! A%I'%-@#5"-#L!!29 @'%20*- shortcut menu C+I8I-I-'2!5H text1 A%I' darg I-'2!1I A%I'%4J@!2*L'2 G0#2 short menu 6I!2803-0D#H-DGA%I'AH8..
A03 8*2!2#3 shortcut menu DC*HD'IC Control Textbox A%I'@G@G Visual Class Library @7H-0DI%@'%2C2#I-3*1H3'2!@I2C1@!9 8#2+#7-D!H'H2@!95H@#232#*#I26I!2AH%0*H'9@#5"'H2-0D#I2?C@!91I0#0-DI'"*H'H2F15I MENU PAD POPUP BAR
MENU @!9@G*H'5HC
IA*#2"2#H25H@#23+D'I @
H File Edit View .... 1I+!5I@#2#'!@#5"'H2@!9  (menu bar)  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro9_files\\kasem_files\\chapter9-2_files\\c9205.gif" \* MERGEFORMATINET I2@#232#*#I2@!9I'" Menu Designer @!95HDI0!5
7H-'H2 _MSYSMENU 6G7-
7H-@!9- Visual FoxPro 1I@- I2@#232#@5"B#A#!6I!2@-@#2*2!2#01I
7H-@-DI3*1H5H@#2C
I32#*#I2 MENUDEFINE MENU MenuBarName [BAR [AT LINE nRow]]  [IN [WINDOW] WindowName | IN SCREEN] [FONT cFontName [, nFontSize]] [STYLE cFontStyle] [KEY KeyLabel] [MARK cMarkCharacter] [MESSAGE cMessageText] [NOMARGIN] [COLOR SCHEME nSchemeNumber | COLOR ColorPairList]@
H DEFINE MENU example BAR AT LINE 11'-"H2I2I@G2#*#I2 MENU 
7H- example 
PAD @G#2"2#H2F5H-"9HC@!96H@#2@#5"AH%0#2"2#'H2 menu title @
H@!9D@4I% File @!9D@4I Edit @GI3*1H5H@#2C
I32#*#I2 PADDEFINE PAD MenuTitle1 OF MenuBarName PROMPT cMenuTitleText [AT nRow, nColumn] [BEFORE MenuName2 | AFTER MenuName3] [NEGOTIATE LEFT | NEGOTIATE MIDDLE | NEGOTIATE RIGHT] [FONT cFontName [, nFontSize]] [STYLE cFontStyle] [KEY KeyLabel [, cKeyText]] [MARK cMarkCharacter] [SKIP [FOR lExpression]] [MESSAGE cMessageText] [COLOR SCHEME nSchemeNumber | COLOR ColorPairList]
@
H DEFINE PAD syspad OF _MSYSMENU PROMPT '\<System' COLOR SCHEME3 KEY ALT+S, ''1'-"H2I2I@G2#*#I2 PAD 
7H- syspad  2"CI@!9 _MSYSMENU 
POPUP #2"2#H2F-@!9 (menu item) 5H-"9H 2"CI PAD @#2#'!@#5"'H2 popup  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro9_files\\kasem_files\\chapter9-2_files\\c9206.gif" \* MERGEFORMATINET 3*1H5H@#2C
I32#*#I2 POPUPDEFINE POPUP MenuName [FROM nRow1, nColumn1] [TO nRow2, nColumn2] [IN [WINDOW] WindowName | IN SCREEN] [FONT cFontName [, nFontSize]] [STYLE cFontStyle] [FOOTER cFooterText] [KEY KeyLabel] [MARGIN] [MARK cMarkCharacter] [MESSAGE cMessageText] [MOVER] [MULTISELECT] [PROMPT FIELD FieldName | PROMPT FILES [LIKE FileSkeleton] | PROMPT STRUCTURE] [RELATIVE] [SCROLL] [SHORTCUT] [TITLE cMenuTitleText] [COLOR SCHEME nSchemeNumber | COLOR ColorPairList]@
H ON PAD convpad OF _MSYSMENU ACTIVATE POPUP conversion DEFINE POPUP conversion MARGIN RELATIVE COLOR SCHEME 421'-"H2 @G2#3+C+I popup convesion -"9H 2"CI convpad -@!9 _MSYSMENU 
BAR 0@G*H'#2"2# (menu item) -@!9 @
H #2"2# New #2"2# Open @GI 3*1H5H@#2C
I32#*#I2 BAR DEFINE BAR nMenuItemNumber1 | SystemItemNameOF MenuName PROMPT cMenuItemText [BEFORE nMenuItemNumber2 | AFTER nMenuItemNumber3] [FONT cFontName [, nFontSize]] [STYLE cFontStyle] [KEY KeyLabel [, cKeyText]] [MARK cMarkCharacter] [MESSAGE cMessageText] [SKIP [FOR lExpression]] [COLOR SCHEME nSchemeNumber | COLOR ColorPairList] @
H DEFINE BAR 1 OF conversion PROMPT '\<New' KEY CTRL+E, '^N'21'-"H2 @G2#*#I2 #2"2# New  2"CI popup conversion 3++!2"@% 1 C2#-I26#2"2#5I
@#2DI#2'H2C@!95H@#2*#I26I!21I#0-DI'"*H'H2F-0D#I2 A%I'3*1H1IF@G-"H2D# 8%-*3#'A%03'2!@I2C1@!9 MENU.MPR CB#A#!1'-"H25HC+I download 9'H28@I2C!2AHD+
2# Skip #2"2#-@!9 I2832#*#I2-#L!+#7-#2"2 A%I'3-#L!+#7-#2"2 -8DC*HD'IC@!9@!7H-9IC
I(user)32#@#5"#2"2#C@!9 6I!2C
I2 8I-3C+I#2"2#C@!91ID!H*2!2#@#5"C
I2DI-5'H29IC
I0321IF@*#G*4I +#7-32#4-#L!6H@#2*2!2#3DI+%2"'452#I'"1 
'45A# @G2#3+ skip #2"2#-@!9D'IC-#L! @#20C
I 3*1H SET SKIP OF B"3DC*HD'I5H form properties C*H'- Init Event A%0 Destroy Event '452#5II2-5H32#*#I2@!9B"C
I Menu Designer A%0DI!52#3+@7H-D Skip for C Prompt Option 3*1H5H0%H2'65I0D!H!5%-0D#@46I *H''452#3+@7H-D Skip for 0@G'45H-D5H0%H2'6 @#2%1!29'45A#1H- !0C+I832!1'-"H21H-D5I1. C+I832#*#I2@!96I!2B"4!L3*1H5H command window 15I CREATE MENU MENUS12. 32#%4J5H Menu A%I'I-#2"2#15I
PromptResultFileSubmenuExitCommandSET SYSMENU TO DEFALUT21IC+I32#%4J5H8H! option - prompt File @7H-@I2*9H Prompt Option C+I32#I-
7H- pad C
H- Pad Name 'H2 PADFILE A%I'%4J8H! OK3. C*H'- prompt File C+I%4J8H! Create A%I'I-#2"2#15I
PromptResultForm1CommandDO FORM FORMS1Form2CommandWAIT WINDOW 'TEST MENU'C+I%4J5H@!9 View A%I'@%7- Menu Options... C
H- Name 4!L POPFILE (@4!@G FILE) A%I'%4J8H! OK 21IC+I32#%4J5H8H! option - prompt Form1 @7H-@I2*9H Prompt Option C+I32#I-
7H--#2"2# C
H- Bar# @G 1+!2"@+8 8-2D!H3@GI-I- Bar# GDI I2D!HDII- Visual FoxPro 03+C+I@G 1 C#2"2#A# A%0@% 2,3... H-D@#7H-"FC#2"2#H-FD4. 32# generate @!9 B"D5H@!9 Menu @%7- Generate... +%125H32# generate @!9@#5"#I-"A%I'@#20!2*3#'B#A#!@!95H@#2DI32# generate 6I!2 C+I84!L3*1H15I MODIFY COMMAND MENUS1.MPRC+I8*1@##13*1HI2%H25I9DEFINE PAD PADFILE OF _MSYSMENU PROMPT "File" COLOR SCHEME 3 KEY ALT+F, ""DEFINE PAD _s1r0u94fd OF _MSYSMENU PROMPT "Exit" COLOR SCHEME 3 KEY ALT+E, ""I2@#2D!HDI32#1I
7H-C+I1 Pad Name 2Visual FoxPro 032#1I
7H-C+I@- @G _s1r0u94fd 2H2-2DI@G
7H--7HGDI !-A03'H28'#032#1I
7H-C+I1 pad 5H*#I26I!28F#1I @
H 
7H- PADFILE @GI @7H-'2!*0'C2#-I26H-DC*H'- @!9 View A%I' Menu Options... @G2#3+
7H-C+I1 Popup -@!92!1'-"H2I2%H2 DEFINE POPUP popfile MARGIN RELATIVE SHADOW COLOR SCHEME 4*H'- Bar# 5H@#23+D'IC+I8*1@5H##1H-D5I9DEFINE BAR 1 OF POPFILE PROMPT "Form1"ON SELECTION BAR 1 OF POPFILE DO FORMS1+!2"@%+%13*1H BAR @#2*2!2#@%5H"@G+!2"@%-0D#GDIA%I'AH@#203+@7H-'2!*0'C2#-I26-5@+!7-15. C+I32#*#I2-#L!6I!2 B"4!L3*1H5H command window 15I CREATE FORM FORMS1C+I*#I2-#L!1#9 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro9_files\\kasem_files\\chapter9-2_files\\c9207.gif" \* MERGEFORMATINET 5H form properties 3+ Init Event I- SET SKIP OF BAR 1 OF POPFILE .T. Destroy Event I- SET SKIP OF BAR 1 OF POPFILE .F.5H8H! Command1 3+ properties  Caption I- Cancel Click Event I- Thisform.Release32# save -#L!
@!7H-83@#5"#I-"A%I' @#2%-!232#*-9'H2DI%-"H2D# C+II-3*1H5H command window  DO MENUS1.MPR
!26#5I0*1@DI'H23*1H5HC
IC2# skip #2"2#-@!9@#20C
I3*1H SET SKIP OF... @#2!291H-'H23*1H5I*2!2#3-0D#DI-525H%H2'D'II2I'H2@!9#0-DI'" 4 *H'11I3*1H SET SKIP OF... G*2!2#3DI1I 4 *H'@+!7-1 6H!5#9A3*1H15I3*1H5HC
I32# skip @!9SET SKIP OF MENU MenuBarName1 lExpression1@
H SET SKIP OF MENU _MSYSMENU .T. && @!7H-I-2# skip @!9 SET SKIP OF MENU _MSYSMENU .F. && @!7H-I-2#"@%42# skip @!93*1H5HC
I32# skip padSET SKIP OF PAD MenuTitleName OF MenuBarName2 lExpression2@
H SET SKIP OF PAD PADFILE OF _MSYSMENU .T. && @!7H-I-2# skip PAD SET SKIP OF PAD PADFILE OF _MSYSMENU .F.&& @!7H-I-2#"@%42# skip PAD3*1H5HC
I32# skip popupSET SKIP OF POPUP MenuName1 lExpression3@
H SET SKIP OF POPUP POPFILE .T. && @!7H-I-2# skip POPUP SET SKIP OF POPUP POPFILE .F. && @!7H-I-2#"@%42# skip POPUP3*1H5HC
I32# skip #2"2#SET SKIP OF BAR nMenuItemNumber | SystemItemName OF MenuName2 lExpression4@
H SET SKIP OF BAR 1 OF POPFILE .T. && @!7H-I-2# skip #2"2# SET SKIP OF BAR 1 OF POPFILE .F. && @!7H-I-2#"@%42# skip #2"2#
-*1@ 2# SKIP @!9H2 Expression 0!5H2@G .T. +#7- .F.  H2 .T. 0@G2# Skip #2"2#-@!91IF H2 .F. 0@G2#"@%42# Skip #2"2#-@!91IF '455H*- @G2#3+ skip #2"2#D'I5H Skip for C*H'- OPTION C@!92#3+B"'455I@#2I-@5"1L
1(function) 6I!2A%I'C+I@4@G H2 .T. +#7- .F. @#2!2%-91L
1*3+#12#@
G@!9 Exit 1H- @#20@!9#2"2#5I0I-#'*-'H2!52#@4-#L!-"9H+#7-D!H I2!52#@4-#L!CF-"9HG2!GC+I32# skip @!9 Exit C+I832#AID@!9 MENUS1 B"2#I-3*1H15I MODIFY MENU MENUS1I32#%4J5H8H! prompt -#2"2#@!9 Exit  A%I'32#I-3*1HC
H- Skip For 15I _SCREEN.FORMCOUNT > 0%4J5H8H! OK A%I'32# generate @!9 B"%4J5H@!9 Menu @%7- Generate..._SCREEN.FORMCOUNT @G3*1H13'-#L!5H32#@4C
I2-"9H . 01I I2D!H!50!5H2@G .F. I2!5@4-"9H0C+IH2@G .T.%-32#*-@!99B"I-3*1H DO MENUS1.MPR
A%I'!5'45-7H5HC
IC2##'*-2# skip #2"2#-5+#7-D!H?'452#H2F!5-5@"-06I-"9H12##0"8LC
IA%02#3!1!2C
I @G'2!*2!2#4@()+I2!@%5"A @G@%G'#-"9HC'2!9A%-9I#- 3@7-D!H'#7H!@4'1%0 2 ' H-7H!'#-H23@7-H-8#1I
%-!29'455I-5'45+6H @G2#@5"1L
16I!2C
I@-C+I32#I-3*1H5H command window 15I MODIFY COMMAND CHKSKIP8H! Enter 21I32#I-3*1H2!1'-"H2I2%H2
******************************************************************** Function Check Skip Menu Item *******************************************************************Function chkskipPara cFormnamewith _Screen nScreen= .Formcount for i = 1 to nScreen if upper(allt(.Forms(i).Name)) = upper(allt(cFormname)) return .T. endif endforendwithreturn .F.
@!7H-I-@*#G@#5"#I-"C+I32# save B"2#8H! Ctrl+W
C+I32#*#I2-#L!6I!2 B"4!L3*1H5H command window 15I CREATE FORM FORMS2C+I*#I2-#L!1#9 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro9_files\\kasem_files\\chapter9-2_files\\c9207.gif" \* MERGEFORMATINET 5H form properties 3+ Caption = *-2# skip Name = Forms2 && @#21I
7H-@7H-C
I*3+#1C
I1 1L
1 chkskip5H8H! Command1 3+ properties  Caption I- Cancel Click Event I- Thisform.Release32# save -#L!
1IH-!2C+I832#AID@!9 MENUS1 B"2#I-3*1H15I MODIFY MENU MENUS132#%4J5H8H! Edit 5H#2"2# File 5H#2"2# Form2 AI3*1H WAIT WINDOW 'TEST MENU'  C+I@G DO FORM FORMS2A%I'32#%4J5H8H! prompt 32#I-3*1HC
H- Skip For 15I CHKSKIP("Forms2") && Forms2 @G
7H--#L!5H@#21I6I!2%4J5H8H! OK A%I'32# generate @!9 B"%4J5H@!9 Menu @%7- Generate...%-32#*-@!99B"I-3*1H DO MENUS1.MPR
@G-"H2D#I2#1*3+#1@#7H--@!9@-2A-+-!2+-!- I2-H2!261I5IA%I'"1D!H@I2CG#6)2DI#1 @#202#@5"B#A#!!1D+%DDI@#7H-"F !1D!H2"1'AH%0H2G@5"H21D G-5I@5"@H25I%0#1.
2#*#I2-#L!
-#L!@G1'%25H*31
1'+6H5H032#4H-#0+'H29IC
I21I-!9%H2F D!H'H20@G2#I-I-!9% 2#A*I-!9% +#7-2#A*H2'*2#H2F5H@46IC#02 2#5H@#2032#*#I2-#L!6I!2*1-#L!+6H1I!1D!HDI"2-0D#+#- AH2#5H0'8!2#32--#L!1I!1D!HDIH2"*1@H2C 808!2#32--#L!DI-"H2D#1IG6I-"9H12#--A A%02#422#-H21I+%2" I28@I2C+%12#A%0'452#5H!0A03C5IA%I' G4'H20@GA'2C2#--AA%0*#I2-#L!-8H-FD %1)0--#L!C2#I-I-!9%B"1H'FDA%I'0!5-"9H 2 A7-  1.-#L!2#I-I-!9%5%0@#-#L @
H -#L!5HC
II-I-!9% %9I2, *4I2 , 122" @GI 2.-#L!2#I-I-!9%5H!5'2!*1!1LA+6HH-+%2"F@#-#L @
H -#L!5HC
II-I-!9%C*H*4I2 @GI
2#*#I2-#L!I-I-!9%5%0@#-#L-"H25H%H2'D'II2I'H2 2#*#I2-#L!1ID!H"2AH2#'8!2#321ID!HDIH2"@+!7-12#*#I2-#L! H--7H@#2I-6H-'H2-#L!5H@#20*#I2I-2#C+I!5%1)0@G-"H2D# A%0I-366I-4%25H0@422#I-I-!9% @7H-5H0DI32#'8!I-4%2@+%H21I 6H*4H+%15IA+%00H-6'2!*2!2#C2#@5"B#A#!-8 @#2!2%-3-#L!I-I-!9% *4I21H-+%12#3-#L!I-I-!9%0#0-DI'" 4 *H'C+
HF (-9I@5"@-) *H'A#@G*H'- -#L!2#I-I-!9% *H'5H*-@G*H'-8H!'8!(toolbar) C5I!D!HDIA*'55*#I2D'I C+ID9C+1'I- Visual Class Libary  *H'5H*2!@G*H'-@!-3*1HC2#'8!2#32--#L! *H'5H*5H@G*H'-2##'*-'2!4%2C2#I-I-!9%(check error)@#2!2@#4H!1@%"
*H'--#L!2#I-I-!9% 1. 5H command windows I-3*1H  SET DEFA TO C:\MYAPP  MODIFY COMMAND MYPROJECT  ( HYPERLINK "http://kasem.sstplus.com/chapter9.htm" B#@G myproject 8*2!2# download B#A#!1'-"H2DI5H @#4H!*#I2#02) 2. %4J5HAG Docs A%I'@%7- New 21IC+I32#%4J5H New Form 3. 3+ form properites B"%4J@!2*L8H!'2 A%I'@%7- properties 3+8*!14--#L! 15I Caption = AI!I-!9%*4I2 Icon = C:\myapp\bmp\thai.ico MaxButton = .F. MinButton = .F. Top = 60 4. 5H Form Control %4J5H-B% View Class ( INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro10_files\\kasem_files\\chapter9-3_files\\c7003.jpg" \* MERGEFORMATINET ) @7H-3 Sub-Class MyToolbar 5H!DI*#I2@#5"!D'IC+I3!2D'IC -#L! -@#2( HYPERLINK "http://kasem.sstplus.com/chapter7.htm" '452#*#I2 Class C+!H 95H Visual Class Library) A%I'%4J5H Add 21IC+I@%7- D%L mytoolbar A%I'%4J5H8H! Open 21IC+I%4J5H 8H! toolbar1 A%I'!2%4J5H-#L! A%I'- YES 55IC-#L!-8G0!58H!9%2#L#2-"9H 6H@#5"#'!1I9%2#L A%0-#L!'H2 @G -#L!@G(form set)
A03 8*2!2#@4H! +#7-%-#L! C-#L!@GDIB"2#@%7-@!9 Form A%I'@%7- Add New Form @7H-32#@4H!-#L! +#7- Remove Form @7H-32#% -#L! +#7- Visual Class Library@!7H-8I-2#C+I Form Control %1!2@G#4- Visual FoxPro GC+I%4J5H  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro10_files\\kasem_files\\chapter9-3_files\\c7003.jpg" \* MERGEFORMATINET A%I'@%7- Standard 5. C+I32#%4J@!2*L8H!'25H -#L! A%I'@%7- Data Environment... 21IC+I32#@%7- AI! product A%I'%4J8H! Add @!7H-@%7-@*#GA%I'C+I%4J5H8H! Close  6. 5HAI! product C+I%4J@!2*L8H!'2 A%I'@%7- Properties A%I'3+H215I BufferModeOverried = 3 Order = prod_id
BufferModeOveried  0@G2#3+2#I-12#I-I-!9%C2#2(table)  6H2##031I032#B-I-!9%-8@GD'I5H+H'"'2!3--!4'@-#LH- @!7H-DI#031I-!9%C 1@-#L@#5"#I-"A%I'@#20C
I3*1H TABLEUPDATE() C2# update -!9%%*9H2#2-55 +#7-I2I-2#"@%42#@%5H"A%C+IC
I3*1H TABLEREVERT() C2#3+ 1@-#L1I@#23@GI-366-#L!5HC
IC2#I-I-!9%I'"'H2'#03+1@-#L@GAC 1H-D5I 1  D!H!52#3+1@-#L 2  @G2#3+1@-#L@7H-I-1@#-#L5H32-"9H .01ID!HC+I9I-7H@I2!2C
I2DI-5(lock record) 'H2@#-#L1I09%H-"--!2(unlock record) 3  @G2#3+1@-#L@7H-I-1@#-#L 5H32-"9HD!HC+I9I-7H@I2!2C
I2@	20-5H0 update I-!9% 4  @G2#3+1@-#L@7H-I-12#2 'H22#21I09%H-"--!2(unlock record) 5  @G2#3+1@-#L@7H-I-12#2 @	20-5H0 update*H'-8H!'8! 5. 5H Form Control %4J5H-B% View Class ( INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro10_files\\kasem_files\\chapter9-3_files\\c7003.jpg" \* MERGEFORMATINET ) @7H-3 Sub-Class MyControl 5H!DI*#I2@#5"!D'IC+I3!2D'IC -#L!A%I'%4J5H Add 21IC+I@%7- D%L mycontrol A%I'%4J5H8H! Open A%I'32#*#I2-#L!2! 2I2%H2 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro10_files\\kasem_files\\chapter9-3_files\\c9301.gif" \* MERGEFORMATINET 
3+ Properties - -B#AH%01'15IMtextbox1ControlSource = Product.Prod_idInputMark = XXXXXMtextbox2ControlSource = Product.NameMtextbox3ControlSource = Product.UmInputMark = XXXXXXXXXXMtextbox4Alignment = 1ControlSource = Product.UnitPriceInputMark = 9,999,999.99Mtextbox5Alignment = 1ControlSource = Product.On_HandInputMark = 9,999,999@-2%0#16#5IG@*#G*4I*3+#12#*#I2#9A--#L! H2"D+!#1 AH"1D!H+#-#1"1+#7-'452#'8!-#L! A%02##'*-2#I-I-!9%(check error)@#2!291'H2@#20'8!C+I-#L!32-"H2D#@!7H-@#28H!H2F9%2#L 6. C+I832#*#I2 method 6I!215I  5H@!9 Form @%7- New Method... 4!L
7H- @!-'H2 msetenabledoff 8H! Add A%I'4!L
7H- msetenabledon 8H! Add *-@!-5H*#I25I0@G1'3+%1)0--B#H2F'H203-"H2D# C+I8H! Close @7H-32#4+I2H2 New Method 5H@!9 Form @%7- New Property... 4!L
7H- property 'H2 m_newrecord 8H! Add A%I'8H! Close 7. 32#I-3*1HC*H'-@!- B"32#%4J'25H-#L! @%7- Properties C List box C+I@%5H"2 Form1 @G Formset1 6H0-"9H@+7- Form1 6ID-5##1 21I%4J5HAJ Method A%I'3+ @!- 15I5H msetenabledoff  32#I-3*1H15I_Screen.Activeform.Setall("Enabled",.F.,"MtextBox")5H msetenabledon  32#I-3*1H15I_Screen.Activeform.Setall("Enabled",.T.,"MtextBox") 8. H-!23+ Properties C*H'-@!-- toolbar1 15ICmdEdit 5H Click Event I-3*1Hthisformset.form1.setall("Enabled",.T.,"Mtextbox")thisformset.form1.Mtextbox1.Enabled=.F.thisformset.setall("Enabled",.F.,"Mcommandbutton")thisformset.Toolbar1.cmdSave.Enabled=.T.thisformset.Toolbar1.cmdCancel.Enabled=.T.thisformset.form1.Mtextbox2.Setfocus_SCREEN.ActiveForm.Refresh0**1"'H23D!!C+II-3*1HAHC@	20 CmdEdit @H21I @7H-2'H23*1HH2F!DI3+D'IC Visual Class Library @#5"#I-"A%I' 6H2#3+3*1HH2F8*2!2#@I2D9DIC Visual Class Library 9. C+I3+ Properties C*H'- Form1 15Init Event 32#I-3*1Hthisform.SetAll("Enabled",.F. ,"Mtextbox")if recc() > 0 thisformset.toolbar1.cmdtop.clickendifActivate Event 32#I-3*1Hthisformset.toolbar1.Visible = .T.thisformset.form1.closable = .T.thisformset.toolbar1.Dock(0)select productthisformset.form1.refreshDeactivate Event 32#I-3*1Hthisformset.toolbar1.Visible = .F.
*H'-2##'*-I-4%2@!7H-8DI32#*#I2-#L!!26 . 85I8G*2!2#5H0 run -#L!DIA%I' AH-#L!-81IG"12*H'5H*31
5H*8D-5*H'+6HG7-2##'*-I-4%2 H-5H@#2032#3C*H'5I!--42"'452#1+H-"H-C2#@
GI-4%21I*2!2#3DI+%2"A+%2"'45 AH5H!0%H2'65I0G0@G-5'452#+6HC2##'*--4%25H@46I 6H0AH@G 2 *H'I'"17-*H'-2#@
GI-4%21I+! H-2#@GI-!9% @7H-2'H2%1)02#32- windows 1I@#20C
I @!2*L@G+%163C+I9IC
I2*2!2#D 5HCGDIC windows 2#1I-2032#8H! 16I-!9%1IF5HD!HDII-I-!9%-0D#D'I@%" @#263@G5H0I-!5*H'5I@7H-1I-4%25H-2@46I*H'-2#@
GI-4%2#0+'H22#I-I-!9% C*H'5I0@G2#@
GI-4%2#0+'H22#I-I-!9% (invalid input) @
HC#55H9IC
I32#I-#+1**4I25H!5-"9HA%I'I3@I2D-5 @#2G*2!2#AI@7-C+I9IC
I#2DI . 01IDI15 @GI*H'-2#@
GI-4%21I+! H-2#@GI-!9% 10. C+I832#*#I2 method 6I!215I  5H@!9 Form @%7- New Method... 4!L
7H- @!-'H2 mcheckerror 8H! Add A%I'8H! Close @7H-32#4+I2H2 New Method 11. 32#I-3*1HC*H'-@!- mcheckerror B"32#%4J'25H-#L! @%7- Properties C List box C+I@%5H"2 Form1 @G Formset1 6H0-"9H@+7- Form1 6ID-5##1 21I%4J5HAJ Method A%I'I-3*1HC@!- mcheckerror  15I
With ThisFormset.FORM1 if ThisFormSet.m_newrecord  if empty(.mTextBox1.Value) .mTextBox1.setfocus messagebox("#82I-#+1**4I2",288,"") return .f. endif endif if empty(.mTextBox2.Value) .mTextBox2.setfocus  messagebox("#82I-
7H-*4I2",288,"") return .f. endifEndwithreturn .t.
C*H'-2##'*-I-4%25I0@G2##'*-1I-#L! 6H0@4-5H9IC
I2032#@GI-!9% I2I-2#5H0@4H!2#@
GI-!%9-"H2-7H-58G*2!2#@4H!@I2DC*H'5IDI@%"
*H'-2#@
GI-4%2#0+'H22#I-I-!9%C2#@
GI-4%2#0+'H22#I-I-!9%1I!5-"9+%2"A-5@+!7-1 AH5H4"!C
I1!2G7- C
IC*H'- Valid Event 
@%GD!H%1  2##'*-2#I-I-!9%I3 (duplicate record) @#2*2!2#3DIB"C
I3*1H TABLEUPDATE() B"!5+%1-"9H'H2 I2*2!2#32# update I-!9%DI*3@#G H2 TABLEUPDATE() 0@G .T. AHI2D!H*2!2#32# update DID!H'H2#5CFG2! H2 TABLEUPDATE() 0!5H2@G .F.@#20!29'H2032#@
G#+1**4I25HDII-DA%I'-"H2D# 12. C+I8%4J@!2*L8H!'25H  Mtextbox1 @%7- Properties... A%I'32#I-3*1HC Valid Event 15I if .not. tableupdate() messagebox('!5#+1**4I2 ' + allt(this.value) + '5I-"9HA%I'') return 0 endif 13. 32# Save -#L!B"1I
7H-'H2 PRODUCT A%I'%-@#5"-#L!6I!29
@%GD!H%1 C Valid Event 3*1H return @G2#-C+I#2'H20*2!2#H2--24%L2#I-I-!9%5IDDI+#7-D!H I2!5H2@G .T. A*'H2*2!2#H2--24%LDI I2!5H2@G .F. A*'H2D!H*2!2#--24%L5IDIA%I'06I I-'2!AI'H2 Invalid Input 6H@GI-'2!AII-4%2- Visual FoxPro @#2*2!2#3C+ID!HA*DIB"2#C
I return 0 A .F.Data Session
2I2@*
1(data session) !17--0D#1AH ? @!7H-H-2#@5"B#A#! dBASE , Foxbase 0@G2C%1)0@4B#A#!6I!2A%IG32#I-I-!9% @5"-"H2C-"H2+6H@H21I @
HI-I-!9%C*H*4I2 AHI2@#2I-2#I-I-!9%%9I2 @#2GI---22#I-C*H*4I2H-A%I'60H-"@I2*9HB#A#!I-I-!9%%9I2 AHC181@!7H-@#2!2C
I Visual FoxPro @#2*2!2#@42+%2"F2(@4-#L!)#I-!1DI 1
+2@#7H-2#@44D%L6@46I @#20'H2C Main Visual FoxPro 1I"-!C+I@#2@4AI!I-!9%DI@5"#1I@5"' @
H I2@#2@4 customer.dbf A%I' @#2GD!H*2!2#@4DI-5@GI +#7-I2@#24-#L!5H!5AI! customer.dbf -"9H*1*--#L! A%I'4D*1-#L!+6H AI! customer.dbf G094DI'" -#L!5H@4@+%7--"9H-5-#L!+6HG0@4 Error (C#5H5H@#23+ properties C Data Environment @G AutoClose Table @G .T.) @-2%H05H%H2'!21I+!@7H-5H03C+I@+G 2-"H2#H2'F'H23D!6I-!5 2I2@*
1(data session) 2I2@*
1 !5-"9H*-#0@ 7-  1. Default Data Session C Visual FoxPro 03+C+I@G Defalut @*!-I2@#2D!H32#@%5H" 2. Private Data Session 03+C+I2#4AI!I-!9%A"--21@G@-@(AH%0-#L!G0A"--21 A%I'@#203+@GAC+5? -A03'H2C+I3+@GA Private Data Session 05'H26H03C+I@#2D!HI-1'%C2#*#I2-#L! +#7-@!7H-@#232#@5"B#A#!CA+%2"9IC
I (LAN) @#203+2I2@*
1 D'I5HD+? @#203+2I2@*
1 D'IC Form Properties +#7- Formset Properties C*H'- DataSession!26-5I!G-C+I8D32#@%5H" 2I2@*
1 5H-"9HC-#L!-B#A#!1'-"H2C+I@G Private Data session
H-5H@#20D@#5"#9I@#7H- -#L!2#I-I-!9%5H!5'2!*1!1LA+6HH-+%2"F@#-#L @#2!291C@#7H-@4A%0'452#C
I2 -B%(Control) H2F5H!5-"9HC Form Designer 1H-@43!2@%H2*9H11 8*2!2#3D#0"8LDI-5+%2+%2"A%0+%2"+%2
@4@5H'"1 Form032# Refresh -#L!+%2"F-#L!#I-!13-"H2D# ? C+IC
I3*1H FOR I = 1 TO _SCREEN.FORMCOUNT _SCREEN.FORMS(I).REFRESH) ENDFOR
*HH2H2--2-#L! -@#5"-#L!6I!2C
I2C+IC
I3*1H DO FORM MyForm TO MyVar +%125H--2-#L!A%I'@#203H2 MyVar D3-0D#H-GDI C-#L!-@#2C+I3+15I 1. 5H@!9 Form @%7- New Properties A%I'3+
7H-@G MyReturnVar 2. 5H-#L!3+ Properties C*H'- Windowtype @G 1  3. 3H25HI-2#*H%1!2C*HD'IC MyReturnVar (-15I6I-"9H'H280CH*HD'IC*H'C+H@
HC Click Event - Command Button @GI) THISFORM.MyReturnVar = THISFORM.TEXT1.Value 4. H25H*H%13DC*HD'I5H Form Properties C*H'- Unload Method B"4!L3*1H RETURN THISFORM.MyReturnVar
*HH2H2@I2*9H-#L! -@#5"-#L!6I!2C
I2C+IC
I3*1H DO FORM MyForm WITH MyVar  C-#L!-@#2C+I3+15I 1. 5H-#L!C*H'- Init Event C+ICH*H PARAMETER MyVar  THISFORM.TEXT1.Value = MyVar  && @G2#3H25H*HH2!2C*HD'IC Text1
*HH2H2-0@#"L (Array) @I2*9H-#L! -@#5"-#L!6I!2C
I2C+IC
I3*1H DO FORM MyForm WITH MyArray1 C-#L!-@#2C+I3+15I 1. 5H@!9 Form @%7- New Properties A%I'3+
7H-@G MyArray2(1) 2. 5H-#L!C*H'- Init Event C+ICH*H PARAMETER MyArray1 DIMENSION MyArray2(ALEN(MyArray1)) && *#I2-0@#"L2@H21H2-0@#"L5H*HH2@I2!2 =ACOPY(MyArray1,THIS.MyArray2)  && "I2"1'A#-0@#"L5H*HH2@I2!2DD'I5H1'A#-0@#"LC-#L!
@4@5H"'1 Label Control3+I-'2!(Label) AA'1I @!7H-832#*#I2 Label 6I!2A%I'I-2#C+IA*CA'1I(Vertical) *2!2#3DI15I 1. 5H Label Properties C*H'- Caption 4!L  ="T" + CHR(13) + "E" + CHR(13) + "S" + CHR(13) + "T" 2. 5H Label Properties C*H'- AutoSize 3+@G .F. A%I'32##12- Label C+IA*2!I-2#
@4@5H"'1 TextBox Control3+AA*C+I1I-'2! C2#3+AA*C+I1I-'2!C textbox 1I!5-"9H+%2"'45I'"1 15I '45A# 0@G2#3+AA*B"1H'FD 3+C textbox properties C*H'- Format @G K A%03+ SelectedBackColor @G 0,0,128 '455H*- 0@G2#3+AA*B"1H'FD@+!7-1AH5I@5"3+C8F object  3+5H Form C*H'- Init Event B"C
I3*1H Setall !2
H'" @
H THISFORM.SetAll("Format","K","TextBox") THISFORM.SetAll("SelectedBackColor",RGB(0,0,128),"TextBox") '455H*2!  3+5H textbox properties C*H'- GotFocus Method 15I IF NOT EMPTY(THIS.Value) KEYBOARD"{END}" KEYBOARD"{SHIFT+HOME}" ENDIF
@4@5H"'1 Grid Control1IAH Visual FoxPro @GI!2 #4G@G#0@-!2%- !9A5ID!H4 @7H-2'H2C2#@5"-#L!1I#4@G1'+6H5H!5#0B"
L!2 *2!2#32DI+%2"-"H2 6H'452#C
I2I291D%6FA%I'!1!5'452#!2!2"@+%7-@4*8AH9I@5"B#A#!012#1!1 C-5I!0*#8@G1'-"H2C+I9'H20!5'452#'8!!1-"H2D#B"0A"--@G	2FD -@#4H!I'"	2A#H-6H@G2#3 Increment Search +#7-B#A#!*-2!I-!9%
2#3 Increment Search B"C
I#4 HYPERLINK "http://kasem.sstplus.com/custinq.zip"  (Download)2#I+2I-!9%C Visual FoxPro 1I!5I'"1+%2"'45+%2"A 8-2C
I combo box +#7- list box 
H'"GDI AH*3+#1!A%I'I2I-!9%!2F%0GI-C
I#4
H'" 6H-2@G'45B#2D*1+H-"AHGD!H%I2*!1"#1 A%0!1"1*2!2#3D#0"8LDI!2!2"+%2"-"H26I-"9H18F1I+%2"
H--7H8032#I+2I-!9%C4%LC1I8I-D*#I21
5C+I14%L1IFH- C5H5I!032#*#I2B#A#!*3+#1I+2
7H-%9I2 11I@#2GI-D32#*#I21
5C+I14%L
7H-%9I2 (NAME) B"315I  1. C+I@#5"B#@G6I!2AID B"4!L MODIFY PROJECT MYPROJECT  2. @I2DAIDAI!I-!9%(table) - CUSTOMER 6H-"9HC AJ DATA C*H'- Databases -> MyDatabase -> Table  3. 5H Table Designer C+I%4J5HAJ Indexes 5H
H- Name C+I4!L NAME 
H- Type @%7- Regula 
H- Expression 4!L NAME @*#GA%I'%4J5H8H! OK @7H-32#@GI-!9%
@%GD!H%1 AI1
+21@#5"%312! 2)2D"I'"2#@I2D3+5H @!9 Tools @%7- Options... %4J5HAJ Data 5H
H- Collating sequence @%5H"@G Thai +#7-C
I3*1H SET COLLATE TO "THAI"55I@#2G!232#*#I2-#L!5HC
IC2#I+2I-
7H-%9I21H- 1. C+I832#*#I2-#L!6I!2B"32#%4J5HAJ Documents A%I'@%7- Form A%I'32#%4J5H8H! New A%I'@%7- New Form 2. 32#%4J'25H-#L!A%I'@%7-@!9 Data Environment... @%7-AI!I-!9% CUSTOMER A%I'%4J5H8H! Add 21I%4J5H8H! Close 3. %4J'25HAI! CUSTOMER @%7- Properties A%I'3+  Order = Name 4. 32#*#I2 Text box 6I!2 A%I'3+ Properties 15I FontName = MS Sans Serif High = 23 Width = 300 5. 32#*#I2 Grid 6I!2 21IC+I32#%4J8H!'25H #45H@#2DI*#I26IA%I'@%7- Builder... 21IC+I32#@%7-AI! CUSTOMER A%I'@%7-4%L Name A%0 Cust_ID A%I'32#%4J5H8H! OK 6. 3+ properties - Grid 15I DeleteMark = .F. FontName = MS Sans Serif GridLines = 0 Hight = 200 ReadOnly = .T. RecordMark = .T. ScrollBar = 2 Width = 350 7. 3+ properties - Grid -> Column1 15I Resizeable = .F. Width = 280 8. 3+ properties - Grid -> Column1 -> Header1 15I Alignment = 2 Caption = 
7H-%9I2 9. 3+ properties - Grid -> Column1 -> Text1 15I ForeColor = 255,255,255 BackColor = 0,0,128 10. 3+ properties - Grid -> Column2 15I Resizeable = .F. Width = 50 11. 3+ properties - Grid -> Column2 -> Header1 15I Alignment = 2 Caption = #+1* 12. 3+ properties - Grid -> Column2 -> Text1 15I Enabled = .F. 13. 32#3+ method 15I  5H Text1 -> InteractiveChange Event 4!L  SET NEAR ON  SEEK ALLTRIM(THIS.VALUE)  nRecno = RECNO()  THISFORM.grid1.&cSetBack  THISFORM.grid1.&cSetFore  THISFORM.REFRESH  5H Grid1 -> AfterRowColChange Event 4!L  nRecno = RECNO()  THIS.REFRESH  5H Grid1 -> Init Event 4!L  PUBLIC nRecno , cSetBack , cSetFore  nRecno = RECNO()  cSetBack = 'setall("Dynamicbackcolor","IIF(RECNO()=nRecno,RGB(0,0,128),RGB(255,255,255))","Column")'  &&@G2#3+*5	2+%1  cSetFore = 'setall("Dynamicforecolor","IIF(RECNO()=nRecno,RGB(255,255,255),RGB(0,0,0))","Column")'  &&@G2#3+*51'-1)#  THIS.&cSetBack  THIS.&cSetFore 14. 21IG32# save -#L! C+I1I
7H-@G CUSTINQ A%I'%-@#5"!29'H2@G-"H2D# *H'803D#0"8L-"H2D#1IG6I-"9H1'2!I-2#-8 
2#3-B#!2D'IC#4  HYPERLINK "http://kasem.sstplus.com/custgrd.zip" (Download)@#2*2!2#3-B#H2F!2C*HD'IC#4DI@
H Text Box , Combo Box , Edit Box @GI 6H!5'452#H2"F1H-D5I 1. C+I832#*#I2-#L!6I!2B"32#%4J5HAJ Documents A%I'@%7- Form A%I'32#%4J5H8H! New A%I'@%7- New Form 2. 32#%4J'25H-#L!A%I'@%7-@!9 Data Environment... @%7-AI!I-!9% CUSTOMER A%I'%4J5H8H! Add A%I'G@%7-AI!I-!9% Salesman A%I'%4J8H! Add 21I%4J5H8H! Close 3. I2C Data Enviroment !52#*#I2'2!*1!1L#0+'H2AI! Customer 1 Salesman GC+I@-2--@#20@#2D!HDIC
I @-2--DIB"%4J@!2*L5H@*IB"'2!*1!1L#0+'H2AI!A%I'8H! Delete  4. 32#*#I2 Grid 6I!2 B"%4J@!2*L5HAI! Customer C Data Environment A%I'%2!2D'IC-#L! 8G0DI#4- AI! Customer  5. 21IC+I3+ Properties - Form1 15I Hight = 300 Width = 600 6. 21IC+I3+ Properties - Grid1 15I FontName = MS Sans Serif RowHight = 30 Left  = 15 Hight = 300 Width = 600I2@#2*1@95H#4C*H'- Properties C-%1!LH2F-4%L1I0#0-DI'" 3 *H'7- Column -> Header -> Control 6HG@G5H!2-@#7H-5ID#1 7. 21IC+I32#3-B#!2C*HD'I5H Term_Day B"32#%4J'25H#4 A%I'@%7-@!9 Edit H-21IG32#%4J5H-B# Spinner 5H Form Control @!7H-32#%4J@#5"#I-"G32#%4J5H##-  ab| 5H4%L Term_Day @H25I8G0DI-B# Spiner !2@#5"#I-"B#@#5"5 8. @7H-2-5I5H-%1!L- Term_Day "1@G-B# Text Box -"9H8I-32#@%5H"C+I@G-B#  Spinner B"32#3+ Properties - Column5 15I CurrentControl = Spinner1 9. C+I8@%5H" Column6 (4%L Sales_ID) C+I@G-B# Combo Box B"32#%4J@!2*L'25H#4 A%I'@%7-@!9 Edit @+!7-@4! A%I'G3%I2"F1I- 7 B"@%5H"@G -B# Combo Box A A%I'G3+ CurrentControl C+I@G Combo1 10. @+GD+!#1'H22#5H@#20@4H!-B#H2F@I2!2C#4!1D!HDI"2-0D#@%" AH@!7H-@#232#@4H!-B#@I2!2A%I'G"1!5-B#*H'@45H@#2D!HI-2#@
H Text1 C Column5 1 Column6 I2I-2#5H0%4IG*2!2#3DIB" C+I8@%7--B#-#45HI-2#%2 properties dialogbox A%I'32#@%7--B#2 list box - properties 6H-5I@#2I-2#% 5H Text1 C Column5 -#4 1#9 21IGD32#%4J5H title --#L! A%IG8H! Delete @H25IG@#5"#I-" (%.-42"@G 2)2@5"5H!1"2#4F)  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro10_files\\kasem_files\\chapter9-3_files\\c9302.gif" \* MERGEFORMATINET 
*H' -B# Text1 - Column6 G3C%1)0@5"'1 11. C+I83+ properties - Spinner1 C#415I KeyboardHighValue = 999 KeyboardLowValue = 0 SpinnerHighValue = 999 SpinnerLowValue = 0 12. C+I83+ properties - Combo1 C#415I BoundColumn = 1 ColumnCount = 2 ColumnWidths = 0,200 FontName = MS Sans Serif RowSource = Salesman.Sales_ID , Name RowSourceType = 6
2#3 header -#4C+I*2!2#A*DI+%2"##1 (@G2#"7!-B#-7H!2C
IA) 13. C+I83+ properties - Grid1 15I HeaderHight = 45 14. C+I83+ properties - Grid1 -> Column1 -> Header1 15I Caption = @20 Spacebar +6H#1I 15. C+I8*#I2 Label 6I!2A%I'3!2A0D'I5H*H'- header -#42!AH8I-2#'H20D'I5HD+C header A%I'3+ properties - Label 15I BackStyle = 0 Caption = ="#+1*%9I2" + CHR(13) + "Customer ID" 16. 21IG32# save -#L! C+I1I
7H-@G CUSTGRD A%I'%-@#5"!29'H2@G-"H2D#
2#@4H! % AID I-!9%#4  HYPERLINK "http://kasem.sstplus.com/custgrd1.zip" (Download) A%0A%I'@#2G!2*9H*H'5H*31
5H*8*H'+6H- Visual FoxPro G'H2DI I28*2!2#3'2!@I2CC+%12#A%0 '452#5H!0-42"C-5IDIG7-'H28#0*'2!*3@#GD-51I+6H AH8I-#9I1#0"8L-54+H-"@7H-5H0DIC*4H5HI-2#-52"B#A#!...H-1'-"H25H!03@*-H-D5I@G@5"'452#+6H@H21I B"0@G2#A*AI!I-!9%%9I2(CUSTOMER) 6I!2AID @4H! +#7-% GDI 6H0#0-DI'" Shortcut Menu B"2#%4J@!2*L'25H-%1!L #+1*%9I2 A%I'0!5@!9C+I@%7-'H20 @4H! +#7- %I-!9% *H'2#AIDI-!9%1I8G*2!2#AIDDI%-@'%2 AHB#A#!032##'*-'H2 C#2"2#(record)  C!52#@%5H"A% B#A#!0A*I-'2!(message) @7H-C+I confirm 'H20@GI-!9%+#7-D!H +#7-8-2032#%4J@!2*L8H!'2G0!5@!9'H20C+I Save +#7- Cancel #2"2#1IF  A%0GA!I2"I'"2#@
G Error Duplicate -#2"2#C#4 1. C+I832#*#I2 shotcut menu 6I!2H- (8-2C
I command button AGDI AH!!5'2!
-*H'1'@%"-"2C+I3) B"4!L3*1H5H command window 15I CREATE MENU CUSTGRD1@%7- ShortcutA%I'32#3+#2"2#1#9 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro10_files\\kasem_files\\chapter9-3_files\\c9303.gif" \* MERGEFORMATINET %4J5H8H! Edit - Append New Record A%I'I-3*1H15I APPEN BLANK GO BOTT _Screen.Activeform.lSkip = .T. _Screen.Activeform.lAppend = .T. _Screen.Activeform.Refresh%4J5H8H! Option - Append New Record C*H'- Skip for 32#I-3*1H15I _Screen.ActiveForm.LSkip && @G2# skip #2"2#@!9I@!7H- LSkip !5H2@G .T.%4J5H8H! Edit - Delete A Record A%I'I-3*1H15I IF MESSAGEBOX("I-2#%#2"2# " + Customer.Cust_ID, 292, "") Delete =Tableupdate(.T.) _Screen.ActiveForm.Refresh ENDIF%4J5H8H! Option - Delete A Record C*H'- Skip for 32#I-3*1H15I _Screen.ActiveForm.LSkip && @G2# skip #2"2#@!9I@!7H- LSkip !5H2@G .T.+%121IG32#%4J5H@!9 Menu A%I'@%7- Generate... @7H-32#*#I2@!9B#A#! @!7H-*#I2@*#G Ctrl + W @7H-32# Save @!9 2. C+I832#*#I2 shotcut menu 6I!2-51' B"4!L3*1H5H command window 15I CREATE MENU CUSTGRD2@%7- ShortcutA%I'32#3+#2"2#1#9 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro10_files\\kasem_files\\chapter9-3_files\\c9304.gif" \* MERGEFORMATINET %4J5H8H! Edit - Save A%I'I-3*1H15I =Tableupdate(.T.) _Screen.ActiveForm.LSkip = .F. _Screen.Activeform.lAppend = .F.%4J5H8H! Edit - Cancel A%I'I-3*1H15I =Tablerevert(.T.) _Screen.ActiveForm.LSkip = .F. _Screen.Activeform.lAppend = .F.+%121IG32#%4J5H@!9 Menu A%I'@%7- Generate... @7H-32#*#I2@!9B#A#! @!7H-*#I2@*#G Ctrl + W @7H-32# Save @!9 3. @!7H-832#*#I2 shortcut menu @#5"#I-"A%I'C+I832#@#5"-#L! CUSTGRD 5HDI*#I2D'I6I!2AID B"4!L3*1H  MODIFY FORM CUSTGRD 4. 32#%4J@!2*L8H!'25H-#L! A%I'@%7-#2"2# Data Environment... 32#%4J@!2*L8H!'25H table CUSTOMER A%I'@%7-#2"2# Properties... A%I'3+H215I  BufferModeOverride = 5 @#20C2#325H@5H"'12##1#8I-!9%B"C
I 3*1H TABLEUPDATE() @#23@GI-3+ tabel @GA buffer @*!- 5. 32#*#I2 property B"@%7-5H@!9 Form A%I'%4J5H New Property... I-  nRecNum %4J8H! Add  nWhatRow %4J8H! Add  LAppend %4J8H! Add  LSkip %4J8H! Add A%I'%4J8H! Close -5#1I 6. 32#*#I2 method B"@%7-5H@!9 Form A%I'%4J5H New Method... I-  mShortcut %4J8H! Add A%I'%4J8H! Close -5#1I 7. %4J'25H-#L! @%7-#2"2# Properties A%I'3+ 8*!14- Form 15I  nRecNum = 0  nWhatRow = 0  LAppend = .F.  LSkip = .F.  *H'@!- mShortcut I-3*1H15I    cChange = GetFldState(-1,"Customer")    IF AT('2', cChange) > 0 .OR. AT('4', cChange) > 0     DO CUSTGRD2.MPR    ELSE     DO CUSTGRD1.MPR    ENDIF 8. 5H Form C*H'- Init Event I-3*1H SET DELETE ON
32#@
G'H2!52#I-I-!9%C#2"2#(record)  9. 5H Grid1 C*H'- AfterRowColChange I-3*1H15I
LPARAMETERS nColIndexIF ThisForm.lAppendThisForm.nWhatRow = This.ActiveRowThisForm.lAppend = .F.ELSElMov = .F.IF ThisForm.nWhatRow # This.ActiveRowThisForm.nWhatRow = This.ActiveRownHold= RECNO()GO ThisForm.nRecNumcChange = GetFldState(-1,'Customer')IF AT('2', cChange)>0 .or. AT('4',cChange) > 0This.RefreshlMov = .T.IF MessageBox("Update Record",4)= 6=TableUpdate(.T.)ELSE=TableRevert(.T.)ENDIFThisForm.lSkip = .F.ELSEIF AT('4',cChange) = 0 .and. AT('1',cChange) = 0= TableRevert(.T.)ThisForm.nRecNum = nHold ThisForm.lSkip = .F. ENDIF ENDIFGO nHoldIF lMovlMov =.F.ENDIFENDIFENDIFThis.Refresh
A033*1H C2##031 record 5H@#23+2#2@GA1@-#L(table buffer) 1I@#20#2DI-"H2D#'H2!52#@4H!@#-#L %@#-#L AID4%L CFI2 @7H-5H@#20DI32##1#8I-!9%5H9I-@I2*9H2#2 (TABLEUPDATE) Visual FoxPro DI!53*1H@#5"!D'IC+I@#2@#5"#I-"A%I'6HG7- GETFLDSTATE() #9A2#C
I2 GETFLDSTATE(cFieldName | nFieldNumber [, cTableAlias | nWorkArea]) +%125H32#@#5"C
I23*1HA%I'0*HH2%1!2@G1'@% 6H!2H2-"9H#0+'H2 1 6 4 1 = -C+I#9I'H24%L5I"1D!H!52#AID  2 = -C+I#9I'H24%L5IDI!52#AIDI-!9% +#7- %@#-#L 3 = 0@G*20-2#@4H!I-!9% A%0"1D!H!52#I-I-!9%@I2D 4 = 0@G*20-2#@4H!I-!9% A%0DI!52#I-I-!9%@I2 +#7- %@#-#L nFieldNumber I2!5H2 -1 0@G2#A**20-1I@#-#L @
HH25HDI0@G 121121 B"5HH21'A#0+!2"6'H2@#-#L1IFDI9%--D+#7-D!H *H'H21DA*64%LH2'H2@%5H"A%+#7-D!H1'-"H2 C+I832#@#5"AI!I-!9% %9I26I!2 B"4!L3*1H5H command window 15I   SET MULTILOCKS ON  USE CUSTOMER  =CURSORSETPROP("BUFFERING",5,"CUSTOMER")  GO 2  DELETE  ?GETFLDSTATE(-1,"CUSTOMER") && B#A#!0A*H2 2111111   GO 1  REPLACE NAME WITH "abc"  ?GETFLDSTATE(-1,"CUSTOMER") && B#A#!0A*H2 1121111 -C+I#2'H24%L NAME DI9AID   ?GETFLDSTATE("NAME") && B#A#!0A*H2 2 -C+I#2'H24%L NAME DI!52#AID  APPEN BLANK  ?GETFLDSTATE(-1)  && B#A#!0A*H2 3333333 -C+I#2'H2!52#@4H!@#-#LC+!HA%0"1D!H!52#AID  TABLEREVERT(.T.)  && "@%4*4H5H@#23D1I+! 9. 5H Grid1 C*H'- BeforeRowColChange I-3*1H  IF EOF() GO BOTT ENDIF ThisForm.nRecNum = RECNO() 10. 5H Grid1 C*H'- Init I-3*1H ThisForm.nRecNum = RECNO() 11. 5H Grid1 C*H'- RightClick I-3*1H =thisform.MShortcut() 12. 5H Grid1 C*H'- Column1->Text1 C RightClick I-3*1H =thisform.MShortcut() 13. @!7H-83@*#GA%I'C+I32#@G-#L!5I@G
7H-C+!H B"2#%4J @!9 File @%7- Save As A%I'4!L
7H-@G CUSTGRD1 %4J5H8H! Save 21IG%-@#5"-#L!6I!2%-I-I-!9%9 *H'2#@
G Duplicate Record GC
I'45@5"'111'-"H2I2I 5HC
I IF .NOT. TABLEUPDATE()
2#*#I2-#L!A5H!5'2!*1!1L+6HH-+%2" (one to meny)  HYPERLINK "http://kasem.sstplus.com/invoice.zip" Download+%125H8DI32#@#5"#9I'452#*#I2-#L!AH2FDI2A%I' H-!2C*H'5IG0%H2'6+%1A%0'452#*#I2-#L! one to meny C1'-"H2H-D5I*-2#3C*H*4I2 (invoice) 6H0#0-DI'"2#2(table) +%2"F2#2!2@
7H-!'2!*1!1L1(relation) @-2%0#1@#2!2@#4H!1@%"A%I'1 C+I832#I-3*1H5H command windows 15I CLOSE ALL OPEN DATABASE MYDATABASE CREATE FORM INVOICEA%I'@I2D3+ property --#L!C*H'- Load Event B"I-3*1H SET DELETE ON 32#*#I2 Property B"@I2D5H@!9 Form A%I'@%7- New Property I-
7H- LNew @!7H-832#*#I2-#L!A%I'C+I832!1I-H-D5I
3+'2!*1!1L-2#2 1. 32#%4J@!2*L8H!'25H-#L!A%I'@%7- Data Enviroment...  2.5H Data enviroment C+I32#%4J@!2*L8H!'2A%I'@%7- Add...  %4J5H2#2 INV_HEAD A%I'%4J8H! Add %4J5H2#2 INV_DTL A%I'%4J8H! Add %4J5H2#2 CUSTOMER A%I'%4J8H! Add %4J5H2#2 PRODUCT A%I'%4J8H! Add A%I'%4J5H8H! Close -55 3. 6-5I8G0DI2#2I-!9% A%0G!5@*I@
7H-!B"'2!*1!1LA*-"9H5H Data Environment !-"2C+I8@-2!1--C+I+!H- B"32#%4J@!2*L5H@*I@
7H-!B"'2!*1!1LA%I'8H! Del 5H keyboard  4. -5I@#2!2*3#''2!*1!1L#0+'H22#21H-'H2-0D#'#0@
7H-!1-0D# 2#2 INV_HEAD @
7H-!12#2 INV_DTL B"C
I4%L INV_NO 2#2 INV_HEAD @
7H-!12#2 CUSTOMER B"C
I4%L CUS_ID 2#2 INV_DTL @
7H-!12#2 PRODUCT B"C
I4%L PROD_ID 5. 2#B"'2!*1!1L#0+'H22#21I3DIB"2#%4J5H4%LC2#2A!H(parent) A%I'%2D'25H4%LC2#2%9(child) C+I8315I %4J5H4%L INV_NO C2#2 INV_HEAD A%I'32#%2D'2D'I5H 4%L INV_NO -2#2 INV_DTL %4J5H4%L CUS_ID C2#2 INV_HEAD A%I'32#%2D'2D'I5H 4%L CUS_ID -2#2 CUSTOMER %4J5H4%L PROD_ID C2#2 INV_DTL A%I'32#%2D'2D'I5H 4%L PROD_ID -2#2 PRODUCT
I-'#3 C2#3+'2!*1!1LC+I12#2CF1I @#2I-32#*#I2AI!1
5(index) C+I14%LC2#2%9 (child table) 5H@#2032#@
7H-!B"H-@*!-  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro10_files\\kasem_files\\chapter9-3_files\\c9305.gif" \* MERGEFORMATINET  6. 21IC+I3+ property -AH%02#2 B"32#%4J@!2*L5H8H!'2-2#2A%I'@%7- Properties... C+I3+ property -AH%02#215I 2#2 INV_HEAD  BufferModeOverried = 2  Order = INV_NO 2#2 INV_DTL  BufferModeOverried = 4  Order = INV_NO 2#2 CUSTOMER  Order = CUST_ID 2#2 PRODUCT  Order = PROD_ID*#I2-#L!2!1'-"H2 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro10_files\\kasem_files\\chapter9-3_files\\c9306.gif" \* MERGEFORMATINET  6. 32#*#I2 Command Button 1'A#A%I'3+ property 15ICaption = @4H!C*H*4I2Name = CmdAppendClick Event I-3*1H15I
thisform.lNew = .T.sele inv_headgo bottnInv_No = inv_head.inv_no + 1INSERT INTO INV_HEAD (inv_no,date) ;VALUES (nInv_no,date())with thisform .txtDate.Enabled = .T. .txtCust_id.Enabled = .T. .txtDate.setfocus .cmdAppend.Enabled = .F. .cmdChange.Enabled = .F. .cmdSave.Enabled = .T. .cmdCancel.Enabled = .T. .Grid1.Enabled = .T. .Grid1.Column1.Text1.Enabled = .F. .Grid1.Column5.Text1.Enabled = .F. .cmdAppendItem.Enabled = .T. .cmdDeleteItem.Enabled = .T. .refreshendwith
 7. 32#*#I2 Command Button 1'5H*-A%I'3+ property 15ICaption = AIDC*H*4I2Name = CmdChangeClick Event I-3*1H15I
thisform.lNew = .F.with thisform .txtDate.Enabled = .T. .txtCust_id.Enabled = .T. .txtDate.setfocus .cmdAppend.Enabled = .F. .cmdChange.Enabled = .F. .cmdSave.Enabled = .T. .Grid1.Enabled = .T. .Grid1.Column1.Text1.Enabled = .F. .Grid1.Column5.Text1.Enabled = .F. .cmdAppendItem.Enabled = .T. .cmdDeleteItem.Enabled = .T..refreshendwith
 8. 32#*#I2 Command Button 1'5H*2!A%I'3+ property 15ICaption = 16C*H*4I2Name = CmdSaveEnabled = .F.Click Event I-3*1H15I
sele inv_head=tableupdate(.F.)sele inv_dtl=tableupdate(.T.)sele inv_headwith thisform .txtDate.Enabled = .F. .txtCust_id.Enabled = .F. .combo1.setfocus .cmdAppend.setfocus .cmdAppend.Enabled = .T. .cmdChange.Enabled = .T. .cmdSave.Enabled = .F. .cmdCancel.Enabled = .F. .cmdAppendItem.Enabled = .F. .cmdDeleteItem.Enabled = .F. .Grid1.Enabled = .F. .refreshendwith
 9. 32#*#I2 Command Button 1'5H*5HA%I'3+ property 15ICaption = "@%4Name = CmdCancelEnabled = .F.Click Event I-3*1H15I
sele inv_head=tablerevert(.T.)sele inv_dtl=tablerevert(.T.)sele inv_headif eof() .and. Thisform.lNewGO BOTTendif with thisform .txtDate.Enabled = .F. .txtCust_id.Enabled = .F. .combo1.setfocus .cmdAppend.setfocus .cmdAppend.Enabled = .T. .cmdChange.Enabled = .T. .cmdSave.Enabled = .F. .cmdCancel.Enabled = .F. .cmdAppendItem.Enabled = .F. .cmdDeleteItem.Enabled = .F. .refreshendwith
 10. C+I832#%24%LC Data Environment -2#2 INV_HEAD A%I'3!2'H2D'I5H-#L! B"32#%2!25%04%L @#4H!2 INV_NO, DATE, CUST_ID 11. H-21IC+I%24%L NAME 5H2#2 CUSTOMER A%I'!2'2D'I-#L! 32#AH2!
-C A%I'32#3+ Properties -AH%0 object txtInv_no 3+ property 15I  Enabled = .F.txtDate 3+ property 15I Enabled = .F.  Format = EtxtCust 3+ property 15I Enabled = .F.  I-3*1H5H Valid Event 15I  =SEEK(this.Value,"Customer")  thisform.refreshtxtName 3+ property 15I  Enabled = .F.   12. H-21IC+I%24%L NAME 5H2#2 CUSTOMER A%I'!2'2D'I-#L! 3+ property 15IEnabled = .F. 13. C+ID5H Data Environment A%I'32#%22#2 INV_DTL 3!2'2D'I-#L! 8G0DI #4-2#2 INV_DTL A%I'3+ property - #415IAllowHeaderSizing = .F.AllowRowSizing = .F.DeleteMark = .F.Enabled = .F.ScrollBars = 2SplitBar = .F. 14. -5I8G0DI#4!2-"9H-#L!A%I' AH column C#4"1D!H@G4%L5H@#2I-2# 	01I@#2032#12#1!1H- *4H5H@#2I-2#C+I!5-"9H#40#0-DI'" #+1**4I2(PROD_ID), 
7H-*4I2(NAME), 3'(QUANTITY), #22H-+H'"(UNITPRICE), #'!3'@4(QUANTITY * UNITPRICE)
%-%1!L--2#4 15. 32#%-%1!L5HD!HI-2#--H- B"2#%4J8H!'25H#4A%I'@%7- Edit 21IC+I%4J5H ab| --%1!L INV_NO 21IG32#8H! Del 5H keyboard B#A#!02!'H2 Remove column and all contained objects? C+I8H! Yes
@4H!-%1!LC#4 16. C+I832#%4@!2*L5H-#L!+6H#1I@7H---22# Edit #4H- A%I'32#%4J@!2*L8H!'25H#4-5#1I @%7- Properties A%I'3+  ColumnCount = 5 17. !26#5I8G0DI-%1!L3' 5 -%1!L *3#''H2AH%0-%1!L!5-0D#I2  COLUMN2 -> ControlSource = inv_dtl.prod_id COLUMN3 -> ControlSource = inv_dtl.quantity COLUMN4 -> ControlSource = inv_dtl.unitprice COLUMN1 -> ControlSource = (none) COLUMN5 -> ControlSource = (none) 18. C+I32#@I2D5H property - COLUMN1 A%I'3+15I ControlSource = product.name ColumnOrder = 2 19. C+I32#@I2D5H property - COLUMN2 A%I'3+15I ControlSource = inv_dtl.quantity * inv_dtl.unitprice
*#I2 combobox @7H-C
IC2#@%7-C invoice !2A* 20. C+I32#*#I2 Combobox 6I!2 1 1'A%I'3D'2D'IC%IF1 texInv_no A%I'3+ property 15I High = 25 RowSource = inv_head RowSourceType = 2 Width = 20 Click Event I-3*1H Thisform.Refresh
 21. 2#*#I2 Command Button 6I!2*-1' A%I'3+ property 15I 1'A# 3+ property 15I  Caption = @4H!#2"2#*4I2 Enabled = .F. Name = CmdAppendItem FontName = MS Sans Serif Click Event I-3*1H sele inv_dtl INSERT INTO inv_dtl (inv_no) ; VALUES (inv_head.Inv_no) go bott with thisform.grid1 .column2.setfocus .refresh endwith
 1'5H*- 3+ property 15I  Caption = %#2"2#*4I2 Enabled = .F. Name = CmdDeleteItem FontName = MS Sans Serif Click Event I-3*1H sele inv_dtl delete sele inv_head thisform.combo1.setfocus thisform.grid1.column2.setfocus thisform.refresh
3'%#'!-C*H- 22. C+I832#*#I2 Text Box 6I!2*3+#1A*%#'!-C*H- A%I'3+ property 15I Enabled = .F. Inputmark = 999,999,999.99 Left = 423 Top = 300 23. 32#*#I2 method 6I!2 B"%4J5H @!9 Form A%I'@%7H- New Method... 32#I-
7H-@!-'H2 InvoiceTotal 8H! Add A%I'8H! CloseH-21I32#I-3*1H- @!- Form1 -> InvoiceTotal 15I  Select Inv_dtl Calculate Sum(Inv_dtl.Quantity*Inv_dtl.UnitPrice) ;  For Inv_dtl.inv_no = Thisform.txtinv_no.value ; To Thisform.text1.value Select Inv_head * +!2"@+8 C*H'- @!-5I80@4H!3*1HC2#3'-7HFGDIA%I'AH'2!I-2# 24. 32#I-3*1H6H Grid1 C*H'-@!- Refresh  =Thisform.InvoiceTotal() 25. 32#I-3*1H6H Grid1 -> Column3 -> Text1 C*H'-@!- LostFocus Local nChange nChange = Getfldstate("Quantity","Inv_dtl") IF nChange # 1 .and. nChange # 3 =Thisform.InvoiceTotal() ENDIF   25. 32#I-3*1H6H Grid1 -> Column3 -> Text1 C*H'-@!- LostFocus Local nChange nChange = Getfldstate("Unitprice","Inv_dtl") IF nChange # 1 .and. nChange # 3 =Thisform.InvoiceTotal() ENDIF  @!7H-83+@*#G@#5"#I-"G32# Save A%I%-@#5"B#A#!98G0@I2C+%12#-2#3-#L!A+6HH-+%2" (one to meny)
%2A%I''2 (Drag & Drop)1IAH@#4H!!5B#A#! Windows @46I!2 @#2GDI#9I13'H2 Drag & Drop 1-"9H@*!- 6HG7-2#%2'18+6H25H+6HD'2 . 3A+H5HI-2# *3+#1B#A#! Visual FoxPro GDI##83*1H#0@ 5ID'IC+II'"@+!7-1 B"5H'452#31IG6I-"9H1'H2@#231-B#%#0@ C *3+#11'-"H2A#5H03@*-H-D5I0@G2# %2A%I''H2A#0! B"032#%22 -B#% textbox D5H textbox -51'+6H 15I
 1. C+I832#*#I2-#L!6I!2B"32#%4J5HAJ Documents A%I'@%7- Form A%I'32#%4J5H8H! New A%I'@%7- New Form 2. 32#%4J'25H-#L!A%I'@%7-@!9 Data Environment... @%7-AI!I-!9% CUSTOMER A%I'%4J5H8H! Add 21I%4J5H8H! Close 3. 32#*#I2 TextBox 6I!2 1 1' B"2#%4J5H TextBox C Form Control A%I'G!232#%4J5H-#L! 32#I-3*1H-  Event Method - Text1->DragDrop 15I LPARAMETERS oSource, nXCoord, nYCoord This.Value = oSource.Value 4. 32#*#I2 Grid 6I!2 B"%4J@!2*L5HAI! Customer C Data Environment A%I'%2!2D'IC-#L! 8G0DI#4- AI! Customer   32#I-3*1H-  Event Method - Grid1->Column1->Text1->MouseDown 15I LPARAMETERS nButton, nShift, nXCoord, nYCoord This.Drag(1) 5. 21IG8H! Ctrl-E @7H-32# Save -#L!A%I'G Run -#L! 
 21'-"H2I2I@#20@+G'H2 DragDrop Event 0@G1'#1H25HDI22# Drop *H' 2#3+C+I object 1'C*2!2#32# Drag DI1I@#20I-3*1HD'I5H MouseDown Event B"C
I3*1H Drag(1) @G1'3+ 
Structure Query Language (SQL)
B#A#! Visual FoxPro DI!52#12!2-"H2H-@7H- 6HD!H'H20@G#8HCG2!0##8
83*1H Structure Query Language (SQL) D'II'"@*!- -15H#4A%I'3*1H SQL @#4H!!5!21IAH FoxPro 6H@G#8H -*(DOS) 6HG-"#0B"
LC+I1 IBM 5HDI4I 2)25I6I!2@!7H-
H'%2('##)5H 1970 5H+I-'41"-D-5@-G@!7- San Jose #1 A%4-#L@5" -1IC
I3'H2 SEQUEL H-!2C5 1980 DI@%5H"!2@G3'H2 SQL A%0GC
I1!261815I  3*1H SQL @G3*1H5HH2"H-2#3'2!@I2C @#20@G 2)2@5"5H%I2"F1 2)2-1$)1H'FD  
H'"%2#@5"B#A#!2@4!%DDI-"H2!26HI2@#2@5"3*1HI'" Visual FoxPro GI-@5"1+%2"##1+%2"3*1H6H-20@4I-4%26IDIH2" 11'-"H2H-D5I 
C
I3*1H SQLSELECT * FROM CUSTOMER WHERE SALES_ID = '10001' 
C
I3*1H5HD!HC
H SQLUSE CUSTOMERSET FILTER TO SALES_ID = '10001'BROWSE
0@+GDI'H22#C
I3*1H SQL 0@G2#
H'"C+I@4'2!*0'*2"C2#@5"3*1H!2"4H6I AH!4DI+!2"'2!'H20C+IH2@%4C
I3*1H#40#1C Visual FoxPro DI32###83*1H SQL D'I15I
 HYPERLINK "http://kasem.sstplus.com/chapter9-4.htm" \l "3*1H SELECT - SQL" SELECT - SQL @G3*1H5HC
IC2#*-2!I-!9% (query)ALTER TABLE - SQL @G3*1H5HC
IC2#AIDB#*#I2-AI!I-!9%(table)CREATE CURSOR - SQL @G3*1H5HC
IC2#*#I2AI!I-!9%
1H'#2'(temporary table) 2!5H@#23+CREATE TABLE - SQL @G3*1H5HC
IC2#*#I2AI!I-!9%(create table)DELETE - SQL @G3*1H5HC
I%I-!9%2!@7H-DINSERT - SQL @G3*1H5HC
IC2#@4H!I-!9%@I2*9H2#2 (append a new record)UPDATE - SQL @G3*1H5HC
IC2#AIDI-!9%C2#2 2!@7H-D
0*1@8'H23*1HH2F15H%H2'!25I@#2GDI@"C
I1!2I2A%I' H-D5I!0-42"3*1HH2FA%0@4'452#C
I2  6H+%125HH2DI3'2!@I2C13*1H@+%H25IA%I'@
7H-DI@%"'H2H20@G112#2I-!9%1'"-5H2+6H@%"5@5"'
3*1H SELECT - SQL3*1H SELECT - SQL @G3*1H5HC
IC2#*-2!I-!9% 6H*2!2#6I-!9%22#2 +#7-+%2"2#2 2!@7H-D5H3+ A%I'C+IA*% 2 - 2 @#7H-4!L -0@#"L +#7-C+I--!2C#9- 2#2I-!9% GDI  6H!5#9A3*1H15I
SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]] [Alias.] Select_Item [AS Column_Name] [, [Alias.] Select_Item [AS Column_Name] ...]FROM [FORCE][DatabaseName!]Table [Local_Alias] [[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN DatabaseName!]Table [Local_Alias] [ON JoinCondition ][[INTO Destination] | [TO FILE FileName [ADDITIVE] | TO PRINTER [PROMPT]  | TO SCREEN]][PREFERENCE PreferenceName][NOCONSOLE][PLAIN][NOWAIT][WHERE JoinCondition [AND JoinCondition ...] [AND | OR FilterCondition [AND | OR FilterCondition ...]]][GROUP BY GroupColumn [, GroupColumn ...]][HAVING FilterCondition][UNION [ALL] SELECTCommand][ORDER BY Order_Item [ASC | DESC] [, Order_Item [ASC | DESC] ...]]
@!7H-@+G3*1HA%I'#9*6'H23D!H!1
H2"2'-0D#-"H25I AH Visual FoxPro DI!53*1H5H
H'"C2#@5"3*1H SELECT - SQL D'IC+I6HG7-3*1H 
CREATE QUERY [FileName | ?] [NOWAIT]
6H@G@#7H-!7-1'+6H5H!2
H'"C+I@#2C2#@5"3*1H3C+I9IC
I*0'*2""4H6I AH6-"H2D#8GI-@#5"#9I3*1H-"9H5 @#20'2!*2!2#2-"H21I Query D!H*2!2#3DI 55I@#2!29'45C
I21H-C+I32#*#I2 Query B"I-3*1H15I
CLOSE ALLOPEN DATABASE MYDATABASECREATE QUERY MYQUERY
21I8G0@I2*9H Query Designer B#A#!G0A*
7H-2#25H@G-"9HC MYDATABASE 6I!2C+I@#2@%7- -5IC+I832#@%7-2#2 customer B"2# %4J@!2*L 2 #1I5H2#2 customer A%I'32#%4J5H8H! Close 8G0DI+I222!#9I2%H2 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro11_files\\kasem_files\\" \* MERGEFORMATINET C Query Designer 0#0-DI'"AJ1I+! 6 AJ#0-I'"
AJ Field *H'5IC
I3+4%L22#2 +#7- '4' (View) @7H-C
IA*%%1L 8*2!2#3+1L
1(Function) 4L(Expression) @7-C
IC2#A*%DIAvailable Field @G*H'5HC
IA*
7H-4%L1I+!-2#2+#7-'4' 5H@#232#@%7-!2C
I2 Function and Expression @G*H'5HC
IC2#3+1L
1 +#7-4LC+I14%L5HI-2# @
H @#2I-2#13'%9I2 GC*H'H2 COUNT(CUSTOMER.CUST_ID) @*#GA%I'%4J5H8H! Add AJ Join*H'5IC
IC@
7H-!2#2+#7-'4'1IAH 2 2#2+#7-'4' @I2I'"12!@7H-D5H3+ 0#0-I'"*H'H2F15IType 3+#0@ -2#@
7H-!I-!9% !5-"9H 4 
4 7- Inner 0@%7-I-!9%@	205H!5@7H-D#1@H21I Left Outer 06-@-2#2I2'2@G+%1(Field Name)B"0@-2I-!9%!21I+! *H'1HI2"(Value)03!2@	205H!5@7H-D#1@H21I Right Outer  06-@-2#2I2I2"@G+%1(Value)B"0@-2I-!9%!21I+! *H'1HI2"(Field Name)03!2@	205H!5@7H-D#1@H21I Full 03I-!9%1I+!-*-2#2!2A*
Field Name 3+4%L5H0@G@7H-DC2#@
7H-! Criteria 3+@7H-DC2#@
7H-!Value 3+4%L22#2-7H5H0!232#@
7H-!AJ Filter*H'5I@G*H'5HC
IC2#3+@7H-DC2#@%7-@#-#L22#2+#7-'4' 6HC*H'5I0#1 '%5 WHERE -3*1H SELECT - SQLAJ GroupBy@G*H'5HC
I#'!%8H!I-!9%2!4%L5H3+ C*H'5I0#1 '%5 GROUP BY  -3*1H SELECT - SQL #40C
IC2#3'%*#8 H2F @
H SUM , COUNT @GI  C*H'-8H! Having 0@G2#3+@7H-DC2#@%7-I-!9% %1)00@+!7-1 AJ Filter AH031%%1L-%8H!I-!9%AJ MiscellaneousC
I3+@7H-DC2#@%7-I-!9% No Duplicates 3+C+I@%7-I-!9%5HI31!2@5"@#-#L@5"'Cross-Tabulate 3+C+I*#I22#2A %-*AJ(D'I2#2) D'I0%H2'6-555H%H2'!2I2I@7H-A03C+IH2#9I11 Query Desinger @H21I@#20 Query Designer 0@G@#7H-!7-5H
H'"C2#@5"3*1H SELECT - SQL C+IAH@#2 A%0H-D5I!0"1'-"H22#@5"#0B"3*1H SELECT - SQL CAH2F @7H-C+IH2*2!2#3D#0"8LC
I2H-D2#@5"#0B"3*1H SELECT - SQL3*1H SELECT - SQL @G3*1HC2#*-2!I-!9% 15H%H2'D'II2I 3*1H5I3*1H@5"'*2!2#-52"'45C
I2DI@"-0!2 !5'45C
I5H 4(2%1%6"4H'H232*2!J-5 55I@#2!2915H%0	2FGA%I'1 1'-"H2A# 0@G2#*-@7H-D 22##1I-!9%C TextBox --#L! I2!52#I-I-!9%0!52##'*-@7H-D@7H-@%7-I-!9%!2A* AHI2D!HDII-I-!9%(Empty) 03I-!9%!2A*1I+! C+I32#*#I2-#L! 15I CREATE FORM MYSQL1 5H Data Environment C+I3+AI!
7H- CUSTOMER 5H -#L! C+I*#I2 TextBox 
7H- Text1  *#I2 CommandButton 
7H- Command1 A%I'I-3*1H5H Click Event 15I
SELECT * FROM CUSTOMER C ; WHERE (ALLTRIM(C.CUST_ID) == ALLTRIM(THISFORM.TEXT1.VALUE)) ; OR (EMPTY(THISFORM.TEXT1.VALUE) = .T.) ; ORDER BY C.CUST_ID ; INTO CURSOR MYQUERYCREATE REPORT MYREPORT FROM MYQUERYREPORT FORM MYREPORT PREVIEWDELETE FILE MYREPORT.*
 21I32# Save A%I'%-@#5"-#L!6I!29@#2!2A03*1HI2C91H- SELECT * (-1L) +!2"6'H2C+I@%7-4%L5HA*!284%L AHI2I-2#@	204%L G3+
7H-4%L@I2D@
H C.NAME, C.ADDRESS I2!5+%2"4%L@#20C
I@#7H-+!2"-!!H2(,)@G1'1H%H2#0+'H24%LCUSTOMER 7-
7H-2#2 AI!I-!9%%9I2 *H'-1)# C @G
7H- Alias 5H@#21I6I@7H-C
IA
7H-2#2 CUSTOMER C
I@7H-'2!*0'C2#-I26
7H-2#2WHERE #0B"3*1H+%1 WHERE 0@G4L5HC
IC2#@%7-I-!9%!2A*2!@7H-D5H3+ 21'-"H2I2I0@G2#@%7- #+1*%9I2 *H'@#7H-+!2" == 0@GB-@@#@-#L(operator) 5HC
IC2#@#5"@5"6H+!2"6I-@H211I+! (Exactly Like) 6H0H21@#7H-+!2" = (Equal) *H'4L5H-"9H+%1 OR 7- EMPTY(THISFORM.TEXT1.VALUE) = .T. -15I@G@4C2#@%7-I-!9%-"H2+6H15H%H2'D'II2I'H2 I2D!H!52#I-I-!9%032#@%7-I-!9%!21I+! %-444@#20+LA%I'8G0'(L#0H2 ((#1

9)ORDER BY C.CUST_ID C+I@#5"%312!#+1*%9I2INTO @G2#3+'H2C+I%%1L5HDIDD'I5HD+ C5H5IC+I@GD'I5H2#2
1H'#2'6H@#2C
I'%5'H2 CURSOR B"1I
7H-2#2'H2 MYQUERY
@%GD!H%1 _TALLY @G1'A#+H'"'2!3(System memory variable) 5H-C+I8#263'%%1L- query @
H SELECT * FROM CUSTOMER INTO CURSOR MYCURSOR ? _TALLY* +!2"@+8 *3+#1!0C
I#'*-'H22# query 1I!5I-!9%+#7-D!HI2D!H!50!5H2@H21 01'-"H22#C
I@7H-DC2##-I-!9%(filter condition) C2#*-2!I-!9%@#2*2!2#C
I wild card _ , % @7H-
H'"C2##-I-!9%DI @
HcText = "a"cFilter = "%" + ALLTRIM(cTEXT) + "%"SELECT * FROM CUSTOMER C WHERE C.NAME LIKE cFilter21'-"H2I20@G2#*-2!
7H-#4)15H!5-1)# a -"9H . 3A+HCFGDI cText = "a"cFilter = "___" + ALLTRIM(cTEXT) + "%"SELECT * FROM CUSTOMER C WHERE C.NAME LIKE cFilter21'-"H2I20@G2#*-2!
7H-#4)15H!5-1)# a -"9H .5H*5H 3A+HCFGDI 0*1@DI'H2 % 0@+!7-1 * *H' _ 0@+!7-1 ? C DOS
1'-"H22# @
7H-!2#2(join table) 25HA%I'@#2DI32#*#I2-#L!I-I-!9%C*H-(invoice) @#2GDI#262#*#I2'2!*1!1L#0+'H22#2+%2"F2#2 @!7H-3-#L!A%I'G0I-!52#*#I2#2"2C*H- AHH-0@G#2"2DI1II-H21I-+6HG7-2#@%7-I-!9%6I!2 6H@#20C
I3*1H SELECT-SQL 32#@%7- 6H0@G2#*#I2 SQL A @
7H-!2#2@7H-C+IDII-!9%2!5HI-2# C+I8%-I-3*1H1H-D5I5H COMMAND WINDOW A%I'%-9%%1L5HDI
STOR 1 TO MYINVOICE && 3+C+I@%7-C*H*4I2+!2"@% 1SELECT H.*, C.name AS Customer , D.prod_id ,P.name AS Product , ;D.quantity , D.unitprice , D.quantity * D.unitprice AS Amount ;FROM mydatabase!inv_head H ;LEFT OUTER JOIN mydatabase!customer C ;ON H.cust_id = C.cust_id;LEFT OUTER JOIN mydatabase!inv_dtl D ;ON H.Inv_no = D.Inv_no ;LEFT OUTER JOIN mydatabase!product P ;ON D.prod_id = P.prod_id ;WHERE H.inv_no = MYINVOICE ;ORDER BY H.inv_no
21'-"H2I2I0A*#2"2#-C*H*4I2@%5H 1 6I!2 @#2!29'452#@
7H-!2#2'H231-"H2D# 5H3*1H SELECT H.*, C.name AS Customer , D.prod_id ,P.name AS Product , D.quantity , D.unitprice , D.quantity * D.unitprice AS Amount  0@G2#@%7-4%L5HI-2# C+I8*1@85H'%5 AS 0C
I*3+#11I
7H-C+I1
7H-4%L0A*--!2 @
H 4%L C.name C+IA*@G Customer @GIC2#@
7H-!2#2+%2"F2#2@#2I-366'H20C+I2#2-0D#@G+%1 C1'-"H25I0C+I2#2 INV_HEAD @G+%1 @#20*4H5H@#2*CG7-C*H- @#20C*HD'I+%1'%5 FORM *H'2#25H@#203!2@
7H-!1IGI-9I'"'H203!2@
7H-!C%1)0C !5-"9H 4 AI'"17- INNER @G2#@
7H-!2#2B"03I-!9%-2#25H@
7H-!!2A*@	205H!5@7H-D#1@H21I LEFT OUTER @G2#@
7H-!2#2B"03I-!9%-2#2I2I2"!2@G+%1C2#A* *H'I2'20!5I-!9%#1+#7-D!HGDI RIGHT OUTER @G2#@
7H-!2#2B"03I-!9%-2#2I2'2!2@G+%1C2#A* *H'I2I2"0!5I-!9%#1+#7-D!HGDI FULL OUTER @G2#@
7H-!B"3-1I*-2#2!2@G+%1C2#A**3+#1C1'-"H20@G2#@
7H-!CA LEFT OUTER @7H-2'H22#1II-!9%C2#2I2'25H@
7H-!-"9H-29%--D I2@#2C
I INNER +#7- RIGHT OUTER I-!9%-20DI!2D!H+! +#7-D!H9I- C*H'5II-9'2!@+!20*!-AH%0#5'H20C
IAD+ A%I'0#9IDI-"H2D#'H2-1D+@G LEFT +#7- RIGHT ? C+I895H'%5 ON @
H ON H.cust_id = C.cust_id +!2"6 INV_HEAD @G LEFT *H' CUSTOMER @G RIGHT@#2032#2C!2@
7H-!@#2GC*H'452#@
7H-!'H2 @G INNER, LEFT, RIGHT, FULL A%I'GC*H
7H-2#2+%1'%5 JOIN A%I'G2!I'"@7H-DC2#@
7H-!+%1'%5 ON 
I-'##0'1 +I2!C
I3*1HA5I select * from INV_HEAD,CUSTOMER B"D!H!5@7H-DC2# join I238DIDII-!9%@H21I-!9%-2#2*-2#2!291 @
H 2#2 INV_HEAD = 20 @#-#L 2#2 CUSTOMER = 5 @#-#L -!9%5HDI+%128 query A%I'0@H21 20 * 5 = 100 @#-#L2#C
I1L
1-C3*1H SELECT !51L
1 SUM,COUNT,AVG,MAX,MIN @#2*2!2#31L
1@+%H25IDC
I2DI15 B"!5#9A2#C
I215I
SELECT 
7H-1L
1(
7-4%L+#7-
7H--%1!L) FROM 2#2 ......
@
H@#2I-2##'!"-2"1I+!@#2G4!L3*1H'H2  SELECT SUM(INV_DTL.QUANTITY * INV_DTL.UNITPRICE) FROM INV_DTLI2@#2D!HDI32#AH%8H!-I-!9%3*1HI2I0@G2#+2"-#'!-1I2#2 11II2@#2I-2#0+2%#'!A"2!@%5HC*H- @#2@5"3*1H15I SELECT INV_DTL.INV_NO, SUM(INV_DTL.QUANTITY * INV_DTL.UNITPRICE) ;  FROM INV_DTL GROUP BY INV_DTL.INV_NO ORDER BY INV_DTL.INV_NO
2#C
I GROUP BY, HAVING A%0 ORDER BYGROUP BY @G2#1%8H!-I-!9%@7H-5H0C
I1L
1!2#031%8H!-I-!9%1IF 11'-"H2I2I6H@G2#AH%8H!-C*H- A%I'C
I1L
1 SUM @7H-+2"-#'!%%1L-%8H! @!7H-@#232#AH%8H!A%I''#032#@#5"%31-I-!9%2!%8H!5H@#2DI1AHI'"@*!- 6H@#2C
I3*1H ORDER BY C2#C
I3*1H@#5"%315I8*2!2#0*1HC+I@#5"2!2D+2I-"B"C
I DESC CH*H@4H!@I2D+%1 
7H-4%L+#7-
7H--%1!L5HI-2#@
H ORDER BY INV_DTL.INV_NO DESC AHI2D!HC*H+#7-C*H3'H2 ASC 07-'H2C+I@#5"2I-"D!2HAVING 0%I2"F13*1H WHERE 7-C
IC#5I-2#@%7-I-!9%2%8H!2!@7H-D5H3+ @
H I2@#2I-2#+2'H2!5C*H-CC+I25H!5#22#'!!2'H2 5000 2I2 @#2G@5"3*1H15I SELECT INV_DTL.INV_NO, SUM(INV_DTL.QUANTITY * INV_DTL.UNITPRICE) AS TOTAL ;  FROM INV_DTL GROUP BY INV_DTL.INV_NO ORDER BY INV_DTL.INV_NO ; HAVING TOTAL > 5000C+I8*1@'H2!32#@%5H
7H--%1!L%#'!C+!H 2 SUM(...) @G TOTAL 8*2!2#3
7H-C+!H5I!2C
I2DI@%" 
2#*#I22#2DI'(cross-tab)2#2DI'AHD!H@' 7-2#%1I-!9%2 A' D@G-%1!L @7H-'2!*0'C2#3@*- *H'C+
H0#0312#+2%#'!*#8-I-!9%H2F C2#*#I22#2DI'1I Visual FoxPro DI@#5"! Cross-Tab Wizard D'I-3'"'2!*0'C+I@#2@#5"#I-"A%I' 8*2!2#@I2DC
I2DIB"2#@%7-@!9 File %4J5H New A%I'@%7- Query 32#%4J5H8H! Wizard A%I'@%7- Cross-Tab Wizard %4J8H! Ok 21IG32!5H Wizard AI!2C+I3 AH!--DI@%"I2I-!9%8!52# join 1A%I'%0G8GI-32#*#I2 View(@#7H-- View 03@*-C-H-D) H-603DI AHC5H5I03@*-A%98H@-G@-G! 95 @7H-5H0C+IH2#9I62#*#I2 Cross-Tab 6HD!HDI"2-0D#@%"I2#9I+%1'452#5H!03@*-H-D5I*!!84'H2!-"2#2"-2"-%9I2AH%0#2" B"A"2!122" 12#2H-D5I
#+1*%9I2122" 1122" 2122" 3... (3'-%1!L0@H213'122")#'!10001180.00180.001000225000.002500.0010009678.00678.00H--7H@#2I-32#@%7-I-!9%H-B"C
I SELECT - SQL 11'-"H2
SELECT Inv_head.cust_id, Customer.sales_id, Inv_head.inv_no,;SUM(INV_DTL.QUANTITY * INV_DTL.UNITPRICE);FROM mydatabase!inv_head ;LEFT OUTER JOIN mydatabase!inv_dtl; ON Inv_head.inv_no = Inv_dtl.inv_no;LEFT OUTER JOIN mydatabase!customer ; ON Inv_head.cust_id = Customer.cust_id ;GROUP BY Inv_dtl.inv_no ;ORDER BY Inv_head.cust_id, Customer.Sales_id, Inv_dtl.Inv_no ;INTO CURSOR MYCURSOR
@!7H-32##13*1H@#5"#I-"A%I'@#20DII-!9%@G-"9H5H 2#2 MYCURSOR C+I%-C
I3*1H BROWSE @7H-@#5"9I-!9% 6H0!5%1)01#9 AHI-!9%-2AH21I26I-"9H5H-8I-I-!9% INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro11_files\\kasem_files\\chapter9-4_files\\c9402.gif" \* MERGEFORMATINET @!7H-@#2DII-!9%A%I'*1@'H22#25HDI"1@G#4 *4H5H@#2I-2#7-%1I-!9%- Sales_id 2A'D@G -%1!L C+I32#I-3*1H2!5I DO (_GENXTAB) WITH 'MYTAB' ,.T. ,.T., .T. ,1 ,2 ,4 , .T.@!7H-32##13*1H@#5"#I-"A%I'@#20DII-!9%@G-"9H5H 2#2 MYTAB C+I%-C
I3*1H BROWSE @7H-@#5"9I-!9% 6H0!5%1)01#9 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro11_files\\kasem_files\\chapter9-4_files\\c9403.gif" \* MERGEFORMATINET @G-1@#5"#I-"*3+#12#32#2D'I +%125I803I-!9%5HDID3-0D#H-GDI @
H --#2"2@GI 
A033*1H DO (_GENXTAB) @GB#A#!5HC
IC2#*#I22#2D'I(cross-tab) 6H!5#9A3*1H15I DO (_GENXTAB) WITH <output file>, [<output type>], [<close source>], ;   [<show thermometer>], [<row>], [<column>], [<cell>], [<row total>]@#2!291'H2 parameter AH%01'C
I2-"H2D# <output file> @G
7H--2#2 cross-tab <output type> 3+@G .T. output file 2#25HDI0@G2#2
1H'#2'(CURSOR)  3+@G .F. +#7-D!H3+ output file 2#25HDI0@G#0@ 2!2#2I	1 <close source> 3+@G .T. +#7-D!H3+ 032#42#2I	1C+I-1B!14  3+@G .F. 0"1D!H42#2I	1 <show thermoeter> 3+@G .T.+#7-D!H3+ 0A*2#L-2#32  3+@G .F. 0"1D!HC+IA*2#L-2#32 <row> 3++!2"@%4%L 5H0C+I!2@G row C2#2D'I 21'-"H2I2I 5H2#2 MYCURSOR 4%L Cust_id 0@G+!2"@% 1, Sales_id @G+!2"@% 2, Inv_no @G+!2"@% 3, Sum_exp_4 @G+!2"@% 4  <col> 3++!2"@%4%L 5H0C+I!2@G column C2#2D'I <cell> 3++!2"@%4%L 5H0C+I!2@GI-!9%C2#2D'I <row total> 3+@G .T. 032#*#I24%L%#'!C+II'"Rushmore TechnologyRushmore Technology @G@BB%"55H
H'"@4H!'2!@#G'C2#@I26I-!9%C Visual FoxPro 6H@G%1)0@H5H@46I1IAH FoxPro 2 *!1"5H"1@G DOS -"9H 6H@G@BB%"55H
H'"@4H!'2!@#G'C2#@I26@#-#L B"-2(1"AI!1
5@I2
H'" 6HAI!1
5- Visual FoxPro !5-"9H 2 
4 7- AI!1
5!2#2(.IDX) 1 compound index(.CDX) B"5HAI! .CDX 09@4B"-1B!14@!7H-@#232#@42#26I!2C
I2 	01I @#2*2!2#C
I'2!*2!2#- Rushmore DI15 AHI2@#2!5AI! .IDX @#2I-32#@4AI!1
5I5H!5'2!*1!1L1@7H-D5H@#2I-2#H-
A%I'@#20*#I2AI!1
5-"H2D#60C
I'2!*2!2#- Rushmore Technology DI?I---#5IH-@%"'H2 2#C
I Rushmore Technology *2!2#C
I2DI13*1HH2F@+%H25IB"-2(1"'%5 FOR DII'" 
AVERAGE BLANK BROWSE CALCULATECHANGE COPY TO COPY TO ARRAY COUNT DELETE DISPLAY EDIT EXPORT INDEXLABELLISTLOCATERECALLREPLACEREPLACE FROM ARRAYREPORTSCANSORTSUMTOTAL@BB%"5 Rushmore 032DI@#G'!2@!7H-8C
I -!4'@-#L@5"@#7H-@5"'3212#2@5"' AHC
H'H20C
I1+%2"9IC
I +#7-+%2"F2#2D!HDI @5"AH#0*44 22#320I-"%!2@H21I@-
I-'##0'1 Rushmore Technology 0D!H32I28*#I2AI!1
55H!5@7H-D NOT @
H INDEX ON CUST_ID FOR .NOT.DELETE() TAG CUSTOMER @
H I2I-2#3'"-#'!- invoice I2@#2I-2#'2!@#G'C2#3' C+I32#*#I2AI!1
511'-"H2H-D5IOPEN DATABASE MYDATABASEUSE INV_DTLINDEX ON INV_NO TAG INV_NO1&& @!7H-@#2C
I3*1H2!1'-"H2I2%H2@#2G0DIC
I'2!*2!2#- rushmoreCalculate Sum(Inv_dtl.Quantity*Inv_dtl.UnitPrice) ;  For Inv_dtl.inv_no = 1 ; To nMytotal? nMytotal25H%H2'!25I@#2-0*#8DI'H2 Rushmore Technology 1I-2(1"+%12#@I26I-!9%2AI!1
5I 	01I@#20@4H!'2!@#G'C+I1B#A#!-@#2 @!7H-@#2C
I'%5 FOR #1IC B#*3#'AI!1
5-8'H2!5%1)0#11@7H-DC FOR +#7-D!H @
HI-2#@#5"I-!9%-4%LC G'#031
5C+I14%L1IFI'"
UPDATE INV_DTL SET QUANTITY = 30 WHERE INV_DTL.INV_NO = 1 .AND. PROD_NO = '10001'
C*H' SQL @#2G*2!2#C
I'2!*2!2#- Rushmore Technology DI@
H1 11'-"H2H-D5I SELECT INV_DTL.INV_NO, SUM(INV_DTL.QUANTITY * INV_DTL.UNITPRICE) ;  FROM INV_DTL WHERE INV_DTL.INV_NO = 1 Visual FoxPro 1IAH#8H 5.0 @GI!2DI@4H!1L
1C2##'*-2#32- rushmore technology 1 3*1H SQL !2C+I6H!5#9A3*1H15I SYS(3054, 0 | 1 | 11 ) 0 3+D!HC+IA**202# optimize - rushmore technology 1 3+C+IA**202# optimize - rushmore technology AH0A*12#2@5H"' 11 3+C+IA**202# optimize - rushmore technology AH0A*12#25H!52#@
7H-!1(join)1'-"H2@
H I2I-2##'*-9'H23*1HH-D5I0C
I'2!*2!2#- Rushmore +#7-D!H C+I4!L3*1H15I ? SYS(3054,1)A%I'%-C
I3*1H UPDATE - SQL 32##1#8I-!9%-2#2 INV_DTL B"32#@%5H" quantity @G 30 2!@7H-D5H3+9'H2%%1L0@G-"H2D# UPDATE INV_DTL SET QUANTITY = 30 WHERE INV_DTL.INV_NO = 1 .AND. PROD_NO = '10001'+%125H@#5"3*1HA%I'B#A#!0A*-'2!15IUsing index tag Inv_no1 to rushmore optimize table Inv_dtlUsing index tag Prod_id to rushmore optimize table Inv_dtlRushmore optimization level for table inv_dtl:fullA*'H23*1HI2IDIC
I'2!*2!2#- rushmore -"H2@G!5HC+I8%-*1@83*1HH-D5I9'H2@4-0D#6II2@!7H-@#232# @
7H-!2#2%2"F2#2@I2I'"1 ? SYS(3054,11) SELECT Inv_head.cust_id, Customer.sales_id, Inv_head.inv_no , ; SUM(INV_DTL.QUANTITY * INV_DTL.UNITPRICE) ; FROM mydatabase!inv_head ; LEFT OUTER JOIN mydatabase!inv_dtl ;  ON Inv_head.inv_no = Inv_dtl.inv_no ; LEFT OUTER JOIN mydatabase!customer ; ON Inv_head.cust_id = Customer.cust_id ; GROUP BY Inv_dtl.inv_no ; ORDER BY Inv_head.cust_id, Customer.Sales_id, Inv_dtl.Inv_no ; WHERE INV_DTL.INV_NO = 1 ; INTO CURSOR MYCURSOR25H%H2'!21I+!5I@#2G*2!2#C
I'2!*2!2#- rushmore technology 
H'"C2#@4H!'2!@#G'C2#@I26I-!9%DI5"4H6I
55I@#2!29#9A2#C
I2 SELECT - SQL A%0@4H2F1H-31I-!9%5HI31--I'" '%5 DISTINCT  SELECT DISTINCT Inv_dtl.Inv_no FROM Inv_dtl
2#C
I1'A#!2B# (Macro Substitution) C#55H3*1H+#7-@7H-DC query -@#2"2'!2F @#2*2!2#C
I1'A#!2B#A3*1H+#7-@7H-D@+%H21IDI  cMymacro = "Inv_head.Inv_no # 1 AND Inv_head.Cust_Id = '10002'" SELECT * FROM Inv_head WHERE &cMymarcro C2#1I2#C
I1'A#!2B#GD!H*0'1@#2-2C
I1'A#AC2#*1H2 query DI@
H cMyfield = "CUST_ID" cMycond = "10002" SELECT * FROM Customer WHERE EVALUATE(cMyfield) = (cMycond)
2#C
I2 Subquery Subquery 7- 2#C
I3*1H SQL  2"CI3*1H SQL -55 @7H-32#@%7-I-!9%2!@7H-DC subquery -5#1I+6H @
H I2@#2I-2#-"2#2'H2%9I2#2"C5HD!H@"7I-*4I2-@#2@%" @#2*2!2#*-2!I-!9%DIB"C
I3*1HH-D5I SELECT * FROM Customer ; WHERE Customer.Cust_Id NOT IN ; (SELECT DISTINCT Inv_head.Cust_Id FROM Inv_head)
-H-D0@G2#@#5"#9I3*1H SQL 3*1H-7HF
#2"2 (Report)
#2"27-@G*H'5H*31
5H*8-5*H'+6H-#02 2#*#I2B#A#!*3+#14!L#2"2B"+%11H'FDA%I'0#0-DI'"*H'#0- 3 *H'7-
 1. *H'-2##1I-!9% *H'5I*H'C+
H0@G-#L!5H0#-#1I-!9%5H9IC
I2I-@I2D2!@7H-D5H3+ @7H-5H03I-!9%5HI-D#0!'%%C2#--#2"2 2. *H'-2##0!'%%I-!9% C*H'5I0@G2#3I-!9%5H9IC
II-I-!9%2-#L! !2#0!'%%@7H-C+IDII-!9%2!I-2# 3. *H'-#2"2 @G2#3I-!9%5HDI22##0!'%%A%I'A*--!2C#9AH2F2!5HI-2# @
HA*5H- 2 ,@#7H-4!L +#7- @G@GAI!I-!9%
25H%H2'!2I2I#2"22A-2!5'452#-@+7-25IGDI 
@#4H!I*#I2#2"21'-"H2#2"2H-D5I0@G#2"2A**#8"-2#*1H7I--%9I2B"C+I32#@#5"%312!"-2#*1H7I-2!2D+2I-"(Ranking) !5'452#15I INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro12_files\\kasem_files\\chapter9-5_files\\c9501.gif" \* MERGEFORMATINET 32#*#I2-#L!2!1'-"H2 1. 5H command windows I-3*1H  SET DEFA TO C:\MYAPP  MODIFY COMMAND MYPROJECT  ( HYPERLINK "http://kasem.sstplus.com/chapter9.htm" B#@G myproject 8*2!2# download B#A#!1'-"H2DI5H @#4H!*#I2#02) 2. %4J5HAG Docs %4J5H Forms A%I'@%7- New 21IC+I32#%4J5H New Form 3. 3+ form properites B"%4J@!2*L8H!'2 A%I'@%7- properties 3+8*!14--#L! 15I Autocenter = .T. Caption = #2"2*#8"-2#7I-*4I2 Controlbox = .F.
 4. 32#*#I2 Text Box 1'A# A%I'3+ property 15IName = cFromCust_IDInputmark = XXXXX 5. *#I2 Text Box 1'5H*- A%I'3+ Property 15IName = cToCust_IDInputmark = XXXXX 6. *#I2 Option Group A%I'3+ Property 15I5H Optiongroup1 Name = optSelect 32#I-3*1HCAJ Method C Click Event 15I IF This.Value = 1 Thisform.cFileName.Enabled =.T. ELSE Thisform.cFileName.Enabled =.F. ENDIF
5H Optiongroup1 -> Option1  Name = optPreview5H Optiongroup1 -> Option2 Name = optPrint5H Optiongroup1 -> Option3 Name = optFile 7. *#I2 Text Box 1'5H*2! A%I'3+ Property 15IName = txtFileNameInputmark = XXXXXXXXEnabled = .F. 8. *#I2 Command Button 1'A# A%I'3+ Property 15IName = cmdPrint Caption = 4!L FontName = MS Sans Serif 32#I-3*1HCAJ Method C Click Event 15I
* Check Error EntryIF Thisform.cFromCust_ID.Value < Thisform.cToCust_ID.Value =MESSAGEBOX("2#+1*%9I2I-I-"'H26#+1*%9I2","4%2") Thisform.cFromCust_ID.Setfocus RETURNENDIFIF Thisform.optSelect.Value = 3 AND EMPTY(Thisform.cFileName.Value) =MESSAGEBOX("#82I-
7H-AI!","4%2") Thisform.cFileName.Setfocus RETURNENDIF* Select DatacFrom = ALLTRIM(Thisform.cFromCust_ID.Value)cTo = ALLTRIM(Thisform.cToCust_ID.Value)SELECT C.cust_id, C.name, C.creditlmt,;C.sales_id, sum( D.quantity* D.unitprice) as Total ;FROM mydatabase!customer C ;LEFT OUTER JOIN mydatabase!inv_head H;INNER JOIN mydatabase!inv_dtl D ;ON H.inv_no = D.inv_no ;ON C.cust_id = H.cust_id;WHERE (C.cust_id BETWEEN (cFrom) AND (cTo)) OR ; (EMPTY(cFrom) AND EMPTY(cTo)) ;GROUP BY C.cust_id ;ORDER BY Total DESC ;INTO CURSOR MYCURSOR IF _TALLY=0 =MESSAGEBOX("D!H!5I-!9%","4%2") Thisform.cmdCancel.ClickELSE  * Print Report DO CASE  CASE Thisform.optSelect.Value = 1  REPORT FORM CUSTRPT.FRX PREVIEW NOCONSOLE  CASE Thisform.optSelect.Value = 2  REPORT FORM CUSTRPT.FRX TO PRINTER PROMPT NOCONSOLE   CASE Thisform.optSelect.Value = 3  REPORT FORM CUSTRPT.FRX TO ;  FILE (Thisform.cFileName.Value) ASCII NOCONSOLE ENDCASE  Thisform.cmdCancel.ClickENDIF
 9. *#I2 Command Button 1'A# A%I'3+ Property 15IName = cmdCancel Caption = "@%4 FontName = MS Sans Serif 32#I-3*1HCAJ Method C Click Event 15I Thisform.Release 10. @*#GA%I'32#16-#L! B"%4J5H@!9 Form A%I'@%7- Save C*H
7H-AI!'H2 CUSTRPT
3'2!#9I11 Report Designer2#*#I2#2"21I Visual FoxPro DI@#5"!@#7H-!7-5H
H'"C2#*#I2#2"2D'IC+IA%I' 6HG7- Report Designer @#2*2!2#@I2D*#I2#2"2DIB"C
I3*1H CREATE REPORT 
7H-D%L+#7- %4J5H@!9 File @%7- New A%I'%4J5H Report 21IG%4J5H8H! New File 
H--7H@#2!23'2!#9I11 %1)0-#2"2#0@ H2F5H Visual FoxPro DI@#5"!D'I 6H!515I INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro12_files\\kasem_files\\chapter9-5_files\\c9503.gif" \* MERGEFORMATINET  Column report  @G#2"25HA* 1 @#-#LH- 1 ##1 @
H #2"2#2"
7H-%9I2 #2"2*#8"-2#7I-*4I2 Row report  @G#2"25HC+6H+I20!5@5" -%1!L@5"' B"5H4%LAH%04%L0@#5"%!2  One-to-meny report @G#2"25H 1 @#-#L0#0-I'"2#2+%2"2#2!2@
7H-!'2!*1!1L1 @
H C*H*4I2 Multi-column  @G#2"25HC 1 +I20!5+%2"F -%1!L A%04%LAH%04%L0@#5"%!2  Label  @G#2"25HC
I4!LI2"	%2*3#' Report Designer@!7H-32#*#I2#2"2B"C
I3*1H CREATE REPORT A%I'@#2G0DI1 Report Designer 6H@G@#7H-!7-5H
H'"C2#*#I2#2"2- Visual FoxPro @#2!232#*3#'9H-'H2C report designer #0-DI'"*H'H2F-0D#I2 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro12_files\\kasem_files\\chapter9-5_files\\c9504.gif" \* MERGEFORMATINET 
A%1)02#4!L4!L3*1HTitle4!L#1I@5"'C#2"2 @!7H-@#4H!I#2"2%4J5H@!9 Report @%7- Title/Summary %4J5H Title bandPage Header4!L@!7H-6I+I2C+!H#2-*#I2 ReportColumn Header4!L@!7H-6I+I2C+!H 2!-%1!L%4J5H@!9 File @%7- Page Setup C
H-- Columns C+I3+ Number !2'H2 1 (3'--%1!L5HC+IA*C#2"2)Group Header4!L@!7H-@%5H"%8H!I-!9%%4J5H@!9 Report @%7- Data Grouping... A%I'3+4%L5HI-2#C+IAH%8H!Detail4!L2!@#-#L#2-*#I2 ReportGroup Footer4!L@!7H-@%5H"%8H!I-!9%%4J5H@!9 Report @%7- Data Grouping... A%I'3+4%L5HI-2#C+IAH%8H!Column Footer4!L-*4I*8+I2 2!-%1!L%4J5H@!9 File @%7- Page Setup C
H-- Columns C+I3+ Number !2'H2 1 (3'--%1!L5HC+IA*C#2"2)Page Footer4!L@!7H-@%5H"%8H!I-!9%#2-*#I2 ReportSummary4!L#1I@5"'C#2"2 -*4I*8-#2"2%4J5H@!9 Report @%7- Title/Summary %4J5H Summary band
A03 C#2"2I2I-2#3+-L(font) 1I#2"2 +%125H@I2*9H Report Designer C+I%4J5H @!9 Report @%7- Default Font... A%I'32#3+-L2!I-2#32#*#I2#2"2*#8"-2#7I-*4I2 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro12_files\\kasem_files\\chapter9-5_files\\c9505.gif" \* MERGEFORMATINET  1. %4J5HAG Docs %4J5H Reports A%I'@%7- New 21IC+I32#%4J5H New Report 2. 3+ Defalut Font B"%4J5H@!9 Report @%7- Defalut Font... 3+-L@G CordiaUPC 2 14  3. 32#3+I-'2!C*H'- Page Header B"2#%4J5H  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro12_files\\kasem_files\\" \* MERGEFORMATINET C Report controls A%I'32#%4JC3A+H5HI-2#A%I'I-I-'2!2!I-2#C#55HI-2#AIDI-'2!5HI-4 C+I%4J5H  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro12_files\\kasem_files\\chapter9-5_files\\c9506.gif" \* MERGEFORMATINET 0@G#98K!%DA%I'GD%4J5HI-'2!5HI-2#AID A%I'32#AIDI-'2!2!I-2#2#*#I2@%%315H 4. %315H-#2"2@#2-20C
I 1L
1 RECNNO() AH2#5GD!H*2!2#C
I2DI C+I832#*#I22!15I C+I32#%4J5H@!9 Report A%I'@%7- Variables...  5H
H- Variables 3+1'A# C+I
7H-'H2 NO  5H
H- Caculates 3+@G Count A%I'%4J8H! OK 5. 32#3+4%L+#7-1'A#5HI-2#4!L--C#2"2C*H'- Detail B"2#%4J5H  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro12_files\\kasem_files\\" \* MERGEFORMATINET A%I'D%4JC3A+H5HI-2# A%I'I-
7H-1'A#+#7-4%LC
H- Expression A%I'3+#9A2#4!L5H
H- Format A%I'%4J8H! OK 5H
H- Expression 3+1'A#
7H- no 5H
H- Format  3+#9A2#4!L@G 9999 5H
H- Expression 3+4%L
7H- cust_id  5H
H- Expression 3+4%L
7H- name 5H
H- Expression 3+4%L
7H- creditlmt  5H
H- Format 3+#9A2#4!L@G @Z 999,999,999.99 5H
H- Expression 3+4%L
7H- total 5H
H- Format 3+#9A2#4!L@G @Z 999,999,999.99 5H
H- Expression 3+4%L
7H-L sales_id C#2"25H@#232#*#I26I5I0D!H!52#-I262#2-!9%11I4%L5HC
I2@#20-I2!22 2#2
1H'#2'-3*1H SELECT-SQL 5HDI*#I2D'IC -#L!H-+I2 11I
7H-4%LH2FGC+I1I
7H-2!
7H-4%LC SELECT-SQL 6. *#I2"-#'!-#2"2B"32#%4J5H@!9 Report @%7- Title/Summary A%I'%4J5H
H- Summary band %4J8H! OK @#2G0DIA Summary 6I!2C*H'- Report Designer 32#%4J5H  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro12_files\\kasem_files\\chapter9-5_files\\c9507.gif" \* MERGEFORMATINET 5H
H- Expression 3+
7H-4%L5H4!L
7H- total 5H
H- Format 3+#9A2#4!L@G @Z 999,999,999.99 A%I'32#%4J5H 8H! Calculations... 5H
H- Calculate C+I%4J5H Sum 
+%125H8DI32#AH#2"2@G5H-CA%I'32# save #2"2B"%4J5H@!9 File A%I'@%7- Save 1I
7H-'H2 CUSTRPT +%121IC+I8@#5"-#L!6I!2C
I2A%I'4!L#2"29....
A03 #2"24!L@GAI!@GD'I *2!2#5H04!L--2@#7H-4!LDIB"C
I3*1H RUN COPY /b 
7H-D%L LPT1:2#4!L#2"2C Visual FoxPro @#2*2!2#3+C+I!52#4!L+#7-D!H4!L4%L24%L +#7-3+D!HC+I!52#4!L##15H@G
H-'H2 DIB"2#@I2D3+5H4%L1IF @
H 5H4%L Total @#20D!HC+I!52#4!LI-!9%I2I-!9%1I!5H2@G .NULL. (H2 null 0@46I-5H@#2*#I2'2!*1!1L#0+'H22#2 6H2#25H3!2*#I2'2!*1!1L11I-20D!H!5I-!9%5H!5'2!*1!1L6H1A%016@4H2 null 6I!2)  1. C+I32#@#5"#2"2 CUSRPT !232#AIDB"4!L3*1H5H Command Window 15I MODIFY REPORT CUSRPT 2. 5H Report Designer C+I32#%4J@!2*L8H!'25H4%L Total A%I'@%7- Properites... 3. 5H Report Expression C+I32#%4J5H8H! Print When... 4. C
H- Print only when expression is true: C+II-@7H-D'H2 .NOT.ISNULL(TOTAL) @G2#*1HC+IB#A#!D!H32#4!LI-!9%-4%L TOTAL I24%L!5H2@G .NULL.  5. C*H'5I8*2!2#5H03+'H2I2@#-#LC5H'H2@%H2D!HC+I!52#4!L--!2B"32#%4J5H  Remove line if blank 21IC+I%4J OK H-!25H Report Expression. C+I32#%4J8H! OK
@%7-I-!9%A%I'3!24!LC2#1I2#4!L#2"2-2D!H3@G5H0I-4!L2!@LGDI @
HI-2#4!L#2"2#5H 1 A%0#2"2#5H 8 6 10 @GI 11I@#2GI-!52#*#I2-#L!@7H-#-#1I-!9%5HDI32#@%7-A%I'3!24!L --C#2"2 1'-"H25H0%H2'H-D5I@G@5"A'25H0C+IH2*2!2#3D#0"8LC
2CI2-7HF D!H@5"AH#2"2-"H2@5"'
2#32 0A*#2"2#1I+!5H-#L!A%I'C+I32# @%7-#2"2#B"8H! Shift +#7-8H! Ctrl I2D'IA%I'%2A!A*%8!#2"2#5HI-2# 21IG*1HC+IB#A#!4!L#2"2--!22!I-!9%5HDI@%7-@-2D'I 6H2#@%7-I-!9%H2F@GD'I@#20-2(1"1'A#-0@#"L@G1'
H'"C2#@GI-!9% A%I'3I-!9%1I!2@G@7H-DC2#--#2"2 
 1. C+I32#*#I2#2"2H-B"4!L3*1H5H command window 15I CREATE REPORT CUSTRPT2 2. %4J@!2*L8H!'25H report designer A%I'@%7- Data Environment  3. %4J@!2*L8H!'25H Data Environment A%I'@%7-2#2 Customer 21IG%4J5H8H! Close  4. %4J5H report designer 21I%4J5H@!9 Report A%I'@%7-#2"2# Quick Report @!7H-*#I2#2"2@*#GG32# save #2"2 5. C+I*#I2-#L!B"4!L3*1H  command window 15I CREATE FORM CUSTRPT2 6. 5H Form Designer C+I%4J5H@!9 Form @%7- New Property 4!L5H
H- Name 'H2 AChosen[1] 21IG%4J8H! Close  7. C+I3 List Box 2 Form Control !2C*HD'IC Form A%I'3+ properties 15I RowSourceType = 2 RowSource = Customer ColumnCount = 2 ColumnWidths = 50,250 MultiSelects = .T. Name = LStcust_id 8. *#I2 Command Button A%I'3+ properties 15I Caption = Run Report Click Event I-3*1H15I
lnCounter = 0DIMENSION ThisForm.achosen[ThisForm.lstCust_id.ListCount]WITH ThisFormFOR i = 1 TO .lstCust_id.ListCountIF .lstCust_id.Selected(i)lnCounter = lnCounter + 1.achosen[lnCounter] = .lstCust_id.List[i]ENDIFENDFORENDWITHIF lnCounter = 0WAIT WINDOW "No Records Chosen !"ELSEDIMENSION ThisForm.achosen[lnCounter]REPORT FORM CustRpt2 FOR ASCAN(ThisForm.achosen,cust_id) > 0 PREVIEWENDIF
21IG32# Save A%I'%-@#5"6I!2C
I29...0*1@DI'H22#@%7-#2"2#!24!L1I@#2C
I1'A#-0@#"L!2@G@7H-DC2#@%7H-I-!9% @!7H-8@I2C2#C
I21'A#-0@#"L5IA%I'G3DD
I2-"H2-7HDI-500-C+I
#2"2 1 2#4!LC-52%5HH2!2 I2H29I-H2DI@"*1!1*1 FoxPro for DOS !2H-2#3+%1)02#4!LC+I1#2"21I0D!H"8H"2@+!7-1 Visual FoxPro @
HI2@#203+2-+I2#02) 3+3'##1H-+I25H04!L @#2G*2!2#5H03+DIC report designer 1IDI@%" +#7-03+#0"0+2#0+'H2##1@#2GC
I3*1H Escape Code -@#7H-4!LGDI-5 +#7-I203#2"2A4(2%G@5"B#A#!  .PRG 6I!2@-@%" AH-!2"8 Windows '452#1%H2'H2%7!DDI@%" 3!2C
I H DI 55I@#2G!2@I2@#7H-- Visual FoxPro 5H%0@#7H- A%I'H-"#'!@%H!-55...
 C Visual FoxPro 2#03+H2-@#7H-4!L1I!10D-4 -0
401 Printers 5H3+D'IC windows @*!- @
HI2@#2I-2#@%5H"A%2-#02)GI-DAIDC +I2 properties -@#7H-4!L +#7-I2!5#02)5H!52D!H@+!7-15H Windows 3+!2C+I I2@#203+2-+I2#02)GI-D3+5H @!9C Windows 5H Start -> Setting -> Printer A%I'%4J'2@%7- Properties @7H-@I2D32#AID2-#02) C*H'-AJ Paper A%I'@%7-2@G Customs 1 2 
 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro12_files\\kasem_files\\chapter9-5_files\\c9508.gif" \* MERGEFORMATINET 
0@+GDI'H2'H203DI1I!1"8H"22D+ +#7-I20C+I9IC
I3+@--04!L#2"2A%I'*1HC+IB#A#!A*+I2- printer setup 5I!2C+I3+G*2!2#3DI ("@'I2#3+2A custom) I2@GDDI!G-"2C+I9IC
I--#2"2B"5HD!HI-!2"8H1 printer setup @%"05'H2 I2-"2#9I'H203-"H2D#2!!2@%"#1
*3#'#2"21H-
@!7H-@#232#*#I2#2"26I!2 Visual FoxPro 03H2H2F-@#7H-4!L5H941ID'IC Windows A%I'3H21I!2@G!2D'IC#2"2-@#2I'"@*!- 6H@#2032#@%5H"A%H2H2FB"D!HI-2#AI properties - @#7H-4!L@#2I-#23A+H5H@GH2@+%H25IH-'H2@G-"9H5HA+H+3%C B"315I
C+I32#@4D%L#2"26I!2B"315I 
 USE 
7H-#2"2.FRX
@
HUSE CUSTRPT2.FRX LOCATE FOR OBJTYPE = 1 AND OBJCODE = 53 BROWSE
@!7H-832# browse 98G0@+G@#-#L5H32#@G*20H2F-#2"2 6HG9D!H#9I@#7H-  C+I832# %4J@!2*L 2 #1I5H 4%L Expr 8G01H25HD'I*3+#1@GH2-@#7H-4!L-#2"2
 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro12_files\\kasem_files\\chapter9-5_files\\c9509.gif" \* MERGEFORMATINET 
2 2@G*20-@#7H-4!L Epson LQ-1050 6HC#2"2-8-2DIH25HAH225I6I-"9H1
4-@#7H-4!L5HC
I-"9H 
*4H5H@#20I-AID @#2I-AID5H4%L memo - Expr 5H!5@7H-D@G Objtype = 1 A%0Objcode = 53 B"2#@%5H"A%H2D@GH25H@#2I-2# A%I'03-"H2D#+#7-#1? !D!HC+I8@I2!2AI#5I+#-#1@5K"'!1G@%5H"-5I2!5C#DAI#2"2A%I' save #2"21IH2-@#7H-4!L5HD!H6#0*L0%1!2@"7--5
H--7H8I-#9I'H2H25HA*@+%H25I+!2"6-0D#A%I'@#2032#@#5"H2@+%H25I2 properties -@#7H-4!LC Windows DI-"H2D#? 3*1HH2F5H@#20C
I1!515I
3*1H GETPRINTER() @G3*1H5HC
IA*#2"
7H--@#7H-4!L A%I'C+I@#232#@%7-@#7H-4!L5HI-2#A%0032#*HH25H@G
7H--@#7H-4!L5HDI@%7-D'I @
H
cPrinterName = GETPRINTER()
3*1H APRINTER() @G3*1H5HC
I*#I21'A#-0@#"LA%I'032#@G
7H--@#7H-4!LD'IC1'A#-0@#"L5H*#I26I @
H
APRINTER(cPrinter)
3*1H PRTINFO() @G3*1H5HC
I-6H2-@#7H-4!L5HC
I-"9H 6HH25HDI!25I@#20*2!2#3!23++#7-@%5H"A%H2C4%L Expr -D%L#2"25H@#2032#AID B"5HH25H!5-"9H0!51I*4I 13 
47- (9#2"%0@-5"-H25H*H%1!2C help)
 PRTINFO(1)  0A*H2-  ORIENTATION PRTINFO(2)  0A*H2- PAPERSIZE  I2H2@G 256 2-#02)@GA custom PRTINFO(3)  0A*H2-  PAPERLENGTH @G2'2!"2'-#02)5H3+@GA custom PRTINFO(4)  0A*H2- PAPERWIDTH  @G2'2!'I2-#02)5H3+@GA custom PRTINFO(5)  0A*H2- SCALE PRTINFO(6)  0A*H2- COPIES PRTINFO(7)  0A*H2-  DEFAULTSOURCE PRTINFO(8)  0A*H2-  PRINTQUANTITY PRTINFO(9)  0A*H2- COLOR PRTINFO(10)  0A*H2- DUPLEX PRTINFO(11)  0A*H2-  YRESOLUTION PRTINFO(12)  0A*H2- TTOPTION PRTINFO(13)  0A*H2- COLLATE
3*1H SET PRINTER TO @G3*1H5HC
I3+@#7H-4!L@7H-C
I--#2"2 @
H
 SET PRINTER TO NAME (cPrinterName)
+%125H8DI3'2!@I2C@5H"'13*1HI2I (A) A%I'!0-"1'-"H2@7H-C+I%-(6)2A%I'3D#0"8LC
I@-9 -20*#I2D%L .DBF @GH2H2FD'I +#7-C
I text file @GH2D'IGDI A%I'*#I21L
16I!212#-5GDI ...-15IG6I-"9H1H21I+%2"A%I'%0#1
 1. C+I832#*#I2#2"26I!215I
 CREATE REPORT MYREPORT1
 2. %4J@!2*L8H!'25H1'#2"2A%I'@%7H- Data Environment... 5H+I2H2- Data Enviroment C+I%4J@!2*L8H!'2@%7-#2"2# Add.. @%7-D%L customer.dbf 21IG%4J5H8H! Close
 3. %4J@!2*L5H#2"2 A%I'@%7-@!9 Report @%7- Quick Report... 21I%4J8H! OK
 4. 32# save #2"2B"8H! Ctrl-W
 5. 32#*#I2D%L@7H-@G*20-2#4!L 8-20*#I2D%L@G .DBF +#7- text file GDI C1'-"H25I0-C+I832#*#I2B"C
I text file B"32#4!L3*1H5H command window 15I
 MODIFY FILE MYPRINT
 21I32#4!LH2H2F15I
 DEVICE=Epson LQ-1050   OUTPUT=LPT1: PAPERSIZE=256 PAPERLENGTH=4162 PAPERWIDTH=1256 DEFAULTSOURCE=8
 32# save B"8H! Ctrl-W 8G0DID%L@G*202#4!L
7H- MYPRINT.TXT *4H5H!3+D'I#0-I'"
 DEVICE 0@G
7H--@#7H-4!L5HC
I--#2"2 I2D!HC*H##15I0@G2#C
I@#7H-4!L- Windows 5H@G@G Default D'I
 OUTPUT -6 output -#2"2
 PAPERSIZE 3+2-#02) 256 7- custom size 6H8I-3+'2!'I2A%0"2'-#02)I'"
 PAPERLENGTH 3+'2!"2'-#02)!5+H'"@G n x .01 !. @
H 1200 * .01 = 12 @4@!#
 PAPERWIDTH 3+'2!'I2-#02)
 DEFAULTSOURCE 3+@G 8 7-C
I tractor feed
*H'H2-7HF5H0@GG2!*2" #02)2!A'-@G-"H2D#?
 6. @!7H-@#23*4HH2@G5H@#5"#I-"@#2I-@5"3*1H'8!2#32-55 B"2#*#I2B#A#! .PRG 15I
 MODIFY COMMAND MYPRINT
 32#I-3*1H15I
 SET PRINTER TO NAME Epson LQ-1050  && 3+@#7H-4!L5H0C
I4!L#2"2 
7H-5H3+-2@G
7H- network printer GDI USE MYREPORT1.FRX LOCATE FOR OBJTYPE = 1 AND OBJCODE = 53 REPLACE Tag WITH "" , Tag2 WITH "" && @G2#%I2H2- printer 5H#2"2@GD'I APPEN MEMO Expr FROM MYPRINT.TXT OVERWRITE  && 3H25H3+D'I!2C*HD'IC#2"2 USE REPORT FORM MYREPORT1 PREVIEW  && TO PRINT
 32# save A%I'%-@#5"B#A#!9'H2@4-0D#6I @*#GA%I'8%-AID text file 5H@GH25HC
I3+*202#4!LA%I'%-@#5"#2"29'H2@42#@%5H"A%-"H2D#?
2#3+C+I PRIN PERVIEW !52C+
H1-(C
IDI1 VFP 6 6ID)
%1)01H'D- Visual FoxPro 1II2@#232#3+2-+I2H2 9%2#L +#7-*4HH2F 2 VFP 0@GH2@+%H21ID'ICD%L foxuser.dbf C+I -@'%2@#232#@#5"C
I2#1IH-D VFP G03*4H@+%H21IDI@
H@5"'1I2@#23+2- preview C+IC+
H@G!- #1IH-D@!7H-@I2*9H VFP 2# preview G0!52@G!-@+!7-#1IH-
1'-"H25I0@G2#*#I2+I2H2 preview #2"2A@G! Windows #1H29I
!
 1.C+I8*#I2-#L!6I!2 15I
 CREATE FORM MYPREVIEW
 2. 3+ Property 15I
 TitleBar = 0 Name = MyPreview ShowWindow = 2 WindowState = 2 
 21IG32# Save
 3. 5HB#A#!*3+#14!L#2"2C+IC*H3*1H15I
 .... DO FORM MYPREVIEW NAME MYPREVIEW REPORT FORM MYREPORT1 PREVIEW IN WINDOWS MYPREVIEW MYPREVIEW.RELEASE ....
25IDG0C+
H1-.... Version H3'H25I%-A%I'D!HH2 I-C
I 3*1H KEYBOARD '{CTRL+F10}' A#3*1H DO FORM...
2#C
I2 Project Manager
-2
I2DI2*3+#1@#7H-'452#C
I2 Project Manager 6H2H2I2#2-"9HA%I'GH2DDI D!HI--H2GDI C5I0@G2#A032#C
I2@H21I@- -"I3@	20!7-C+!H
C*!1"H-1I@#2C
I2 Foxbase #8HA#F @#2G32#*#I2-L#0-H2F@
H B#A#! 2I-!9% #2"2 @!9 1@-6H Foxbase #8HA#FD!H!5@#7H-!7H-C2#12# 2H2GC
I'452#*#I2 sub-directory @7H-32#2#1+!'+!9H A"A"0'H2%8H!5I@G I-!9% %8H!5I@GB#A#! @GI H-!2-!26 #8H5H@G FoxPro G@4*4H-3'"'2!*0'5I6I!2 6HG@#5"'H2 catalog manager !@I2C'H2@#5"A dBASE IV !2'H2 H-!2C Visual FoxPro G!5@+!7-1AH@G
7H-@*5"C+!H@G Project Manager !'H2
7H-5IA+%0@+!20*!5  6H1'5IA+%0@G1'12#C2#32-@#21IAH@#4H!I 61I*#I2#02A%I'3!1DAH2"C
I2  
2#*#I2 Project
1. 5H @!9 File C+I@%7- New2. 32#@%7- Project A%I'@%7- New File3. C Create dialog box C
H- Enter I-
7H-B#@G5HI-2# 4. %4J8H! Save
+#7-5H Command Window I- 3*1H CREATE PROJECT 
7H-B#@G
 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro14_files\\kasem_files\\chapter10_files\\c9001.gif" \* MERGEFORMATINET @#2!29-L#0-1H-C Project Manager 0A+!'+!9H (Categories) @G 5 
4 7- 
Data  0@G1'12#@5H"'1 2I-!9%(database) 2#2(free table) 4'#5(query)Documents @G1'12#@5H"'1 -#L!(form) #2"2(report) 	%2(label)Classes 0@G1'12# %2*(Visual Class Library)Code 0@G1'12# B#A#!(program) API Library Application Other 0@G1'12# @!9(menu) Text File Other File @
H #9 2
H-!2C*H'-8H!3*1H 0#0-DI'"
New C
I*3+#1*#I2D%LC+!H -15I6I-"9H'H2 01I8-9H5H+!'D+- project Add @G2#3D%L 5H!5-"9HA%I'!2@4H!D'IC project Open @G3*1H@42I-!9%(open database) Close @G3*1H42I-!9%(close database)Modify @G2#AIDD%LRun @G2#*1HC+ID%L1I32 I2-"9HC*H'- data 0@G8H! browse 6H@G2#-9I-!9%C2#2Remove @G2#3D%L1I--2 project +#7- 1I3--A%0%--GDIBuild @G8H!*#I2 application 5H*2!2#3DC
I2DI@%"
8H!3*1HI2I0@%5H"A%D2! categories 5H@#2C
I2-"9H01I
@#2!2914'H2 Project Manager !5-0D#C+I@#23DII2C+I832#@#5"B#A#!1'-"H25H!C+IDD'I%-(6)2!291H- B"4!L3*1H15I
 MODIFY PROJECT MYPROJECT
2# build project @G .EXE D%L1I-2# build project @G .EXE D%L1IH--7H@#2I- set main B#A#!C project manager 1H- C+I315I (!DI*#I2 D%L
7H- main.prg D'I@7H-C
I*3+#1 set main)
1. C+I32#%4JAJ Code C Project Manager 2. C+I32#%4J# + (')5H-"9H+I2 Program (I2@G -(%) GD!HI-%4J)3. 21IC+I%4J8H!'2-@!2*L 5HAI! main A%I'32#%4J5H3*1H set main ('45*1@8'H2AI!1IFDI9 set main +#7-"1I2!5@#7H-+!2"  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro14_files\\kasem_files\\chapter10_files\\Checkmrk.jpg" \* MERGEFORMATINET -"9HI2+I23*1HA*'H2DI32# set main @#5"#I-"A%I' C#55@#2DI32# set main -"9HA%I'A%I'D%4JI307-'H2@G2#"@%42# set main) 
H-!2G32# build project C+I@GD%L .EXE B"2#%4J5H8H! Build... @%7- Build Excutable C*H'- Option - dialog box Build Option 0#0-DI'"  Recompile All File 0@G2# compile B#A#!1I+!H-5H032# build   Display Error  C+I32#A* I-4%2--!2 C032# build  Run After Build C+I32#@#5"@#5"#02 6I!232+%12 build @*#G 
C+I832# @%7- Recompile All File ,Display Error A%I'%4J5H8H! OK @!7H-B#A#!32# Build Excutable @*#G8G*2!2#5H032#@#5"#021IF 2"CIB#A#! windows DI@%"
2#3+ Project InfromationC Project Manager @#2*2!2#5H03+ information -B#@G-@#2DIB" 2#%4J8H!'25H Project Manager A%I'@%7- Project Info... 21I@#20DI1 Project Infomation dialog box@#2!29C*H'- AJ Project 'H23-0D#DII2 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro14_files\\kasem_files\\chapter10_files\\c10-002.gif" \* MERGEFORMATINET *H'A#0@G2#3+ information H2F-8 8*2!2#I-DI2!*2"*H'H-!2 0#0-I'" Home @G2#3+ default directory  Last Built -'15H32# build #1I*8I2" File -3'D%L5H!5-"9HC project Debug Info @G2#3+C+I*2!2# debug B#A#!DI+#7-D!H Encrypted 3+C+I32#@I2#+1*@!7H-32# compile Attach Icon 3+ icon @7H-C
IA icon #9+!24I- @!7H-32#%4JA%I' 8*2!2#3 icon 5HI-2#!2C*HD'IDIB"2#%4J5H8H! Icon... 21I8G3 D%L icon 5H8I-2#!2C*HD'I5H
H- File Name
A03 8*2!2#*#I2 Icon 6I@-DIB"C
IB#A#! IMAGEDIT.EXE 6H@G-"9HC directory ./IMAGEDIT  2"CI directory - Visual FoxPro 
@%GD!H%1 8*2!2#%2 application 5H32# build B"2# D!H3+C+I!52# debug C+I32#%4J5H Debug Info @7H-3C+I@G
H-'H2*H'- AJ Files  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro14_files\\kasem_files\\chapter10_files\\c10-001.gif" \* MERGEFORMATINET @!7H-@#232#%4J AJ Files C Project Information 8G0DI1D%L1I+!5H!5-"9HC project C*H'5I0#0-DI'" Type 0-#0@ - D%L1IF 0A*@G%1)0- icon Name A*
7H- D%L Last Modified A*'15H#1#8#1I*8I2" Include C*H'5I@G1'3+'H2C2# build 03D%L@I2!2#'!D'IC application 5HDI32# build I'"+#7-D!H 8*2!2#%4JC*H'5IDI@%"@7H--C+I project #2  I2!5 X(22) A*'H2C+I3!2#'!D'IC application  I2@G
H-'H2 D!H3D%L1I!2#'!C application I2@G*56 @G2#A*C+I#2'H2D%L1I@GB#A#!+%1C2# build (set main) ** I28*1@8C+I5 D%L5H@G 2I-!9%0D!H3+C+I@G Include @#20@7H-22-D%L0!52#@%5H"A%-"9H@*!- Code @G code page #0@(D"C
I 874
1
+2
'+1'
 HYPERLINK "http://kasem.sstplus.com/chapter11.htm" \l "story1" 	103-"H2D#5 -*#I2-#L!A%I'3+ 2#22I-!9%C DataEnviroment A%I'H-!2I-32#"I2"2I-!9%D-"9H directory -7H?
 HYPERLINK "http://kasem.sstplus.com/chapter11.htm" \l "story2" @!7H-@%-D zap I-!9%-1@G*85H#1 (B-I%1%%%%...%I2222) J2FFFF

*#I2-#L!A%I'3+ 2#22I-!9%C DataEnviroment A%I'H-!2I-32#"I2"2I-!9%D-"9H directory -7H?
*3+#1H25H*#I2-#L!B"C
I DataEnvironment @7H-3+2#2 '4' A%0'2!*1!1LH2F @7H-C
IC-#L! -*#I2!103 path - directory 1ID'I@!7H-@#23B#A#!5H*#I2@*#GA%I'DAH2"A%I'@%5H" directory @G
7H-C+!H +#7-@5"B#A#! Drive C: A%I'@%5H"C-"203#0@GA Client Access B" J-5I@	202I-!9%DD'I5H LAN *H'B#A#!GD'I5H Drive C: 6H directory -A#1+%12"I2"A%I'D!H#1@GI +#7-3-"H2D#GDI 5H3C+I!1@4 error 2! 2I2%H25I
 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro16_files\\kasem_files\\chapter11_files\\c1101.htm" \* MERGEFORMATINET 
A*'H2-#L!1I+2 2I-!9%
7H- mydatabase.dbc D!H@- .... A%I'@#2012#1!1-"H2D#5%H0?
2#AI1
+25H@46I @#2I-*2!2#5H03+ direve A%0 path C+I1-#L!H2F5H@#2*#I26I!2DI@- B"315I
 1. C#55H@#2I-2#@%5H" drive A%0 path B"D!HI-2#"8H1B#A#! GC+I*#I2D%L 5H!52!*8% .H (header file) @
H MyApp.H B"C
I Text Editor -0D#GDI +#7-0C
I3*1H5H command window GDI B"4!L15I 
 MODIFY COMMMAND MYAPP.H
21IGI-3*1H15I
 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro16_files\\kasem_files\\chapter11_files\\c1102.htm" \* MERGEFORMATINET 
A%I'32# save D%L5I B"8H! Ctrl-W
 2. @!7H-832#*#I2-#L!6I!2 A%I'32# 3+2#2C*H'- DataEnvironment C Form Designer A%I' C+I832#%4J@!2*L8H!'25H DataEnviroment 32#@%7H- Properties... (0!5*15H-#L!GI-3J0)
 3. %4J5HAJ Method A%I' %4J*-#1I5H BeforeOpenTabel 
  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro16_files\\kasem_files\\chapter11_files\\c1103.gif" \* MERGEFORMATINET 
21IG32#I-B#A#!1H-D5I
#INCLUDE MYAPP.HIF !EMPTY(DATA_PATH) and !EMPTY(DATA_DRIVE) =AMEMBERS(A_Cursors,THISFORM.dataenvironment,1) =ASORT(A_Cursors, 2) nStartpos=ASUBSCRIPT(A_Cursors, ASCAN(A_Cursors, "Object"),1) FOR I = nstartpos TO ALEN(A_cursors,1) IF A_Cursors(i,2) = "Object" cObjClass = "THISFORM.DATAENVIRONMENT."+a_cursors(i,1)+".class" IF EVAL(cObjClass)="Cursor" cObjName="THISFORM.DATAENVIRONMENT." ; + A_Cursors(i,1)+".DATABASE" Data_Name=EVAL(cObjName) NewDataPath=ALLTRIM(data_drive)+ ALLTRIM(data_path) ; + ALLTRIM(SUBSTR(Data_Name, RAT("\",Data_Name)+1)) oRef = EVAL( "THISFORM.DATAENVIRONMENT."+a_cursors(i,1) ) oRef.Database = newdatapath ENDIF ELSE EXIT ENDIF ENDFORENDIF
 4. +%125IH-D @!7H-8I-2#5H0@%5H" directory +#7- path G*2!2#3DIB"2#AI5HD%L MYAPP.H G- 

2#3I-!9%%1+%125HDI zap DA%I'
*5H@I2"1#9I%2 *-@I25H*'!C*H 22 GI-!5@%5H"%I31I2 I'"@+8%%CD!H#2@!7H-H24!L*2!1'-1)#*1+2# (ZAP) B"D!H1ICAH4I'!12D H-D5IH2D!HI-!21HI32+#7-@+7H--5H-D @#2!51L
1 UNZAP !23@*-.... !1#-C+I@*5" 
-'L%4I'@.5"3A*
FUNCTION UNZAP PARAMETER nRECORD IF nRECORD>0 .AND. USED() IF RECCOUNT()=0 FILENAME=DBF() USE HANDLE=FOPEN(FILENAME,2) IF HANDLE>0 BYTE=FREAD(HANDLE,32) BKUP_BYTE=BYTE FIELD_SIZE=ASC(SUBSTR(BYTE,11,1))+(ASC(SUBSTR(BYTE,12,1))*256) FILE_SIZE=FSEEK(HANDLE,0,2) BYTE8=CHR(INT(nRECORD/(256*256*256))) BYTE7=CHR(INT(nRECORD/(256*256))) BYTE6=CHR(INT(nRECORD/256)) BYTE5=CHR(MOD(nRECORD,256)) BYTE=SUBSTR(BYTE,1,4)+BYTE5+BYTE6+BYTE7+BYTE8+SUBSTR(BYTE,9) =FSEEK(HANDLE,0) =FWRITE(HANDLE,BYTE) =FCHSIZE(HANDLE,FILE_SIZE+(FIELD_SIZE*nRECORD)) =FCLOSE(HANDLE) ENDIF USE &FILENAME ENDIF ELSE WAIT WIND "ERROR CANNOT UNZAP....." ENDIFRETURN
'45C
I
USE CUSTOMER ZAP =UNZAP(100) 
 2#5H@#20 UNZAP I-!9%@H2%1!21I@#23@GI-#23'@#-#L5H!5-"9H1I+!-D%L1IFH- AHI2H2D!H#2GC+I#0!23'@#-#LA%I'C*H1'@%@I2DH- @!7H-32# UNZAP @#5"#I-"G0DII-!9%@H213'@#-#L5HH2DIC*H@I2D 21IG32# BROWSE 9'H2 @#-#L*8I2"5H@GI-!9%#4F @G@#-#L5H@H2D+#H (121I0@G"0) @!7H-DI3'@#-#L5H@G#4A%I' GC+IH2%1D ZAP I-!9%1IC+!H-5#1I A%I'G UNZAP 2!3'@#-#L5H@G#4.... 
ZAP D!HC
H1
+2AH1
+2!5%4H42 !5*2#I2I-C
I D%I-@- (@-...DIH2B)2+#7-@%H2@5H")
2#*#I2 HELP
*H'
H'"@+%7-(Help) @G*H'+6H5HDI912!2-"H2H-@7H- C"8A#5H"1C
I DOS @G#04142#0@GA .DBF-Style Help -@#4H!@I2!2*9HC"8- Windows GDI@%5H"!2@GA Graphical Help #1I@I2*9H"8- Internet GDI@4!5 HTML Help 6HG7- help 5H*#I2B"C
I 2)2 HTML(Hypertext Markup Language) *3+#1+1*7-@%H!5I0-42"2#*#I2*H'
H'"@+%7-CA HTML Help 
H-5HH2032#*#I2*H'
H'"@+%7-DI1I3@G0I-!5B#A#!5HC
IC2#*#I2H- 6H@#2D!H*2!2#*#I2B"C
IB#A#! Visual FoxPro DIB"# *3+#1B#A#!5H@#20C
I!5
7H-'H2 HTML Help Workshop
2# Setup B#A#! HTML Help Workshop 
32#C*HAH CD B#A#! Visual FoxPro 6 %C CD-Rom Drive A%I'%4J5H8H! Start 
21I32#%4J5H Run C+II-3*1H15I INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image1.gif" \* MERGEFORMATINET 
32# setup B#A#!2!1I-5H3+
8*2!2# Download B#A#! HTML Help Workshop DI5H @'JDL  HYPERLINK "http://msdn.microsoft.com/workshop/author/htmlhelp/htmlhelp.exe" http://msdn.microsoft.com/workshop/author/htmlhelp/htmlhelp.exe
32# Setup 1H-D5I 
 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image2.gif" \* MERGEFORMATINET 
 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image3.gif" \* MERGEFORMATINET 
 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image4.gif" \* MERGEFORMATINET  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image5.gif" \* MERGEFORMATINET 
 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image6.gif" \* MERGEFORMATINET 
%4J8H! Next B#A#!G032# Install B#A#! HTML Workshop %*9H@#7H--!4'@-#L@*#G
2#*#I2 HTML Help
C2#*#I2 HTML Help 0!51I-C2#*#I215I7- 
*#I2@-*2#5H-"9HC#9-D%L Hypertext Markup Language (HTML) 
*#I2 Help Project 
*#I2 Table of Contents (TOC) +#7-*2#1
 
*#I2 Help Index (15) 
*#I2@-*2#5H-"9HC#9- D%L Hypertext Markup Language(HTML) 
@7I-+2- Help 5H@#2032#*#I26I!20#0-DI'" D%L .HTM +#7- .HTML @G+%1 8*2!2#5H0*#I2@-*2#@+%H25IDIB"C
IB#A#! Microsoft FontPage +#7-B#A#!5HC
I*#I2@-*2# HTML -7HF GDI '452#*#I2@-*2#@7H-C
I@G@7I-+21IC+I8*#I2@GD%L"H-"F2!+1'I-- Table of Contents (*2#1
) @
H I28!5*2#1
1I+!-"9H 10 +1'I- GC+I832#*#I2@GD%L HTML 2!3'+1'I--*2#1
 @GI +#7--20*#I2D'I!2+#7-I-"'H2GDI (C5H5I0D!H--42"'452#*#I2D%L HTML) @!7H-32#*#I2@G5H@#5"#I-"A%I'G31I-H-D7-2#*#I2 Table of Contents 
*#I2 Help Project 
Help Project 0@G1'5HC
I12#C@#7H--2#*#I2*H'
H'"@+%7- 6HG0%I2"1 Project CB#A#! Visual FoxPro C+I832#*#I2B#@G6I!215I 
32#@#5"B#A#! HTML Help Workshop 6I!2A%I'%4J5H@!9 File 21I%4J5H#2"2# New 
5H New dialog box @%7- Project A%I'%4J8H! OK  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image7.gif" \* MERGEFORMATINET 
21I@#20@I2*9H New Project Wizard 6H@G@#7H-@!7H-5H
H'"-3'"'2!*0'C2#*#I2B#@G 
5H dialog box - New Project C+I8%4J8H! Next 
5H dialog box - New Project   Destination C+I81I
7H--B#@G5H8032#*#I26I!2 C+I83+
7H-@G MYHELP A%I' %4J5H8H! Next 
 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image8.gif" \* MERGEFORMATINET 
5H dialog box - New Project   Existing Files 0@G*H'5HC
IC2#3+D%LH2F5H!5-"9HA%I'3!2C*HD'ICB#@G 
HTML Help table of contents (.hhc) 3+C+I3D%L TOC 5H!5-"9HA%I'3!2#'!D'ICB#@G
HTML Help Index (.hhk) 3+C+I3D%L 1
5 5H!5-"9A%I'3!2#'!D'ICB#@G
HTML File (.htm) 3+C+I3D%L HTML 5H!5-"9A%I'3!2!2#'!D'ICB#@G
C+I25IC+I8%4J8H! Next DH-B"D!HI-32#%4J5H#2"2#CF
5H dialog box - New Project   Finish C+I%4J8H! Finish +%121I@#2G0DI B#@G MYHELP 1 2  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image9.gif" \* MERGEFORMATINET 
8*2!2#5H033D%L HTML 5H*#I2D'IH-+I25I!2#'!C B#@GDIB"2#%4J5H8H!  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image11.gif" \* MERGEFORMATINET (Add/Remove topic Files) 21IG06I dialog box - Topic Files C+I832#%4J5H8H! Add @7H-3D%L HTML !2#'!D'ICB#@G 1 2 A%I'%4J8H! OK  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image10.gif" \* MERGEFORMATINET 
*#I2 Table of Contents(TOC) 
Table of Contents @G+1'I-5HC
IC2#@I26@7I-+2- help 6HG@+!7-1*2#1
-+1*7- !51I-C2#*#I215I 
32#%4J5HAJ Contents 21IC+I32#@%7-#2"2# Create a new contents File A%I'%4J8H! OK 
C+I32#I-
7H-D%L contents 5H*#I26IC+!H'H2 MYTOC A%I'%4J8H! OK 21I@#2G0@I2*9H*H'-2#*#I2 Table of Contents 
32#3+ Heading B"%4J5H8H!  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image12.gif" \* MERGEFORMATINET (Insert a heading)21I@#20@I2*9HC*H'- Table of Contents Entry 5HAJ General C
H- Entry title: @G*H'5HC+I3+I-'2!5H0A*C*H'-*2#1
 C+I32#I-  @#5"@5"B#A#! Visual FoxPro  (D!HI-4!L@#7H-+!2"  ) 21IC+I%J5H8H! OK 
H-!2G32#3+#2"2#-*2#1
B"32#%4J5H8H!  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image14.gif" \* MERGEFORMATINET (Insert a page) B#A#!G02!'H2  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image13.gif" \* MERGEFORMATINET 
C+I%4J5H8H! No @7H-@4H!#2"2#H-2 Heading 5HDI*#I2D'IH-+I25I 
5HAJ General C
H- Entry title: C+II-  @#4H!I1 Visual FoxPro  21IC+I %4J8H! Add 
C*H'- Path or URL 5H
H- File or URL: C+I3+
7H-D%L HTML 5H@#2I-2# @
H TOPIC1.HTM A%I'%4J5H8H! OK *-#1I21I0DI TOC 1 2 
 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image15.gif" \* MERGEFORMATINET 
C#55H!5#2"2#-7HF-5C+I"I-%1D32!CI- 3-6 A%I'AH#5 
2#3+#9 Icon C+I1#2"2#C TOC C+I@I2D32#AID#2"2#5HI-2# C+I@%7H-AA*D5H#2"2#  @#5"@5"B#A#! Visual FoxPro  A%I'%4J5H8H!  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image16.gif" \* MERGEFORMATINET (Edit Selection) 
%4J5HAJ Advance C
H- Image Index 3+H2 @G 5 (Icon #9 folder) 21I%4J8H! OK 
H-!2C+I83+ Icon C+I1#2"2#  @#4H!I1 Visual FoxPro  B"3+H2C+I1 Image Index @G 1 (Icon #9 +1*7-) 
8*2!2#5H0%#2"2#C TOC DIB"2#%4J5H8H!  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image17.gif" \* MERGEFORMATINET (Delete Selection) 
Help Index (1
5) 
Incex (1
5) @G*H'5H3C+I9IC
I2*2!2#@I26@7I-+2- Help DI-"H2#'@#G' C05H83%1C
I2 Help -"9H8*2!2#5H0I-35HI-2#I+2C*H'-AJ Index @!7H-35H#15HI- B#A#! Help G0A*#2"2#5H!535H@#2DI3+D'I-*#I2 Help Index --!2 6H@#2*2!2#5H0 %4J@I2D9C#2"2#1IFDI !51I-C2#*#I215I 
32#%4J5HAJ Index 21IC+I32#@%7-#2"2# Create a new Index File A%I'%4J8H! OK 
C+I32#I-
7H-D%L Index 5H*#I26IC+!H'H2 MYINDEX A%I'%4J8H! OK 21I@#2G0@I2*9H*H'-2#*#I2 Index 6H0!5%1)0%I2"12#*#I2 Contents 
C+I%4J5H8H! INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image18.gif" \* MERGEFORMATINET  (Insert a keyword) 21I@#20@I2*9HC*H'- Index Entry 5HAJ General C
H- Keyword: @G*H'5HC+I3+I-'2!(keyword) 5H0A*C*H'-1
5 C+I32#I-  Visual FoxPro  (D!HI-4!L@#7H-+!2"  ) 21IC+I%J5H8H! Add 
C*H'- Path or URL 5H
H- File or URL: C+I3+
7H-D%L HTML 5H@#2I-2# @
H WELCOME.HTM A%I'%4J5H8H! OK I2C#55H keyword 5H@#23+D'I!52#-I26CD%L HTML !2'H2+6HD%L GC+I%4J8H! Add @7H-32#@4H!D%L HTML @I2C Keyword DI-5 
 3+I-'2!D@4I%C+I1 Help
8*2!2#5H032#3+I-'2!C+IA*D@4I%2#LC+I1B#A#! help -8DIB"2#%4J5HAJ Project A%I'%4J5H8H!  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image19.gif" \* MERGEFORMATINET (Change Properties Options) 32#I-I-'2!5H
H- Title: C*H'- AJ General 21'-"H2C+I8I-3'H2  @#5"@5"B#A#! Visual FoxPro 
3+D%L@7H-A*-@#4H!@#5" Help
@!7H-32#@#5"B#A#! help 6I!2A%I'@#2*2!2#5H03+C+IA*D%L HTML -@#4H!IA* help DIB"@I2D3+C*H'- Project A%I'32# Change Properties Option @%7-AJ General C
H- Default File: C+I3+D%L5HI-2#A*-@#4H!@#5" help
3+C+I!5AJ Search C Help
C2#*#I2 help 1I@#2*2!2#5H03+C+I help -@#2*2!2#5H0I+2 (Search) 3+#7-I-'2!CFGDI B"2#@4H!AJ Search D'ICB#A#! help 2@4!5H0!5@	20AJ Contents A%0 AJ Index DIB"2#@I2D3+C*H'- Project A%I'32# Change Properties Option %4J5HAJ Compiler A%I'%4J5H
H- Compile full-text search information
Compile HTML Help File
H-5H803B#@G5HDI*#I2D'IDC
I2DI8I-32# Compile B#@G1IH-B"2#%4J5H8H!  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image21.gif" \* MERGEFORMATINET (Compile HTML file) 21I32#3+D%LB#@G5HI-2#0 Compile B"3+C
H- Project file: A%0I2I-2#5H0A* help D%L+%125H32# compile A%I'GC+I%4J5H
H- Automatically display compiled help file when don 1 2
 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image20.gif" \* MERGEFORMATINET 
2#@#5"C
I2 Help CB#A#! Visual FoxPro
@!7H-DI32# compile B#A#! help @#5"#I-"A%I'@#20DID%L5H!52!*8% .CHM (MYHELP.CHM) 8*2!2#5H0@#5"C
I2 help DIB"2#@#5"B#A#!5I5H Windows DI15 AH*3+#18#0*LC@#5"5I7-2#@#5" help  2"CIB#A#! Visual FoxPro 8*2!#3DIB"2#I-3*1H5H Command window - Visual FoxPro 15I INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image22.gif" \* MERGEFORMATINET 
@!7H-32#8H!1L
1 F1 5HAI4!LG0#2 help 5H@#2*#I26I!2 C#55HI-2#I-2#"@%42#A* help 5HDI32#*#I26I!2 B"C+I%1D@G help - Visual FoxPro 2!@4!C+II-3*1H15I
 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image23.gif" \* MERGEFORMATINET 
Context-sensitive Help
Context-sensitive 7-2#-8
24C+I9IC
I2*2!2#5H0@I26C*H'H2F- help DIB"# B"2#%4J5H8H!@#7H-+!2"32!-#L! A%I'G32#%4JC-#L! . *H'-'185HI-2#A%I'B#A#!G032#A* help C*H'1IF6I!2
+%1A%0'452#@#5" Context-sensitive Help INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image24.gif" \* MERGEFORMATINET 
+%12#- Context-sensitive Help 1I@!7H-@#232#%4J5H8H!@#7H-+!2"32!-#L!A%I'3D%4J . 3A+H5HI-2# H-5HB#A#!0A* help 6I!21I!10D3H2- WhatsThisHelpID 5H3+D'IC*H' Properties -'18 6H0!5H2@G1'@% (H25I@#20@G9I3+@--*#I2-#L!) 21IB#A#!G0D+2H21'@%5H#1H2- WhatsThisHelpID 5HD%L@.@-#L H-21IG03H25H5HDI2D%L@.@-#L!2I+2C*H'- [ALIAS] C help I2!5#1G0A* help -*H'1IF6I!2
'452#*#I2 Context-sensitive Help 
C+I32#*#I2 Header File 6I!2B"1I
7H-'H2 MYMAP.H B"4!L3*1H5H Command Window - Visual FoxPro 15I 
MODIFY FILE C:\MYHELP\MYMAP.H 
21I32#I-3*1H INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image25.gif" \* MERGEFORMATINET 
32#16D%LB"8H! Ctrl+W
#DEFINE TOPIC1 1 @G2#3+H25H 1 C+I11'A# TOPIC1 
C+I32#@#5"B#A#! HTML Help Workshop A%I'@4D%L MYHELP.HHP 6I!2AID 5HAJ Project C+I%4J8H! INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image26.gif" \* MERGEFORMATINET  HtmlHelp API Information INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image27.gif" \* MERGEFORMATINET 
5HAJ Map C+I%4J5H8H! Header File&  C+II-
7H-D%L5HDI*#I2D'ICI- 1 7- MYMAP.H A%I'%4J8H! OK 
 C+I%4J5HAJ Alias @7H-3+D%L HTML C+I11'A# B"%4J5H8H! Add
21I32#I-H21'A#C+I#15HDI3+D'IC@.@-#LD%L A%I'3+
7H-D%L HTML 5HI-2#C+IA* 1 2 
 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image28.gif" \* MERGEFORMATINET 
C+I32#3+H2C Alias C+I@H235HDI3+H2D'IC@.@-#LD%L 1 2  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image29.gif" \* MERGEFORMATINET 
21I32# Compile HTML Help File 
2#3 Context-sensitive Help DC
IC-#L! 
C+I32#*#I2-#L! B"4!L3*1H5H Command Window - Visual FoxPro 15I 
MODIFY FORM FORMHELP 
C+I32#*#I2-#L! 2!1'-"H21 2  INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro13_files\\kasem_files\\chapter13_files\\Image30.gif" \* MERGEFORMATINET 
3+ Properties - Form 15I
WhatsThisButton = .T.
WhatsThisHelp = .T.
3+ Properties - Command1 15I 
Caption = Topic1
WhatsThisHelpID = 1
3+ Properties - Command2 15I 
Caption = Topic2
WhatsThisHelpID = 2
3+ Properties - Command3 15I 
Caption = Topic3
WhatsThisHelpID = 3
3+ Properties - Command4 15I 
Caption = Topic4
WhatsThisHelpID = 4
3+ Properties - Command5 15I 
Caption = Topic5
WhatsThisHelpID = 5
32#16-#L!A%I'@#5"-#L!6I!2C
I2B"8H! Ctrl+E 
8G0DI Help 2!'2!#0*L ....

2#C
I2 Window API
Window API @G1L
1 2"-
4+6H5H!5!2#I-!1#04142# Windows 5H@#2C
I1-"9H-"H2A#H+%2"C05I 6HG%I2"F11L
1- Visual FoxPro -15H#4A%I'1L
1 2"-H2F1I!5-"9H!2!2"5H9*#I26I!2 D!H'H20@G Active X Control, 1L
15H*#I26IB"C
I 2)2 C A%I' Compile @GD%L .DLL (Dynamic Link Library) , Visual FoxPro External Library D%L .FLL  6H1I+!5H%H2'!25I@#20@#5"1L
1+#7-B#A#!@+%H21I'H2 API (Application Programming Interface) 1I*4I 
!5'2!3@GI'"+#7-5H@#20I-C
I3*1H Window API ?
C2#@5"#02+#7-B#A#!6I1I@#2D!H3@GI-@#5"C
I21L
1- Window API GDI AH@7H-@G2#@4H!#0*44 2-B#A#!+#7-@!7H-B#A#!-8I-!52#4H-#0+'H2#04142# 8G*2!2#32#@#5"C
I21L
1H2F@+%H21IDI2!'2!@+!20*!
*3+#1#04142# Windows DI@#5"!1L
1 API  D'IC+IB"0##8-"9H 2"CI System Directory HC#9-D%L5H!52!*8% .DLL D%L@+%H21IDIAH Kernal32.DLL, Gdi32.DLL, User32.DLL, Mpr.DLL A%0 Advapi32.DLL @GI
C#0"0A#F9I@5"@"#0*1
+2C2#-H29H!7-3*1H Windows API 2A+%HH2F@H25H0+2DI@7H-2#9A3*1HA%01'-"H22#C
I21I@5"6IB"C
I  2)2 Visual Basic @G+%1 DIAH6CC'H23D!H2 Microsoft 6D!H"-!"1'-"H25H@5"C#9A- Visual FoxPro I2 G@%"	84DI'H2 Visual Baisc @G%9AIF- Microsoft *H' Visual FoxPro @GAH%98
##! C#0*31
'H21?  AH-32#@5"1L
1 API B"C
I Visual FoxPro 1@5"1L@+%H21IDIH2"'H2 Visual Basic -5#1H2
2#@#5"C
I21L
12 2"-
3*1H5HC
IC2#@#5"C
I21L
12 2"- (D%L5H!52!*8% .DLL) !5#9AC2#@#5"C
I15I 
DECLARE [cFunctionType] FunctionName IN LibraryName [AS AliasName] [ cParamType1 [@] ParamName1, cParamType2 [@] ParamName2, ...]
2#@#5"C
I2B"C
I3*1H DECLARE 0@G2##54*@-#L(Register) 1L
1C+I Visual FoxPro #2@H21I "1D!HDI@G2#@#5"C
I2#4
I2!0-42"#9A3*1H-5IH29I-H21I+%2"I-@GAHAI (@+!7-!-@#4H!C+!HF) !0-"1'-"H22#@#5"C
IB" Visual Basic A%I'3!2@#5"@5"19 @7H-H2D@+G1'-"H22#C
I21L
15H@5"I'" Visual Basic 0DI3%1!2@5"C Visual FoxPro DI-"H2*0'B"4
1'-"H22#6
7H- User Name C#04142# Windows
Visual Basic @5"3*1H15I
Private Declare Function GetUserName Lib "kernel32" Alias "UserName" (ByVal lpBuffer As String, nSize As Long) As Long
Visual FoxPro @5"3*1H15I
DECLARE Long GetUserName IN Win32API AS UserName String @lpBuffer , Long @nSize 
@+GD+!#1'H2 Visual FoxPro @5"3*1HDIH2"A%0*1I'H21I@"-0
-42"#9A3*1H
Visual FoxProVisual BasicDECLAREDECLAREPrivate Declare Function@G3*1H5HC
IC2# Register 1L
1 API[FunctionType]LongAs Long@G
4-H25H*H%1@!7H-@#5"C
I21L
1 H25H*H%1DI!515I 
SHORT
16-bit integer

INTEGER
32-bit integer

SINGLE
32-bit floating point

DOUBLE
64-bit floating point

LONG
32-bit long integer

STRING
Character string

FunctionNameGetUserNameGetUserName
7H-1L
1- Windows API I-I-1'-1)#C+
H@%GC+I9I-2!5H3+IN LibraryNameIN Win32APILib "kernel32"@G2#@#5"C
I1L
12D%LC *3+#1 Visual FoxPro 1I0C
I
7H- Win32API A D%L@+%H25I1I+! Kernal32.DLL, Gdi32.DLL, User32.DLL, Mpr.DLL A%0 Advapi32.DLL AS [Alias]AS UserNameAlias "UserName"3+
7H-C2#@#5"C
I2A
7H-1L
1@4!cParameterType1StringAs String@G
4-H25HC
I*3+#13@I2 +#7-*H%1@!7H-@#5"C
I21L
1 ParamName1@lpBufferByVal lpBuffer1'A#5HC
IC2#*HH2@I2A%0--cParameterType2LongAs Long@G
4-H25HC
I*3+#13@I2 +#7-*H%1@!7H-@#5"C
I21L
1ParamName2....@lnSizeByVal lpSize1'A#5HC
IC2#*HH2@I2A%0--...+!2"@+8  C#55HC*H@#7H-+!2" @ D'I+I21'A#+!2"'2!'H21'A#5H*H@I2DC1L
11I0!52#*H%%1L%1!2C+II'"
2#A*#2"
7H-1L
15HDI32# Register 
@!7H-@#232# Register 1L
1H2FA%I' I2@#2I-2##2'H2!51L
1C9 Register A%I'I2@#2*2!2#32#@#5"9DIB"C
I3*1H
 DISPLAY DLLS
+#7- LIST DLLS
2#%I2H21L
15HDI32# Register 
@!7H-I-2#%I2H21L
15HDI Register DA%I'*2!2#3DIB"C
I3*1H 
 CLEAR DLLS
2#C
I3*1H CLEAR DLLS 0@G2#%I2H21L
15H!52# Register D'I--1I+!
2#33*1H Windows API DC
I2 
C
H'A#F5HDI32#(6)22#C
I2 Windows API 1I9I@5"%-32!1I-H2FB"A%3*1H2 Visual Basic !2@G Visual FoxPro 8-"H23DI+! @-...AH%%1L3D!D!H"1-- %--"9H+%2"#1I+%2"+GD!H*2!2#3DI #01HDIDI@-'H22#3H25H*H%1!222#@#5"C
I21L
1 API 1IH25H*H%12
4*2!2#3!2C
I2DI15 AHH22
4I-!2#032#2-"H2@7H-C+I!5H2#4F5H@#2*2!2#3DC
IDI-"H29I-
C+I8%-(6)221'-"H2 B"2#*#I2B#A#!
7H- GETUSER.PRG B"4!L3*1H5H Command Window 15I
MODIFY COMMMAND GETUSER.PRG
A%I'4!L3*1H2!1'-"H2
** Program: Getuser.prg **** Purpose: Demonstrates how to use and call the Win32 **** GetUserName API. **RetVal = 0lpUserIDBuffer = SPACE(256) && Return buffer for user ID stringnBufferSize = 256 && Size of user ID return bufferDECLARE INTEGER GetUserName IN Win32API AS UserName ;STRING @lpUserIDBuffer, ;INTEGER @nBufferSizeRetVal=UserName(@lpUserIDBuffer, @nBufferSize)? RetVal && I21L
13D!H*3@#G0*HH2%1@G 0 ? "Value in lpUserIDBuffer : " + lpUserIDBuffer? "Value in nBufferSize : " + STR(nBufferSize)? "User ID : " + LEFT(lpUserIDBuffer,nbuffersize-1)CLEAR DLLS** End Program
32#16B#A#!B"8H! Ctrl + W 21I32#@#5"B#A#!B"4!L3*1H DO GETUSER 5H Command Window A%I'*1@%%1L5H@46I
0*1@DI'H23*1H ? "Value in lpUserIDBuffer : " + lpUserIDBuffer 0DI
7H- user name %1!2AH0!5H2 null H-I2"!2C+II'"-5 1 1'
2#C
I23*1H Windows API C%1)0H2F
*3+#11'-"H25H03@*-H-D5IH2*2!2#3CC
I2DI@%"15...2!'2!#0*L
2#C
I21L
1 GetVolumnInformation
1L
15I0@G2#A*I-!9%H2'*2#- Volumn C Disk *3+#1!0C
IH25HDI2 VolumnSerialNumber B"3DC
I@G1' Lock D!HC+I9I-7H3B#A#!@#2D%@#7H--7HDI-5
**---------------------------------------------------------------**** Program: Getvol.prg **** Purpose: Demonstrates how to declare and use the Win32 **** GetVolumeInformation API. ****---------------------------------------------------------------**lpRootPathName = "c:\" && Drive and directory pathlpVolumeNameBuffer = SPACE(256) && lpVolumeName return buffernVolumeNameSize = 256 && Size of/lpVolumeNameBufferlpVolumeSerialNumber = 0 && lpVolumeSerialNumber bufferlpMaximumComponentLength = 256lpFileSystemFlags = 0lpFileSystemNameBuffer = SPACE(256)nFileSystemNameSize = 256DECLARE INTEGER GetVolumeInformation IN Win32API AS GetVolInfo ;STRING @lpRootPathName, ;STRING @lpVolumeNameBuffer, ;INTEGER nVolumeNameSize, ;INTEGER @lpVolumeSerialNumber, ;INTEGER @lpMaximumComponentLength, ;INTEGER @lpFileSystemFlags, ;STRING @lpFileSystemNameBuffer, ;INTEGER nFileSystemNameSizeRetVal=GetVolInfo(@lpRootPathName, @lpVolumeNameBuffer, ;nVolumeNameSize, @lpVolumeSerialNumber, ;@lpMaximumComponentLength, @lpFileSystemFlags, ;@lpFileSystemNameBuffer, nFileSystemNameSize)**--------------------------------------------------------------**** Because several of the return values are padded with a null **** terminator, you will need to strip off the null terminator **** in order to get the correct value, which is what is done **** using the LEFT, ALLTRIM, and LEN functions. ****--------------------------------------------------------------**? "Drive & path name : " + ; ALLTRIM(lpRootPathName)? "Volume name : " + ; LEFT(ALLTRIM(lpVolumeNameBuffer),LEN(ALLTRIM(lpVolumeNameBuffer))-1)? "Max #/chars in vol name : " + ; ALLTRIM(STR(nVolumeNameSize))? "Volume Serial # : " + ; ALLTRIM(STR(lpVolumeSerialNumber))? "Max #/chars in dir/file names: " + ; ALLTRIM(STR(lpMaximumComponentLength))? "File System Flags : " + ; ALLTRIM(STR(lpFileSystemFlags))? "File System type : " + ; LEFT(ALLTRIM(lpFileSystemNameBuffer), ; LEN(ALLTRIM(lpFileSystemNameBuffer))-1)? "File Sys Name Size : " + ; ALLTRIM(STR(nFileSystemNameSize))CLEAR DLLS** End Program 
2#C
I21L
1 GetSystemDirectory
@G1L
15HC
IC2#+2 System Directory -#04142# Windows @7H-2C2# 41I B#A#! Windows 9I41I*2!2#03+
7H- System Directory C+I1#04142#DI@- 11II2@#2I-2##2'H2
7H--0D#@#2I-C
I1L
12!1'-"H2C2#I+2 15I
**---------------------------------------------------------------**** Program: GetSysDir.prg **** Purpose: Demonstrates how to declare and use the Win32 **** GetSystemDirectory API. ****---------------------------------------------------------------**
lsSysDir = SPACE(256) && MAX_PATH, the maximum path lengthliSize = 256 DECLARE INTEGER GetSystemDirectory IN Win32API ;STRING @lsSysDir, ;INTEGER liSizeliRet = GetSystemDirectory(@lsSysDir, liSize) ? "Size of Data : " + STR(liRet) && I21L
13D!H*3@#G0*HH2%1@G 0 ? "Windows System Directory : " + LEFT(lsSysDir,liRet)CLEAR DLLS ** End Program 
2#C
I21L
1 GetTempPath
@G1L
15HC
IC2#+2 Tempolary Directory -#04142# Windows 
**---------------------------------------------------------------**** Program: GetTempDir.prg **** Purpose: Demonstrates how to declare and use the Win32 **** GetTempPath API. ****---------------------------------------------------------------**lsSysDir = SPACE(256) && MAX_PATH, the maximum path lengthliSize = 256DECLARE INTEGER GetTempPath IN Win32API ;INTEGER liSize, ;STRING @lsSysDir liRet = GetTempPath(liSize, @lsSysDir) ? "Size of Data : " + STR(liRet) && I21L
13D!H*3@#G0*HH2%1@G 0? "Windows Tempolary Directory : " + LEFT(lsSysDir,liRet)CLEAR DLLS** End Program 
2#C
I21L
1 ExitWindowsEx
@G1L
15HC
I*1HC+I32# C
I*3+#1*1HC+I@#7H- Boot, Restart +#7- Log off #04142# Windows 2B#A#!
**---------------------------------------------------------------**** Program: WinExit.prg **** Purpose: Demonstrates how to declare and use the Win32 **** ExitWindowsEx API. ****---------------------------------------------------------------**uFlags = 0* uFlags I-!9%
4 INTEGER 5HC
I*3+#13++I25HC+I1L
1 ExitWindowsEx ( ) *2!2#!5H2DI15I* 0 @!7H-I-2# *1HC+I Log Off --2#0@#7-H2"* 1 @!7H-I-2# *1HC+I Shutdown @#7H-* 2  @!7H-I-2#*1HC+I Restart @#7H-C+!H* 4  @!7H-I-2#--2 Windows B"15 (Force)dwReserved = 0DECLARE INTEGER ExitWindowsEx IN Win32API AS ExitWindows INTEGER @uFlags , INTEGER dwReservedRetVal = ExitWindows(@uFlags, dwReserved) CLEAR DLLS** End Program 
2#C
I21L
1 SHGetSpecialFolderPath
@G1L
15HC
IC2#I+2 Special Folder - Windows
**---------------------------------------------------------------**** Program: FinFolder.prg **** Purpose: Demonstrates how to declare and use the SHELL32 **** SHGetSpecialFolderPath API. ****---------------------------------------------------------------***** Define Special Folder Constants#define CSIDL_PROGRAMS 2 &&Program Groups Folder#define CSIDL_PERSONAL 5 &&Personal Documents Folder#define CSIDL_FAVORITES 6 &&Favorites Folder#define CSIDL_STARTUP 7 &&Startup Group Folder#define CSIDL_RECENT 8 &&Recently Used Documents#define CSIDL_SENDTO 9 &&Send To Folder#define CSIDL_STARTMENU 11 &&Start Menu Folder#define CSIDL_DESKTOPDIRECTORY 16 &&Desktop Folder#define CSIDL_NETHOOD 19 &&Network Neighborhood Folder#define CSIDL_TEMPLATES 21 &&Document Templates Folder#define CSIDL_COMMON_STARTMENU 22 &&Common Start Menu Folder#define CSIDL_COMMON_PROGRAMS 23 &&Common Program Groups#define CSIDL_COMMON_STARTUP 24 &&Common Startup Group Folder#define CSIDL_COMMON_DESKTOPDIRECTORY 25 &&Common Desktop Folder#define CSIDL_APPDATA 26 &&Application Data Folder#define CSIDL_PRINTHOOD 27 &&Printers Folder#define CSIDL_COMMON_FAVORITES 31 &&Common Favorites Folder#define CSIDL_INTERNET_CACHE 32 &&Temp. Internet Files Folder#define CSIDL_COOKIES 33 &&Cookies Folder#define CSIDL_HISTORY 34 &&History FoldercSpecialFolderPath = space(255)DECLARE SHGetSpecialFolderPath IN SHELL32.DLL ;AS GetFolder LONG hwndOwner, ;STRING @cSpecialFolderPath, ;LONG nWhichFolder*** @
HI-2#I+2 StartUp Folder 'H2-"9H .5HC @#20C
I1'A# CSIDL_STARTUP 6H!5H2@H21 7GetFolder(0, @cSpecialFolderPath, CSIDL_STARTUP)?SubStr(RTrim(cSpecialFolderPath),1, Len(RTrim(cSpecialFolderPath))-1)CLEAR DLLS** End Program 
2#C
I21L
1 FindExecutable
@G1L
15HC
IC2#I+2
7H-D%L5HI-2# A%I'A* Folder 5HD%L1IF##8-"9H
**---------------------------------------------------------------**** Program: FindFile.prg **** Purpose: Demonstrates how to declare and use the SHELL32 **** FindExecutable API. ****---------------------------------------------------------------**lpFile = "NOTEPAD.EXE"lpDirectory = ''lpResults = SPACE(128)DECLARE INTEGER FindExecutable IN SHELL32 ;STRING@lpFile, STRING@lpDirectory, ;STRING @lpResultsliReturnValue = FindExecutable(@lpFile, @lpDirectory,@lpResults)* C#55H32#I+2A%I'D!H IiReturnValue 0!5H215I* 0 = Out of memory or resources* 31 = No association for file type* 2 = Specified file not found* 3 = Specified path not found* 11 = Invalid EXE format?liReturnValuelpResults = LEFT(lpResults, AT(CHR(0), lpResults) - 1)? "Full path of application: " + lpResultsCLEAR DLLS** End Program
2#C
I21L
1 MessageBeep
@G1L
15HC
IC2#*H@*5"@7- @+!7-1 3*1H ? CHR(7) AH8*2!2#5H03@*5"2 Sound - Windows !2C
IDIB"@*5"H2F8*2!2#@I2D3+C Control Panel C*H'- Sounds
**---------------------------------------------------------------**** Program: Beep.prg **** Purpose: Demonstrates how to declare and use the WIN32API **** MessageBeep API. ****---------------------------------------------------------------**#DEFINE MB_OK 0 && Default Sound#DEFINE MB_ICONHAND 16 && Certical Stop#DEFINE MB_ICONQUESTION 32 && Question#DEFINE MB_ICONEXCLAMATION 48 && Exclamation#DEFINE MB_ICONASTERISK 64 && AsteriskDECLARE INTEGER MessageBeep IN Win32API INTEGER=MessageBeep(MB_OK)CLEAR DLLS** End Program
2#3++I2H2C+I-"9H*8- Windows(Topmost Window)
C*!1"5H@#2"1C
I#04142# DOS @#20D!HH-"0!51
+2@5H"'12#C
I2B#A#!*1@H2D @7H-2'H2@!7H-32#@#5"B#A#!6I!2A%I' @#20I-C
I2B#A#!1I@*#G A%I'--2B#A#!1%H2'H- 60*2!2#32+#7-@#5"B#A#!-7HFH-DDI("@'IB#A#!#0@ 11')  AH-!26"8-#04142# Windows 2+%2"F2*2!2#@4C
I2DI#I-!F1 6HG@GI-5-#04142# Windows AH!@G'+1'B#2G@%"-"2C+I9IC
I @!7H-@I2*9HB#A#!5H!*#I26I!2I'" Visual FoxPro C
IAHB#A#!-!#01H--2B#A#!B"5HD!H*2!2#C
IB#A#!1'-7HFDI@%"D!H'H20@G Word , Excel @GI 11I6@G5H!2- 1L
15H!03@*--"9H5I
1L
15H03@*-5I@G1L
15H3+C+I +I2H2+#7--#L!5H@#2I-2# 3+C+I-"9H*8- Window @*!- (Topmost Window)
C+I832#*#I21L
12!1'-"H2H-D5I
**---------------------------------------------------------------**** Program: topwindow.prg **** Purpose: Demonstrates how to declare and use the WIN32API **** FindWindowA API. **** SetWindowPos API. ****---------------------------------------------------------------**FUNCTION TOPWINDOWPARA cCaption, lStatusDECLARE LONG FindWindowA IN WIN32API ;STRING class, ;STRING titleDECLARE SetWindowPos IN WIN32API ;LONG HWND, ;LONG hwndafter, ;LONG x, ;LONG Y, ;LONG cx, ;LONG cy, ;LONG flagsformhandle = 0formhandle = FindWindowA(0,cCaption) IF formhandle = 0=MESSAGEBOX("D!H window 5HI-2#")ELSE swp_nosize = 1 swp_nomove = 2 hwnd_topmost = -1 hwnd_notopmost = -2 lretval=0 IF lStatus  lretval = SetWindowPos(formhandle,hwnd_topmost,; 0,0,0,0,swp_nosize+swp_nomove) ELSE  lretval = SetWindowPos(formhandle,hwnd_notopmost,; 0,0,0,0,swp_nosize+swp_nomove) ENDIF ENDIFCLEAR DLLSRETURN
1'-"H22#C
I2 C+I8I-3*1HH-D5I5H Command Window
_Screen.MinButton=.F._Screen.MaxButton=.F._Screen.WindowState = 2=TOPWINDOW(_Screen.Caption,.T.)* _Screen.Caption C
I*3+#1 Main Visual FoxPro Window * C#55HI-2#+2 window -7HF GC
I C
I caption - window 1IF* I2D!HI-2#C+I9IC
I*2!2#C
I Task Bar DI C+I3+@G Auto Hide 
C#55HI-2#"@%42#3+ topmost window GC+IC
I3*1H15I
=TOPWINDOW(_Screen.Caption,.F.)D'I03!2%C+I-5#1H2..... 


'15H5H1CH
+%2"FH200*1*##L1
+2@5H"'1'15H1I2-*!'# D!H'H20@G@#7H-- Y2K 6H#1H2I3I2'!1+%-
2'B%1I+%2"C+I+%2#!!2A%I' AH H !5-0C- DH - DH !5AH@*5"1 B"*H'1' Y2K +#7--0D#'5II2@#23+2#I- 5 @GA 4 +%1A%I'1
+2GD!H!5 @#20C
I3*1H3+ 5@G 4 +%1 15I
 SET CENTURY ON
AH#0@G5H@#20!2917- 03-"H2D#14%L'15H5 A%I'-"20C+I'15H@GA5H@#2I-2# (9I@5"I-2#H2+2)-"2C+I4%L'15H A*@G '15HA D"F @
H 10 1"2" 2543 ('1##- 2 ' - web site D'@+!7-C6)@!7H-@I2DI--"2I-*1IF AH 10/09/2543A%I'I29IC
II- @G 2000 GC+IA%!2@G 2543 C+II'"G5-I-@*#GGC+IA*%1@G-"H2@H2 10 1"2" 2543A%0*4H5H2!4DI7-#'*-2#I-'15H'H29I-+#7-@%H2
@#2!2@#4H!1@%"%01#1
C+I8*#I21L
1H2F15IH-#1
*BC2BE.PRG**************************************************************** Function Convert date from BC to BE* ---B#A#!...... A%H2'15H2 .(. @G .(.* ---1'-"H2...... cTDATE=BC2BE(DATE())***************************************************************FUNC BC2BEPARA BCDATE && .(.IF TYPE('BCDATE')#'D'RETURN ''ENDIFLOCAL cDD,cMMcDD = ALLT(STR(DAY(BCDATE),2))cDD = IIF(LEN(cDD)=1,"0"+cDD,cDD)cMM = ALLT(STR(MONTH(BCDATE),2))cMM = IIF(LEN(cMM)=1,"0"+cMM,cMM)RETU cDD+'/'+cMM+'/'+STR(YEAR(BCDATE)+543,4)*BE2BC.PRG**************************************************************** Function Convert date from BE to BC* ---B#A#!...... A%H2'15H2 .(. @G .(.*-- 3DC
I...... dEDATE=BE2BC('25/03/2543')***************************************************************FUNC BE2BCPARA BEDATE && DD/MM/YYYY .(.LOCAL nDD,nMM,nYYYYIF TYPE('BEDATE')#'C'RETURN ''ENDIFnDD = VAL(SUBST(BEDATE,1,2))nMM = VAL(SUBST(BEDATE,4,2))nYYYY = VAL(SUBST(BEDATE,7,4))-543IF TYPE('nDD')#'N' .OR. TYPE('nMM')#'N' .OR. TYPE('nYYYY')#'N'RETURN ''ELSEIF nDD > 0 .AND. nMM > 0 .AND. nYYYY > 0RETURN DATE(nYYYY,nMM,nDD)ENDIFENDIFRETURN ''*BE2TD.PRG**************************************************************** ---FUNCTION BE2TD* ---B#A#!...... A%H2'15HD"@GA 2)2D"@G!"(*-- 3DC
I...... cTdate=BE2TD('12/01/2543')***************************************************************FUNC BE2TDPARA cTDATEIF TYPE('cTDATE')#'C'RETURN ''ENDIFRETURN SUBST(cTDATE,1,2) + ' ' + ;TCMONTH(BE2BC(cTDATE)) + ' ' + ;SUBST(cTDATE,7,4)*TD2BE.PRG**************************************************************** ---FUNCTION TD2BE* ---B#A#!...... A%H2'15HD"@G!@G'15HD"*-- 3DC
I...... cTdate=TD2BE('12 !#2! 2543')***************************************************************FUNC TD2BEPARA cTDATELOCAL cMM,nMMSTOR SPACE(2) TO nMMIF TYPE('cTDATE')#'C'RETURN ''ENDIFDO CASECASE AT('!#2!', cTDATE) > 0cMM = '!#2!'nMM = '01'CASE AT('8! 21L', cTDATE) > 0cMM = '8! 21L'nMM = '02'CASE AT('!52!', cTDATE) > 0cMM = '!52!'nMM = '03'CASE AT('@!)2"', cTDATE) > 0cMM ='@!)2"'nMM = '04'CASE AT('$) 2!', cTDATE) > 0cMM = '$) 2!'nMM = '05'CASE AT('!482"', cTDATE) > 0cMM = '!482"'nMM = '06'CASE AT('#2!', cTDATE) > 0cMM = '#2!'nMM = '07'CASE AT('*4+2!', cTDATE) > 0cMM = '*4+2!'nMM = '08'CASE AT('1"2"', cTDATE) > 0cMM = '1"2"'nMM = '09'CASE AT('8%2!', cTDATE) > 0cMM = '8%2!'nMM = '10'CASE AT('$(42"', cTDATE) > 0cMM = '$(42"'nMM = '11'CASE AT('1'2!', cTDATE) > 0cMM = '1'2!'nMM = '12'ENDCASEIF !EMPTY(nMM)RETURN ALLT(LEFT(cTDATE,ATC(cMM,cTDATE)-1))+ ;'/'+nMM+'/' + RIGHT(cTDATE,LEN(cTDATE)- ;(ATC(cMM,cTDATE)+LEN(cMM)))ENDIFRETURN ''*CHKTD.PRG**************************************************************** ---FUNCTION CHKTD* ---B#A#!...... #'*-2#I-'15HD"*-- 3DC
I...... LDate=CHKTD('22/01/2543') return .T. or .F.***************************************************************FUNC CHKTDPARA BEDATE && .(.IF TYPE('BEDATE')#'C'RETURN .F.ENDIFON ERROR mABC= ERROR()LOCAL nDD,nMM,nYYYY,XXX,mABCmABC=0nDD = VAL(SUBSTR(BEDATE,1,2))nMM = VAL(SUBSTR(BEDATE,4,2))nYYYY = VAL(SUBSTR(BEDATE,7,4))-543XXX=DATE(nYYYY,nMM,nDD)ON ERRORIF mABC # 0 .OR. EMPTY(XXX)RETURN .F.ENDIFRETURN .T.
*TCMONTH.PRG**************************************************************** ---FUNCTION TCMONTH* ---B#A#!...... A%H2@7-@G 2)2D"*-- 3DC
I...... mMONTH=TCMONTH(DATE())***************************************************************FUNC TCMONTHPARA dDATEIF TYPE('dDATE')#'D'RETURN ''ENDIFDO CASECASE MONTH(dDATE)=1RETURN '!#2!'CASE MONTH(dDATE)=2RETURN '8! 21L'CASE MONTH(dDATE)=3RETURN '!52!'CASE MONTH(dDATE)=4RETURN '@!)2"'CASE MONTH(dDATE)=5RETURN '$) 2!'CASE MONTH(dDATE)=6RETURN '!482"'CASE MONTH(dDATE)=7RETURN '#2!'CASE MONTH(dDATE)=8RETURN '*4+2!'CASE MONTH(dDATE)=9RETURN '1"2"'CASE MONTH(dDATE)=10RETURN '8%2!'CASE MONTH(dDATE)=11RETURN '$(42"'CASE MONTH(dDATE)=12RETURN '1'2!'ENDCASERETURN ''*TM2M.PRG**************************************************************** ---FUNCTION TM2M* ---B#A#!...... A%H2@7-D"@G!@G@7-* ---9I@5"........ Kasem K.* ---'1AID....... 12.08.99*-- 3DC
I...... nMonth=TM2M('!#2!')***************************************************************FUNCTION TM2MPARAMETER cTMONTHnMM = 0DO CASECASE AT('!#2!', cTMONTH) > 0nMM = 01CASE AT('8! 21L', cTMONTH) > 0nMM = 02CASE AT('!52!', cTMONTH) > 0nMM = 03CASE AT('@!)2"', cTMONTH) > 0nMM = 04CASE AT('$) 2!', cTMONTH) > 0nMM = 05CASE AT('!482"', cTMONTH) > 0nMM = 06CASE AT('#2!', cTMONTH) > 0nMM = 07CASE AT('*4+2!', cTMONTH) > 0nMM = 08CASE AT('1"2"', cTMONTH) > 0nMM = 09CASE AT('8%2!', cTMONTH) > 0nMM = 10CASE AT('$(42"', cTMONTH) > 0nMM = 11CASE AT('1'2!', cTMONTH) > 0nMM = 12ENDCASERETURN nMM
*#I2@*#GA%I' H-!2G@#4H!*#I2 %2*"H-" @7H-@G@-2DC
I2CB-2*H-DC 2" 2+I2
4!L3*1H5H Command Windows 1H5I
CLEATE CLASS
21II-I-!9%2!1'-"H21 2
 INCLUDEPICTURE "E:\\vfp\\@#5"@5"B#A#! Visual FoxPro17_files\\kasem_files\\classdate_files\\th1.jpg" \* MERGEFORMATINET 
A%I'G%48H! OK 21IH2G0@I2*9H Class Designer
3+ Property - Object 15I
Alignment = 2-CenterFontName = MS Sans SerifFormat = KWidth = 130
5H Object: txtdateth Procedure: Valid I-3*1H
LOCAL nYEARIF This.Value#' / / 'IF SUBSTR(This.Value,7,4) > '1800' AND SUBSTR(This.Value,7,4) < '2200'nYEAR=VAL(SUBSTR(This.Value,7,4))+543This.Value=SUBSTR(This.Value,1,6)+ALLT(STR(nYEAR))ENDIFIF SUBSTR(This.Value,7,4) <= '1800' OR SUBSTR(This.Value,7,4) > '2743'=MESSAGEBOX('I-'15HD!H9I-',64,'')RETURN 0ENDIFIF !CHKTD(This.Value)=MESSAGEBOX('I-'15HD!H9I-',64,'')RETURN 0ENDIFENDIF
5H Object: txtdateth Procedure: LostFocus I-3*1H
IF This.Value#' / / 'This.Value = BE2TD(This.Value)ELSEThis.Value = ''ENDIFThis.InputMask = ''
5H Object: txtdateth Procedure: GotFocus I-3*1H
IF This.Value#' / / 'This.Value = TD2BE(This.Value)This.InputMask = '99/99/9999'ENDIF
21IG32# 16@GD'IC
I2DI@%"#1H2 B"8H! Ctrl + W
 HYPERLINK "http://kasem.sstplus.com/thdate.zip" Down Load 1'-"H22#C
I2



PAGE  


PAGE  201




6TVHJJz		,
4
`
|



FLtx2BLd
>
\
z






0ʺ6CJ OJQJ]aJ 56CJ OJQJ\]aJ 56CJ OJQJ\]aJ CJOJQJaJCJ OJQJaJ CJ OJQJaJ 5CJ OJQJ\aJ 5CJ OJQJ\aJ :6JL


@`$$If 0634ab$If`$a$(0Lv4F.Rlz8@zJL"2<Tv"\z*,޾jCJ OJQJUaJ CJ OJQJaJ CJOJQJaJCJ OJQJaJ 6CJ OJQJ]aJ 6CJ OJQJ]aJ K"2 V!!!!!!$If
Jz
$&|rLj . 2 p r !!R!V!t!!!!!!!!!J$f$t$$$5CJ OJQJ\aJ 56CJ OJQJ\]aJ 56CJ OJQJ\]aJ 0JB*CJ OJQJaJ ph 0JB*CJ OJQJaJ phjCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ :!!!""(")"3"D"M""`ZZZZ`\ZZZZ$If$$If\U
 0634ab
""""""""%#.#l#`xZZZZ`<ZZZZ$If$$If\U
 0634ab
l#m#~#######$H$`,ZZZZ`ZZZZ$If$$If\U
 0634ab
H$J$r%%%%%%`^^XXXX$If$$If\U
 0634ab$$$%
%%%n%r%%%%%%%%%%(((D(R(((((((|))))))))*P*j*+,+++H,L,h,,,,,2-4-------.@.R.h.l.../6CJ OJQJ]aJ 6CJ OJQJ]aJ 56CJ OJQJ\]aJ 56CJ OJQJ\]aJ 5CJ OJQJ\aJ CJ OJQJaJ CJ OJQJaJ B%%&/&7&Q&R&X&g&&&`LZZZZ`ZZZZ$If$$If\e 0634ab
&&&&&''''%'@'`DZZZZ`ZZZZ$If$$If\e 0634ab
@'A'F'c't''''(`@ZZZZ`XZ$If$$If\e 0634ab((()))*$If`$$If 0634ab*****p*r*******2+uooouooouooo$If$$IfF 0634ab2+4+B+f++++
,F,H,@.l.b/uooou@oooummm$If$$IfF 0634ab//^////00\00000(1*1^1b1111
22"2,2x222333,3\3n333344444556 66666674767B7R77777"8&8L8\88899&969:999j:n:::;H<R<=$==56CJ OJQJ\]aJ 56CJ OJQJ\]aJ CJ OJQJaJ CJ OJQJaJ Qb//00012x233444559:9;D<=R===><BzB|CCH&I====>>J>V>h>t>z>>>DBNBBB|CCCCCC
DDPDTD`DdDlDnDDDDDDD
EFEEEEE*F,FLFPFFFFGHGJG\GtGGGHHRHVHHHHHI"I&IIIIIII J2J4JjCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ 56CJ OJQJ\]aJ 56CJ OJQJ\]aJ L&I$JxOOQQR6SSSTUUtVVBWWWW$If4JJJJJJ"K$K6K8KKKKK L\L^LpLrLLLMM8M^M`MrMtMMMNNBNnNpNNNNN(O*ONOtOvOxOOOO<P>P`PdPPPPPPQQ(Q4QJQRQxQQQQ5CJ OJQJ\aJ 5CJ OJQJ\aJ 0JB*CJ OJQJaJ ph 0JB*CJ OJQJaJ phjCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ BQQQQR:RBRhR~RRRRRRRS2S6SjSSSSSSLT~TTTdU~UUUUU<VNVXVVVVVVW>WBWWWWWWWWWXX>XLXxXzXXXXXX"YZYtYYYYYYYYYZZZZZ,Z8ZBZFZXZ5CJ OJQJ\aJ 5CJ OJQJ\aJ CJ OJQJaJ CJ OJQJaJ TWWWWWWWWWXXXBXDXLXX4XDd$Ifu$$If0 0634abXXX(Y>YXYxY$Ifu$$If0 0634abxYzYYYYYYYYYZZ0Zuoooutooou|ooo$If$$IfFf 0634ab0Z2Z8ZFZ\Z^ZlZZZZL[[n^uXoooutoooummm$If$$IfFf 0634abXZlZtZxZ|ZZZZZ,[F[L[j[[[
\\>\B\\\>]\^j^n^^^"_&_j_l________`F`J`f``````aFavaaaaaaabbb6bPbtb|bbbbbbc*cTc|cd.d8dFdddddeeee5CJ OJQJ\aJ 5CJ OJQJ\aJ CJ OJQJaJ CJ OJQJaJ Sn^J`*c|cgj^k m"o"}.ʇaΫ$4FVfr$Ifeeeeeeeefftfffffff:g<ggggg,h0hhhLiNiTipiiiijjfktknnno`oo4r>rsstt&v8v|wwLydy"}}}F~L~`~p~~~@D&(6<5>*CJ OJQJ\aJ &0J6B*CJ OJQJ]aJ phCJ OJQJaJ CJ OJQJaJ jCJ OJQJUaJ J,.ƁftȂ؂P\j6Dʇr؏0@Hh
rvĒJ`zؔܔ,@5CJ OJQJ\aJ 5CJ OJQJ\aJ 5>*CJ OJQJ\aJ CJ OJQJaJ CJ OJQJaJ M8:b:ʗNj$.2<X^ڛx ~֝BVʞޞdxȠؠFTԡ@TJzΣ02tؤ<T
" 8¨6Nԩܩ,LCJ OJQJaJ CJ OJQJaJ ^«Ϋث.BTj~̬@Dƭح<Zh|,ԯΰdܱޱ6Fhj"6r³ҳ$(
FZµе $CJ OJQJaJ CJ OJQJaJ ^*TιԹֹܹ޹ZzغܺR\|46vĿҿֿ68pt02fjvDR (>BTbXft(*LZnCJ OJQJaJ CJ OJQJaJ ^rtڷ"`ZZZZ`ZZZZ$If$$If\	c 0634ab
"$>Hbnp`ZZZZ`ZZZZ$If$$If\	c 0634ab
иܸ ``ZZZZ`lZZZZ$If$$If\	c 0634ab
 "0:NRT6x`dZZZZ`XXZZ$If$$If\	c 0634ab
xzƼȼܼ"$8XZf½`Xl$Ifu$$If0 0634ab½Ľ޽~Ծ&hxPL$Ifu$$If0 0634abhj|¿Ŀ[ XdR$Ifu$$If0 0634ab(*JXbf*,Hjl"Lxz
6LNXXh$R$VlN@0JCJ OJQJaJ 0JCJ OJQJaJ  0JB*CJ OJQJaJ ph0JB*CJ OJQJaJ phjCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ B@$<>PHu$$If0
 0634ab$Ifnp~8d (2B8XZ"f&RDHPDT^b*.n|"N\Fnrz6CJ OJQJ]aJ CJ OJQJaJ CJ OJQJaJ Y(xb$,b$If6$x^bJL68 $*6(,@Bbd02F\nh|fh*:,FCJ OJQJaJ CJ OJQJaJ ]Fb~
 (,.> ":n<dv~2Hj~|2<Tlf*Blt,CJ OJQJaJ CJ OJQJaJ ^!$If$$If֞e_rJ 0634ab"BR`hv$Ifvx!$If$$If֞e_rJ 0634ab$If!$If$$If֞e_rJ 0634ab>JV^l$Ifln!$$If֞e_rJ 0634abTVdxZZ$$If\!
 0634ab$If
H~ZX$$If\!
 0634ab$If	2@BTlzutoooutoooutooo$If$$IfF
 0634abz|2Tusmmmm$If$$IfF
 0634ab`pZZZZ`pZZZZ$If$$If\	p0 0634ab
".0>LTd`pZZZZ`lZZZZ$If$$If\	p0 0634ab
df*\`^XXXXX$If$$If\	p0 0634ab\^lxKEEEEEK$If$$Ifr]zz 0634abE|$$Ifr]zz 0634ab$If*,
ECC$$Ifr]zz 0634ab$If8:np(>jl@	B			


h
j


^drv*
H
f



.8DRr^$ . D H b t    ,!j!!!!""""0#2###*$,$$5CJ OJQJ\aJ CJ OJQJaJ CJ OJQJaJ XG. *!,!-.d..|13~56b7f77`$$If 0634ab$If$$$$$$%&%%%D&F&&&r't''''''''''((.(((((()")&).)B)))))**B*T****+"+@+H+\+,.,X,v,,,,,,,--*-6->-D-T-X------..d.p.~..223:4X4444455D5CJ OJQJaJ CJ OJQJaJ ^D5b5z5555666(6L6N6d6666`77778888&8(84888V8^8n8v8888889`9n9999999h:t:::;<=2=z=====> >">*>>>>??8?J???@"@6@H@n@~@@@@AJARAAABBJB5CJ OJQJ\aJ CJ OJQJaJ CJ OJQJaJ X777886888X8p88889ooo$$IfF
y rr0634ab$If9l9n99999t: ;<">>@oommmmm$$IfF
y rr0634ab$If@@BCDVEEpGGbd4dbehf<giRkkl`$$If 0634abJBRBBCCDLEEFFFFnGpGGGGGGbBcTcccccdd&d(d.d4ddd^ebezeeeebfhfffffgg:gi*j6jjjvjjjjkk"kLkkklNlPljlllllnRnpnnnnnnnnnnnno`odooooo
pppCJ OJQJaJ CJ OJQJaJ ^lnpqrrtuw0{Z~2ށxHކzƋ&jppqq2q6q<qXqqrrtptt u"u$u&uuuuw$w2wNwTwjwwxx@xfxxxxx6yDyyyyzFzHz^zlzvz~zzzzzzz{${.{0{{{|"|4|@|X|h|||2}>}p}r}}~X~~HPf2@Pځށ
FRTVtCJ OJQJaJ CJ OJQJaJ ^tx"0FHƅ:<zމƋJL$&>Jv܏>L8@hjΑBD2J(*^`Ԕ֔"$*Fvxڕ"VCJ OJQJaJ CJ OJQJaJ ^J$*r&zV:Ļr0`bJNܘ:R6Rfjr@Vn؛,0PT\|JXf~(*x(DdП֟<>ޠ"BRr06^p
&lp̦Ԧ,xCJ OJQJaJ CJ OJQJaJ ^x>̪ܪf̫@fl$Vt|ޮ
26^J^DRZرڱ\lrt<T|~ȳ̳P^FRƶ̶DNxzظ&:Bj»ĻCJ OJQJaJ CJ OJQJaJ [Ļ&(^lz޽,Vd\rzƿп$:@VZpx.6PVpzJP|ӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼӼCJ OJQJaJ jCJ OJQJUaJ CJ OJQJaJ 5CJ OJQJ\aJ 0JCJ OJQJaJ 0JCJ OJQJaJ J6Fp~6Fdvz"*6BV:Ptprt&<`n:dj00JCJ OJQJaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ T&@xDZfj XfhjlprtvPTdjT$j~NZt2<>rjCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ T0^j8z
!##$`$$If 0634ab$If>Fnxbz 6Fb68Tdfhbdfhp24DFdPRjMCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ jCJ OJQJUaJ j^1CJ OJQJUaJ N.LX$*2B\l ~					
H
b





0
&
0
:
x
z




:<\^l߸jCJ OJQJUaJ jCJ OJQJUaJ j:SCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ Hl$H$:Xrz.Lt
&2HPZf|6@X`4@,.6"*VvjŹCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ S" , J h v     !.!P!h!!!!!!,"x"z""""""""#D#N#######&$T$$$$$$%F%H%J%%%%&& &"&$&,&J&n&&&&''`'b'd'ɽ$jCJ OJQJUaJ mHnHu0JCJ OJQJaJ 0JCJ OJQJaJ jCJ OJQJUaJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ C$J%**,-d/4v8
G{2X`$$If 0634ab$Ifd'''^(`(b(d(()@)F)f)|))**0*X*++,>,,,.-:-P-\--.p.z...d////00000033344445:5^5555
666686D6Z6f66666v88888929:9V999999::jCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ S:2:::::;;;J<V<l<x<<&=>=======:>L>Z>^>>?j????????@4@h@j@@vAAAAAAB6BDBBBBB(C*C4C:CFCnCCCDD.D:DBD\DDDDD,EFEREHH6HBHLM(M0M@MM*N^NNNNbOOOOOCJ OJQJaJ CJ OJQJaJ ^OOOO
PPPPPPPPPQ2QQQQQQRR,RRRTR\RRRRRRRRRS(SS6TNTZTX4X@XXXXXXXXXYY"Y<YlYYYYYrZZZZZZZ[:[X[[\\6\J\P\j\\\\]]]]jCJ OJQJUaJ CJ OJQJaJ jCJ OJQJUaJ CJ OJQJaJ S]]]]$^N^j^__ _H_\_b_|____``````a4a^a|ab.b0bXblbpbbbbcccccccdDdndd.e>eBehe|eeeeefffffg
g&gVgggDhNhThfhjhhhhhhi<iiiijj.j>jDj^jjjjkkkkCJ OJQJaJ CJ OJQJaJ ^kkkkkklJlhlm"m(m.m2mXmhmnmmmmnnnnnnnnooNoxoo@pJpPpvppppppqqqqr*r0rJrzrrrsssssstFtpttuuuuuuuvvFvHvvvvvw w*w6wPwlwwwwwwjCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ Xwwxxxxxxxyy>yXyyyz2zzzz{ {>{j{l{{{{{{{{T|V|h||||J}L}x}z}~~2~4~~~:J 0@`dԀǼ౥0JCJ OJQJaJ 0JCJ OJQJaJ 0JCJ OJQJaJ 0JCJ OJQJaJ jCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ A Tx TjĂԂ"Ppẵރ&NP`r|(2`pօNPbІ6bFtΈPp&ǻ6CJ OJQJ]aJ 0JCJ OJQJaJ jeCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ jCJ OJQJUaJ J&BFxĊ
0Lnpڋ܋Rt"D"D*L|,.0d*,.02•"*HXZpҖ>Jbė:LjVCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ SLhԘ$Thԙ68XrҚ6XjƛΜ&RT֝RbtvΞ$N$&:FԠܠ0JCJ OJQJaJ CJ OJQJaJ o(jCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ FHFHTdF
Z\J`$$If 0634ab$If&,`.<FHʢ֢:<ޣ02Фtv`bDH^`bȧʧܧr~Ĩܨ
.0vƵըjJCJ OJQJUaJ  0JB*CJ OJQJaJ ph0JB*CJ OJQJaJ phjCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ 0JCJ OJQJaJ Bʪ̪:<PR~ʫ .֬جfh`z(4^`v4jnBTpȱ0nԲܲ޲$0<Jr~̳0J5CJ OJQJ\aJ CJ OJQJaJ CJ OJQJaJ 0J6CJ OJQJ]aJ R8DhĴȴ6HԵֵ24JX&8TlTnʸԸָ:HRT&2:HR`޺DFVZht̻Ի".T0J6CJ OJQJ]aJ 0J5CJ OJQJ\aJ CJ OJQJaJ CJ OJQJaJ RTXprּH|ƽ&2<>Ҿ >@Ŀƿ@D(@^b|~X~.2n
"\Vp:`tx0JCJ OJQJaJ CJ OJQJaJ 0J6CJ OJQJ]aJ CJ OJQJaJ T 0JLdjrvd *2DJTVBT\(246LZrtbdp68|~R`hj0J6CJ OJQJ]aJ 5CJ OJQJ\aJ 0JCJ OJQJaJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ J
"@HVbn,.FdxDbR^x$0JL\hv<bv0J6CJ OJQJ]aJ CJ OJQJaJ CJ OJQJaJ X&(R\dv:bp02f,.026BD24~H|@Nnp
 jlǼ5CJ OJQJ\aJ 0JCJ OJQJaJ 0JCJ OJQJaJ jdCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ E<JFV^j*F`*f~,t~*8v^H^jlHPD^j0J6CJ OJQJ]aJ CJ OJQJaJ CJ OJQJaJ XpRT~"&240Nv$24Jd(DPx*\jCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ SJRnD`$$If 0634ab$If6FX "DLfvFHXh::B`h	&	(					b
d




H`,.\$






*@,JV$b|CJ OJQJaJ CJ OJQJaJ ]|^*6JPrVX~4f~
&0P"6R`z24Hf4nCJ OJQJaJ CJ OJQJaJ Yn\^rrv@D@J( * 2 4     F!j!t!~!!!""t"~"""""###$"$<$$$%.%<%V%r%%%%%&N&f&|&~&&&&&'4'\'n''''***N*X*d*t**CJ OJQJaJ CJ OJQJaJ >*CJ OJQJaJ YD4 &')*../x01B678H89>;b<z<?RAnDPQQQQ$If******++.+0+p+r+++++n,p,,-x-z-...4.N.t..../////00(0P0v000000101H1P11n3333(4H4~44445556X6d6n666666667787R7x7778H8\8p8888::>;;;^<CJ OJQJaJ CJ OJQJaJ ^^<b<l<z< ="===>>`>>>>Z?^?~????????@@B@`@n@@@@@@@@@
A2A<APARAXAtAAAAAAXBZBbBdBfBBBB,C.C>C@CBCrCCCCPDRDlDzDDDDD>EZEEE0JB*CJ OJQJaJ phjCJ OJQJUaJ jR-CJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ MEEFF.FFFFF$G&G(G\GG&H(H*H,H.HlHnHHHHI I@III&J(J6JnJJJJJJKKjKKKKKLL LJLrLLLLLLM4MjMxMMM~NNN*OvOOOO0PRPPPPPQQ8Q:QDQRQQPRVRj>4CJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ SQQQQQQ
RRNRPRRRSuooouoooumoo$If$$IfF	
 L0634abVRpRRRRTSZSrSSSS@TtTTTTTTPUbUUUUUVV2VNVVVWW8W:WBW\WWWWNXPXZX\XXXXYZYYYZZZZZZ ["[4[\[[
\V\X\v\\\\\]&]0]8]F]N]R]`]b]v]]]]2^4^H^`^^>*CJ OJQJaJ <CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ USS
S"S2SRSTSSST
TTToomoh$$IfF	
 L0634ab$IfT&T>T@TDW\WLXomm$$IfF	
 L0634ab$IfLXNXPXZZbcclm2nnquvv"x~$If`$$If 0634ab^^^^__R_\_b_v________`F``aa:aTaaaaab(b@bTbbbbbbbbb0c<cccccccdddddde,eje|eeeff,frffffffg:gFgXggggggh:hXhvhhhhhjCJ OJQJUaJ >*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ Thi6iiiiiiijj8jBjjjjkk*k:kFkxkkkkkkk&l,lNlnlzllll@mTmvmzmmmmmm2nDnVnnnnnnnoo&o2oPo`olotooooooo.p:pdpfphpppfqhqjqlqj[CJ OJQJUaJ j!MCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ NlqnqqqqqqqnrprrrrsssJslsvsssssst$tBtLttttttu<u>uRuhuuuuuuuv(vBvlvvvvvhwlww"x*x,xxxxyyHylyzzzzzLzhzzzzzzzn{p{jvCJ OJQJUaJ jCJ OJQJUaJ >*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ Op{{}~J~~~~~~~6V`x
܂(24Zrƒă„ĄƄȄʄ
&F\lzԉ,0dHRȍ@X\jy~CJ OJQJUaJ jCJ OJQJUaJ >*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ O(`m@$$IfF	
 L0634ab$Ifҏ&@D@B\`’ƒ @Tjrޓ,>D`fh•8Dޖlҗ*2@RZj̘ʙ(6@L^p|>*CJ OJQJaJ >*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ U ",<jl,:>@Loomox$$IfF	
 L0634ab$IfL\z|șʙfoommm$$IfF	
 L0634ab$If|ؚ">ڛ
(FHp~ȜҜ
 :Zlڝ(n,>D`:B8fr 0:4X`,DhjCJ OJQJUaJ >*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ P>Hhrا$4DRĨDNLPv֫ث
.8@
dȭحPZ̮@l~
Vpΰ4ƼƼƼ>*CJ OJQJaJ >*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ jCJ OJQJUaJ jCJ OJQJUaJ J4>J<V`l(8Nfnxij4>bhδJ`ض .\̷*<H̸
HCJ OJQJaJ CJ OJQJaJ >*CJ OJQJaJ >*CJ OJQJaJ TfhX^$If`$$If 0634ab&hֺ̺vx:<¼0NZ\fHnprprtvx~dt
6BLVX
.8LXlx(Tfj3CJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ Sfr0BJLlvjljlbd
.04RT@Bbdx|>*CJ OJQJaJ >*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ T6JT^@PXx"$$&8R\px2Htv >VXXZ\^brbd~³³Ӧ³jSCJ OJQJUaJ 0JB*CJ OJQJaJ ph 0JB*CJ OJQJaJ phjCJ OJQJUaJ >*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ A.PZdf.8Lf4NtBj4DT$.>ӳjCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ jCJ OJQJUaJ 0JB*CJ OJQJaJ ph 0JB*CJ OJQJaJ phF"P$dft6,4Nl2:dx DFHԺjCJ OJQJUaJ j!CJ OJQJUaJ jCJ OJQJUaJ >*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ Er*DFZ2)+-2$If`$$If 0634abHZ ,@:<:`~| 4FNft|$<BTpzFHNlv
,6`(8FHVX^x>*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ >*CJ OJQJaJ Tx$68p46THPhj*,fv			

n
p


xz\nʿʿ0JCJ OJQJaJ 0JCJ OJQJaJ >*CJ OJQJaJ >*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ K
4
L
Z
b
x



*h~L\r:<:<*@F|4Bh$<F <f&Vl&>*CJ OJQJaJ >*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ U&XZprx:<V^6R02HfLN& ( : < R T   V!p!x!z!!"d"~""""#*#@#F#h#r####6$8$N$n$$$$%0%@%r%%H&L&&&&&D'F'0J>*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ XF'''''''((H(R(x((()
)Z))))4*6*******&+(++++++++,,,6,-*-4----.$...d.v....../"/8/J/b/l////:0R0Z0x0޻5>*CJ OJQJ\aJ 0J>*CJ OJQJaJ 0JCJ OJQJaJ 0JCJ OJQJaJ 0J>*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ Dx00
1>1b1v1112,262222
3.3D3R3304<4^4n44444 5V5h5x555555626@66D7788>8X8Z8r88888889*9L9^9d99999J:R:컯5>*CJ OJQJ\aJ 0J>*CJ OJQJaJ 0J>*CJ OJQJaJ 5CJ OJQJ\aJ 0JCJ OJQJaJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ @2<48;ADpGKpMrMjdyP~TL*`$$If 0634ab$IfR:t:::::::;;0;N;P;;;;;<$<2<4<r<<<<<<<<<"=*=D=X=Z===
>>(>>>X>f>r>t>|>~??????@@A"A:A<ALAhAAAPBRBBBDCFCCC8DZDDD0JCJ OJQJaJ 5>*CJ OJQJ\aJ 0J>*CJ OJQJaJ 0J>*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ IDDDDDD4E6ELENEPErEEEEEF F"FFFFFnGpGHHxHzHHHI&InIIIIIJ,J6JJJJJJJJ
KK&K2K<KFKPK`KjKKKKKKKKL
L~LLLLLLLMM(M߼߼߼߼߼߼߼߼߼߼߼߼߼߼߼߼߼߼߼߼߼߼߼߼߼߼߼߼߼߼߼CJ OJQJaJ 0J>*CJ OJQJaJ jCJ OJQJUaJ CJ OJQJaJ 0JCJ OJQJaJ 0JCJ OJQJaJ J(MDMrMMNfNzNNNNNNONOvOOOOOOP:PNPZPpPPPPP Q6QBQR.R8RRRRRSS<SFSNS^SSSSSSSSUVV$VBVPVVVWWBWNWWWWWXXHXTX
YY,Y4YTY`YYYZZRZ^ZZZZZ[[N[Z[[[CJ OJQJaJ CJ OJQJaJ ][[[\\P\Z\`^h^^^d_j___Ta~avbbHcfcpcccccfdjdddddeeeeneeefrfffffffgZgggggg
hh8h@hhhhhhhii&i^i`iiɺɮ5CJ OJQJ\aJ 0JB*CJ OJQJaJ phjCJ OJQJUaJ 0JCJ OJQJaJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ Di
j j*jbjtjzjjjk<kRkZkdkrk
l*l@lHlRl`lmmnfnhnznnnoRodoooooo
pp,ppppppp$q<qvqqqqrr0rFrLr\rjrrrss,sHs\sssss,t@t`t~tttDuFuuuuvvvhvjvvvw&w.wDwzwwwCJ OJQJaJ CJ OJQJaJ ^wwww x0xVxXx\x^xxxxxyyyyyyyyyyz.zDz\zdztzz{|&|.|:|T|P~\~j~~~~~~2:DR$0fpȀԀ p~ǼǼǼ5CJ OJQJ\aJ 0JCJ OJQJaJ 0JCJ OJQJaJ jnCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ EȁNbЂڂRTvxv|~ (*24ZvƇȇ"$Ј4HXj$<@pùê0JB*CJ OJQJaJ ph>*CJ OJQJaJ j>*CJ OJQJUaJ 0J>*CJ OJQJaJ 0J>*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ CpƊ.Lȋ>J\Ȍȍ6DLp BNbjސ&*8@`t2>RZΓ(:PZbzjCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ Sjv–ĖƖʖ(
 HBNbzԙ(Njjț$Bb~
|̝ܝ
 2R\vО2j|ƟΟ4BbjCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ Sbl$4Llnʡԡ0ޥ0LĦΦ(.0LZ8:Vrtv2֭حNrx&Zlrްdfȱ5CJ OJQJ\aJ 0JCJ OJQJaJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ Pȱʱڱhܵ4>Tܶ,ҷpθ&0FlȺкں^fp:BXn<FPb.PԾ.JLNȹj>*CJ OJQJUaJ 0JCJ OJQJaJ 0J>*CJ OJQJaJ 0J>*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ GԾ,.~f3r|$&$If`$$If 0634abNĿƿȿHJ(Vf2R^.N`(<Vht*z$\xNj|5CJ OJQJ\aJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ 5>*CJ OJQJ\aJ 0JB*CJ OJQJaJ phj>*CJ OJQJUaJ >*CJ OJQJaJ >:FPh ^`
"P\n.FlBRn&8hB^n~(.0d024j2
CJ OJQJUaJ jCJ OJQJUaJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ N46Pp(:``l<H,VXZZ\^`bx>4ZlxDd4Zlx|ǷǪǷj&5CJ OJQJU\aJ 5CJ OJQJ\aJ j5CJ OJQJU\aJ 5CJ OJQJ\aJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ jCJ OJQJUaJ <4Zlxj,N`r&R\nXdv dBnxBTv$6RHVPfz$JLd (5CJ OJQJ\aJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ T(>Lv~
&JLdJ`rZ~
0BPTRd
(b 2>x0JCJ OJQJaJ 5CJ OJQJ\aJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ O:"L  T&&j'(d-N/:1
5*6v6f88<C4QZS,\d^$IfRdpf	|								"
<
J
R
h
t







 




:4>BRZvDF
&Jb (<0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ 5CJ OJQJ\aJ 0JCJ OJQJaJ O<d&.Vx:Pv,2T
(.r~b$Bx : T d |    $!&!~!!!"("6"R"T"Z"h"""#
#B#V#######4$8$F$N$$$$CJ OJQJaJ CJ OJQJaJ ^$$%%(&*&P&T&h&&&j'''(((((((((((b)p)))))))) *"*****+6+R+T+x+z+++++@,B,Z,\,,,,,J-L-b-d---R.V.L/N/\/v///4060001181
50JCJ OJQJaJ 0J>*CJ OJQJaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ O
55555&6v6 7"7778828>8d889 9j999999::2:D:p:|:::::;;;;;;;;;;<<<< <l<z<<<<
=4=V==>^>`>>?J?V?^?h?j?????H@T@ƼƼ>*CJ OJQJaJ >*CJ OJQJaJ jICJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ JT@@@@@*ARAAAAAAABBpBBBBCbC~CCC&D<DlDzDDDDDDvExEEEEEEF~FFFFFFG0G@GDG`GnGGGGG6H:HBH`HHHI>IzI|IIIIIJ0JLJjJJJDK^KrKtKKK>*CJ OJQJaJ >*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ QKKLLL6LlLnLMMbMdMMMMMN&N6N8NNNNN O$OHOJOVOOOOP,PRPbPlPPPPPPQ&Q2QrSSSSSTT.T2TTTTU\UbUUUUVV"VhVzVVVVWxWzWWWX0XXX>*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ 0JCJ OJQJaJ 0JCJ OJQJaJ OXXX(Y0Y8Y|YZZ`ZbZZZZZZ[*[~[[[[\,\B\R\|\\\]]]]]^^^^f^^^_4_t_>``````abb$b&b2b4bRbVbtbxbbbbbbbbbbcczccddbddddde0e0JCJ OJQJaJ >*CJ OJQJaJ >*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ Pd^f^b`fivxxyvz}Jl$,$If`$$If 0634ab0eleteze|ef2f^fffidjfjtjvjjjjkBlHlllllmmmmmmnnDnPnnno,ooppppqqqqrzr|rrr`sbsvssssssXt\tttttttt"u2uDuNuXubutu|uuu$vXvbvvvvvv:w0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ X:wfwpwwx4xLxxxxxxxyyy(y>yjyyzz zNz\zfzvzzp{
||n|p||}}~~0~B~~~\dLNpʁ<Lp|ltlօFJlІ҆(*և>*CJ OJQJaJ >*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ TTVˆʈވ0RflBL`jBVʋ̋ "jľ، $*ʍ8Nt&4&Jdf".N\jJCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ S,.:>BP^`KdEEEEEKp$If$$Ifrp0634ab`lpEd$$Ifrp0634ab$IfȍʍPtECC$$Ifrp0634ab$IfN֚XxЛ@Μ`t|ڝ
&TҞԞ.BJ@BTfrΠ,dƻ0JCJ OJQJaJ 0JCJ OJQJaJ jKYCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ Jtz`$$If0634ab$Ifʡ"$b"Lԣ.NV^`ҤԤ*FTVhjʥfhxz
V~Ҫ
,.DFnĬάج<xƭȭ T|аҰ0JCJ OJQJaJ 0JCJ OJQJaJ >*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ P.:$Ifu$$If0 r0634ab:<p*:8~6	v`$$If 0634abҰHP^`αֱn*8@xܳ08µֵ`bȶжFX`ܷ"J$6DFnι 0PblrʺH½ĽDFf2Ltv5CJ OJQJ\aJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ Qv:^^b
.@BTv~ 8x"$&N6^xz24|~&(&DFH|H߼jCJ OJQJUaJ 5CJ OJQJ\aJ CJ OJQJaJ CJ OJQJaJ 0JCJ OJQJaJ 0JCJ OJQJaJ JHJLNPfhhj|
*6V`4FR
2DP 2>^f*6\dx0JB*CJ OJQJaJ ph 0JB*CJ OJQJaJ phCJ OJQJaJ CJ OJQJaJ jgCJ OJQJUaJ jCJ OJQJUaJ F"|
(4BHVp6LR`
,N`lJX^v *>Hfvv.0T^jrPl5CJ OJQJ\aJ 0JCJ OJQJaJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ M $*,l:<RRBf2lprrtvxz8FRnƻjCJ OJQJUaJ 0JCJ OJQJaJ 0JCJ OJQJaJ j}zCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ jCJ OJQJUaJ Dzmm$$IfF"  	0634ab$If&hj
LlDVvx ,N$:N^n~,.Jj$DNP *Lj5CJ OJQJU\aJ 5CJ OJQJ\aJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ N
&jPRlFHVxuooouooouooo$If$$IfF"  	0634ab.Xuooouooouooo$If$$IfF"  	0634abXZj>@Duoooumo$If$$IfF"  	0634abfh&!#n&>/513.8;<V?|?A$If`$$If 0634ab
.$4FP$@Xbx@RT0JCJ OJQJaJ 0JCJ OJQJaJ jUCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ j+5CJ OJQJU\aJ j5CJ OJQJU\aJ 5CJ OJQJ\aJ 5CJ OJQJ\aJ 202prBDv	(	<	h							
z





rtvxN\x
2
V
f
|




*:PnƺjCJ OJQJUaJ 5CJ OJQJ\aJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ jCJ OJQJUaJ jCJ OJQJUaJ D 6Tbp2d "Pf*|$4R(6f0HXƻ0JCJ OJQJaJ 0JCJ OJQJaJ j
CJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ JXh>NV`(FR(4HzX|FRvV       !&!V!X!!!""."0":">"N"P"""######v$$$$$$r%t%&&j&&&5CJ OJQJ\aJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ T&&'n''''(0(R(p(((((),):)Z)t)))))*8*D******+$+>+H+P+f+++++++,,",:,F,2.<.\.p.../</22(2\2b233333333>4\444555555N6f666&7677777&868<8X88CJ OJQJaJ CJ OJQJaJ ^88899
999::0:2:::::;(;;;;;;;;<4<<<<<<<=>=== >">N>^>>>T?V?z?|???6@H@@@
A A&A(AAAAA,BNBbBnBvB,CHCVCCCCCDD>DHDDDD0JCJ OJQJaJ jmCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ NA0BlB,CDEFHIJKLM2M(OxUVjVXX,YZV[[&]f]]^_`aDDEEEEEEF$FFF$G.G6G@GbGzGGGGG H$HHHFIHIIJ*J:JNJRJJJJJJKKKKKL*L>L@LMM
M2M@MRMTMMM:NDNNNNNOVOpOOOPP"PLPPPPǼǼǼ0JCJ OJQJaJ 0JCJ OJQJaJ j%CJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ JPQRQjQQQ"R:R~RRRRJSdSSST.TvTTTTFU^UxUUUUVjVVVVV|WWWWWW4X<XXXX:YYYYY0Z<ZNZjZZZZ[[.[P[d[p[z[[[2\<\F\Z\\\\]$]v]]^_
__,_r___0JCJ OJQJaJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ T__2`4````````
aaBahanaxaaabTbbbhblbvbbbbb,c@cBcRclccc~ddddde6eef2f<f.gPgbggg4hhhhLi`ijj j:jXjZj\jpj|jjjjjk kDkLkkkkkkk5CJ OJQJ\aJ 0JCJ OJQJaJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ Paabclccdd8ehjjmmmBn|nXoooRqBrxrsxxzz@|~k l"l`lplllllllmm^mnmmmmmmPn\nnnznhooooRq|qqqr,rDrXrxrrrPsRssss
t`tbttt>uZuuu0v>vvvvvvvw:wwwwwPxRxxxxxxxyy2yByVynytyyyyyyzzz:zRzpzzCJ OJQJaJ CJ OJQJaJ ]zzzzz{{{{{{{{{||(|*|<|@|H|N|||||||||2}@}L}^}f}v}}}}}}}~Z~f~~~~~,.46(:BDr̀$&\^0JCJ OJQJaJ jCJ OJQJUaJ CJ OJQJaJ jCJ OJQJUaJ CJ OJQJaJ O~.r|ƍ.ʗ̗ΗޘȠ`$$If 0634ab$If$6lnx|,Bpr܃ރ\^"$:V`j
2Dhކ&8HLPTpzȇ҇RdʈjCJ OJQJUaJ >*CJ OJQJaJ >*CJ OJQJaJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ Kʈ:Lڊ>PZ|֋*>NƌތRƍ0RZ~ ,.@hnΏ"BTvސ
:<>r@BƼ>*CJ OJQJaJ >*CJ OJQJaJ j!CJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ FBDFHtҒԒ4ēFr~Ɣ>JTlvҕܕ,<dnƖȖ :V̗Η0<jxܘ
>bܼƱ0JCJ OJQJaJ <CJ OJQJaJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ jCJ OJQJUaJ j'CJ OJQJUaJ EDPT~ʚښ "RTzěޛ,:<xʜXhp,v4Ÿn~Ƞޠbd 0JB*CJ OJQJaJ ph0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ jCJ OJQJUaJ jAJCJ OJQJUaJ C֡@T\^`bd46HNZ^npvޣ*>FHJ̤Τ8BJ^ڥ.@$,Bڧ
@d
ɻɥɥɥɥɥɥɥɥɥɥɥɥɥɥCJ OJQJaJ 0J>*CJ OJQJaJ 0J>*CJ OJQJaJ CJ OJQJaJ jCJ OJQJUaJ  0JB*CJ OJQJaJ ph0JB*CJ OJQJaJ ph=brvJ
Щx`Rְ0ڷh,Tr̩Щ.<DN̪ Ϋܫ.LVXtXZXZ\^`t~4V\xN`zް8ޱ.$jwCJ OJQJUaJ j&vCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ jCJ OJQJUaJ jtCJ OJQJUaJ H$.jzķ̷طڷ^`ʸָtvp8:пܿt,0 4*8FV"Hƺ5CJ OJQJ\aJ 5CJ OJQJ\aJ 0J>*CJ OJQJaJ 0J>*CJ OJQJaJ CJ OJQJaJ CJ OJQJaJ I*,p0<Vv:46J\lNP
@dJnƹƪƝj2CJ OJQJUaJ 0JB*CJ OJQJaJ phjCJ OJQJUaJ jCJ OJQJUaJ 5CJ OJQJ\aJ 5CJ OJQJ\aJ CJ OJQJaJ CJ OJQJaJ >6
4>
`$$IfiJ0Q634iab$If Tx "$&*,`,.0246j68:<>R\~
4H
2>n<R\ܞܞ5CJ OJQJ\aJ 5CJ OJQJ\aJ jCJ OJQJUaJ jSCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ jCJ OJQJUaJ j:CJ OJQJUaJ 9
2<<l0Vb&N\Jpf&0npfh8^*24h468:<d
 (@`ltƹjCJ OJQJUaJ jCJ OJQJUaJ 5CJ OJQJ\aJ 5CJ OJQJ\aJ CJ OJQJaJ CJ OJQJaJ IP^fh~.0\^TV0JX.0hjlnp߹j{=CJ OJQJUaJ 5CJ OJQJ\aJ j) CJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ Gprt,4LVfpP6<(L ZܸjpCJ OJQJUaJ 5CJ OJQJ\aJ 5CJ OJQJ\aJ j\CJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ jCJ OJQJUaJ jjWCJ OJQJUaJ >PTxjlnprtv,^br&:Rb|6>JNPRTƹƬj{CJ OJQJUaJ jvCJ OJQJUaJ jCJ OJQJUaJ 5CJ OJQJ\aJ 5CJ OJQJ\aJ CJ OJQJaJ CJ OJQJaJ CTVXZ&
@d8Rbp":>Vpt JLNPRTV~ŹŹܹj	CJ OJQJUaJ jCJ OJQJUaJ 5CJ OJQJ\aJ 5CJ OJQJ\aJ CJ OJQJaJ CJ OJQJaJ jCJ OJQJUaJ jICJ OJQJUaJ >NZ8~bTV\	
4

2>l8r $.|@J^bFRz>Trtvxz|"6j~ LVj8>XƹjCJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ 5CJ OJQJ\aJ 5CJ OJQJ\aJ IXh$.<LX` *br2Bvz	4	>						


P
d
t




$*4JT .HRǺjCJ OJQJUaJ jCJ OJQJUaJ 5CJ OJQJ\aJ 5CJ OJQJ\aJ CJ OJQJaJ CJ OJQJaJ I
D
^
p




.Xh>
0@PZ@P`b<Zb~ӹ5CJ OJQJ\aJ jܬCJ OJQJUaJ jiCJ OJQJUaJ jCJ OJQJUaJ 5CJ OJQJ\aJ CJ OJQJaJ CJ OJQJaJ D(*t~024h68:<>l "
68`dh8NjCJ OJQJUaJ 5CJ OJQJ\aJ 5CJ OJQJ\aJ jCJ OJQJUaJ j=CJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ ?N>^|~
   B L p r      !*!L!l!t!!!!
"""B"f"#####J#x######"$<$R$z$$$$$$%%%%%%&:&&&ƹƬjPCJ OJQJUaJ jCJ OJQJUaJ jCJ OJQJUaJ 5CJ OJQJ\aJ 5CJ OJQJ\aJ CJ OJQJaJ CJ OJQJaJ Ar  !!#X##&'^(>)J*+4,,&-R-../@////"0D0l0001&&&&&'$'>'''''''''((V(^((()
):)>)@)t))B*D*F*H*J*p*|****+8++++++,4,@,n,,,,,,,-"-R-----ܫ5CJ OJQJ\aJ 5CJ OJQJ\aJ jCJ OJQJUaJ jqCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ jCJ OJQJUaJ jCJ OJQJUaJ >--..........@/L/b/j/z/////000l0x0000011$1,1<1J1111111.22222223233364R445T5X5b5r555666666P7l788"8$888p9r99999:j$CJ OJQJUaJ jCJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ S1N1p1112.222236l7r9&;?D?
@rABD&EdERFF4GGGG$If:4:h:r::::;$;&;;;V<X<b<|<<<"=>=j======>>$>,>\>d>r>>>>??B?D?????@rAAAAAB(B@BBBBB
CC8C<CzCC2DNDxDDDDDDE@EbEnFF4GRGnGGGGrHHHHIdIfII"K0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ YGHHH H0H@HrHHHHZXZ$$If\i 0634ab$If
HHIIIIIIIIJ0J2J@JlJnJxJJJJ`xxhdJ$K$L$If0t634a$IfK$$IfJJJJ$IfJ$K$L$If0t634a$IfK$JJJ
K"KKKKKLTM`ZZZZ`<ZZZZ$If$$If\i 0634ab
"KBKZKKLLLNL\LxLLLL0M8MMMDNNNNO\OOOO"PnPPPPPQQQQQR
R&R8RRRS<SDS`SSSSST@TlTTTTT
UU$U<ULUNUPUUUV,V:VVV|VVVVVWWWWWXXXXY0JCJ OJQJaJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ TTMVMlMMMNN"N0NDNN`XZZZZ`ZZZZ$If$$If\i 0634ab
NNNNO^O`OOOO$P`ZZZZ`ZZZZ$If$$If\i 0634ab
$P&PDPTPnPPPQ
RS<S`(ZZZZ`XXXX$If$$If\i 0634ab
<S`SSDTlTUPUXnYYY]^_$``anbkJlVn+pr6ssv<w$x~b~YYBY`YlYYY\N\]]]H^^^f^^^^^H_\_p________`"`$``````aahava|aaaabblbl"lHlJl|llllm"mZm|mmmFnHnTnrNrrs4s6shsssvNvvw:w<wwwwww0JCJ OJQJaJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ Twx"x>zTzdzzzz{:{J{p{{{{{{| |6|N|t|||~2~`~b~~~~"BTV`b,.ֈ:Vp 8:$&n@np(*ƕȕ^`ؖ0JCJ OJQJaJ 0JCJ OJQJaJ CJ OJQJaJ CJ OJQJaJ Tb~~.؈:ғpjt,`
ؖ68z֗ؗ(DRTR`j.>@xТ$4<JTẒ"@hޤZ\XZrڧܧbf.0BVpt̩$.DFCJ OJQJaJ CJ OJQJaJ ^*,^`ڬܬެ°аް
&4DFHJʸظ(2@n|(4`t$P\̼2Bn~,Xf̾ھ>JvCJ OJQJaJ CJ OJQJaJ ^ƿ,:VdrJTb,@|Vf6D*&4lx&2*6z".r&jx^pln2vxCJ OJQJaJ CJ OJQJaJ ]2x|.&bJ"$&(*h]h&`#$xztvxz|
 ,$^&bj8JL
 "(*饢0JmHnHu0J
j0JU&0J5B*CJ OJQJ\aJ ph#0J5B*CJ OJQJ\aJ phj1CJ OJQJUaJ CJ OJQJaJ CJ OJQJaJ jCJ OJQJUaJ :/
01h. A!"#$%n~
B"N08?մ`>PNG


IHDRZDPLTE3f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3f?_?_ߟ?_߿?߿_߿߿߿߿߿𠠤bbKGDHcmPPJCmp0712HsIDATx^ q:yMf\lAl'rm7p!,qc+O-ȯ.~X+t![|RG3IS=r(In%|<T2/G=ZuVJ:٨5ROYlk:JN~QUnĿٮ͢*}f>_||o
vT&剻UZ[5
kJU9,[S5M
hBV_E^vqѺ|ySpvBbWQ'-V_p;7;i3/>S/5SG>~n//T‹?uyǁݮ;<+[so;.kJIWIiWY_
=:\w.̓{B,s{Lԋjv/	7#*>4AhINRBKzjI8G\" vq!WA	q6`GIg*ڋ|qEtEx3|!ތ!^	\7#@Wk6+;ͅx3x%f&~H]fyt !	̄8J#!b3ɇG"#lwZWi/qM@|<O`[|[Q^dIx6nψK6A%Lmz"p@S&pxgN‹ܓE܄UGH7uqZ{ė]8pNfbc\! <e߉L{?6na,"ւq
}xGڠ>A_Hҭ	Fͅx5B`u!>oKɭ[@
VfyݍPzTJrJ21JU彾_{^Nhy\*SqD8bWܰRJ\.M֒t6:
nsk*KP}Ff%&);5QWPNxlB8	ʮ+I!=am9q cGwTYw=Qj-mx=J!.5?FBn$
4e؈F)DVm(御g63L!|H3#J݀KHͺ4~bؔ].J0I*CC5ST^/ȓ+:H$,UVevI3#Dž7>2Ri^9HQm~'[ˎء'#7dtĆđJ
QJ]pj׍]
Y8rv\6h74/ϚWA 6O8Ux[~qrDU>E]exʼnJpxIpDp!ϗew
~Db/2 	S
W΋8R%H!4pq"U9;.P8
CΎFj@Д6/aTLB	$܍Q1߿%Hp(fRjUp'	E3hlԧ/I|*<39#	CĜxxs"8_Rq;3wZ3OFn
bQ6Oyi.I\B=+O9||]`Wđ+|fEc٦#7Dm5yUD:=*=DpfBP	q2:bC!NGnv}C:S7!0{t9%yi?JQr`SIENDB`^1Dd1

SAE:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7001.jpg*#I2%2*R0;1kȸbA~/DF/;1kȸbA~JFIFC
	




 ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?ˢjQY%/I:²?e@9,.d`%C3Yel.Uź/
l򺵩qW裇H s[e@W_dHb5PM՘ڽ+Z}KWmͶ-7N~Q9>T9F579Yr+&('m³֗M"3pT!qqCGsz_U'mYr+&+_$q$R68'Z/m96Xn	N\er7=B[vavZ'mYr+&*M$ɨ5&e `.N
ug$22s(x9!{<?o.˿WMQ.Oq՚͢%k-…|pG=jZ_˓_6G,?oO{~a\
ɷ
?e@>Ge@\
ɷ
h{~a\
ɷ
?e@>Ge@\
ɷ
h{~a\
ɷ
?e@>Ge@\
ɷ
h{~a\
ɷ
?e@>Ge@\
ɷ
h{~a\
ɷ
?e@>Ge@\
ɷ
h{~a\
ɷ
?e@>Ge@\
ɷ
h{~a\
ɷ
?e@>Ge@\
ɷ
h{~a\
ɷ
?e@>Ge@\
ɷ
h{~a\
ɷ
?e@>Ge@\
ɷ
h{~a\
ɷ
?e@>Ge@\
ɷ
h{~a\
ɷ
?e@>G3pXhY<3EilxjUq/{^gFGZZwicutpa|jFPzB9Wh՟Śgih"<r8R}{5uԮ:rO@|Crlm
냞Z?
]gЍc;r.vVlim*2q
~ǣo&݂9,`ze׌r`q?QVUT+$E;z*ӥ~Vy$jS6⧞i\4,KHk܌E2QI$b_؞*qqO^~bxOs}nS!rͭ9;Y{[y!sHXd`<]4,t<Fvg^E]胕y&lŜtBZ6C.{ļvkjLnuv@f>>9O3 W[Fy3KԓMO]UzuSTy"zTO]Uzu}ze|Õc>???"^E^_0G'ϏEO*DȩWQGתv_9Q?S=w|*UQꝗTy"zTO]Uzu}ze|Õc>???"^E^_0G'ϏEO*DȩWQGתv_9Q?S=w|*UQꝗTy"zTO]Uzu}ze|Õc>???"^E^_0G'ϏEO*DȩWQGתv_9Q?S=w|*UQꝗTy"zTO]Uzu}ze|Õc>???"^E^_0G'ϏEO*DȩWQGתv_9Q?S=w|*UQꝗTy"zTO]Uzu}ze|Õc>???"^E^_0G'ϏEO*DȩWQGתv_9Q?S=w|*UQꝗTy"zTO]Uzu}ze|Õc>???"^E^_0Gi^&k;L!ܭϝUuV3(ƕ)<IZj),GҸOB#^^/R?k9Oq[EB|3_@$QSP1hd߹jU'љH:.L9Avqjvw>NqkrcNH@rr'/[ϝJR$.cw[hrAm O5b v$(83Ҳ-Ղ[,pyDse cWZjO4s4Fi	h8ׯh!ͼ B+C0<zԵ]{qoM꒻!L	.rTR)|/RT(V9cwCGoo$6R&X&wheT,)(oٲA$F
:X½+y
Ā2"B#0rhV	eFuzr)E
վm[Օl#*|6P2j((d߹d߹6G?6G?(d߹d߹6G?6G?(d߹d߹6G?6G?(d߹d߹6G?6G?(d߹d߹6G?6G?(d߹d߹6G?6G?(d߹d߹6G?6G?(d߹d߹6G?6G?(d߹U| D[TGe
*QKs==Kǔ(9sޤƨ[GzGz4Uo	_j	_j,U'~p>'~pEVƪn/mZVɼ(@'
}OB#^^/R?hn?A7-"sҀ
)$t6FTE:j/m.Z	U`) `[=(z(
)4JJbXK'ӂҟ@Q@Q@Q@Q@R{~Vv]4Ip~
wN^?EV?GN^?EV?GN^?EV?GN^?EV?GN^?EV?GN^?EV?GN^?EV?GN^?EV?GN^?EV?GN^?EV?GN^?EV?GN^?EV?Hͭ"o܅Q~@229G889EPD7Q
Vڇ~
Y?{P!4U}J4˫—Ct$)#5b<1[˺9TqFo%)VS(ɷڠ9A
>i.7NY>X02ntc&Җh[$/g
+v6uOm%Nèx}:EW=Կ!/Zkozj_-t5.F_Sv'*(?po
*[EE
Q8~O쪲$$
{}g%͝ա[{[(#z7{CQ"ϊh 6~AˌdniAw+9>P䒧^O
TEr<%g3"<gOW5Jh5xtDDaES(fnʞ89ГLFv$l­Ƃ8
I4_y6v3>
89<qRi^@ZH@lJbr	(((('PCW+t-J0xIsc'נj
qMvbY/$,\ NpA^	E؉Bo,&dg\3syAj7u4*HV.Tc,Cro~R1j	e5Y-爉]rIc<=xm’MKu♮ncnUl.i1Uf9Nbt"E,fejH+n&F?tA5HhVBZ5bBI[
<e͛8fdKЈl @amZl,e"p/3+ȝ@У.{
;n#+ Q'r:u*lk}eqm-X+p.dۜwXդ\(Q@Q@Q@Q@Q@Q@Q@v?9`?$:_|V8HksoQT_7*B(?po
(?\CJ˽ܽ/\w*z(!Q_Q
fWBj0
QT5?¶g;xY[jI'OI".1d`CNe
O/jnQ@GA}GS(*??[2MO;am1?%4*??V]>LIL#!ʩ# `δk3FWOJӯ)w]B5.F=`q?QGiR'*(?po
(/ikDUh%(_J+cm RdB vah-
&q!~c9_^9⚷lϟ;?{ӡ@YZ]FVH,pEsڝyZPAP1u
J>Ӹ*$<LD,+󁒿P8h(((/~#1
H$`ʮi?5}mM+@TяW|+/?w~zsO/MO/MA4	Iai#u S?O/MO/M@R9mĩ8??]C&ON+L*KKhgCD??@i?4i?5"'??O/MO/MG<.6.D4Ost'}/G}/Q!

x\l]IKKhgCD??@i?4i?5"'??O/MO/MG<.6.D4Ost'}/G}/Q!

x\l]IKKhgCD??@i?43VJ
J߹p>qinBdqޕ]N=3LnoԓO22J&bZ7_/h*#\4řNI>k֌7,pMQU[V8M쌉1ZI'<ҫm>Z>Cb)QdVlk뷹am
FYU0ʥ'!Qw?G?@p%-6;ʹ<'7gV^O}lUR9?R9?€(sV2\M
n̐J('GeI?-K
?-K
Ӭ>5_?-(ۇ|/)42u	)Ynˠ233ʀ5+?
]gЍ{Ex!KmX?OTQT?\CJI^ne1
!UR3sT!kcFyCln6+R9QԐzQ@zUg-$f.yGό40Ɵ&eEG67C`c }wŰSʅcc @cT?w5ݍs6[VpLy$6ǯ:P8^
E"41DyqӛQ@Q@Q@Q@9`duwKɠ7fv&g\`5^!J-@#9M/i}lr
-ZIpejվtB#`|<b6'tuʶw/?/Ү]b$My ++s9u-$Яg˴kmBEʎ	_lDG řq9z$o&$o&0WB]ʇhvYw*]'L+%I2o?f7*Qi'_4i'_4~MM*z}7Gz}7@IMIM_i'_4i'_4~MM*z}7Gz}7@IMIM_i'_4i'_4C^\$
$b7~T\ݛXiV0=23,|<o]mq7o%go	X܃[#==*EB.G9RhN
ڀ5oqHruޣ{2"؆38TO3\px>-fhj?Thj?TxwA]ѯZqU
	3dPH
#0HE_sҀ
(
(
(
(
(
}OB#^^/R?hn?A7-"sҀ
+?\gM4~nLЮ"}ʠr1H:llh
aQ=DX9n
z+*MN;k8>(;6Aݳ9q㚗O^l
I/8m:=(B((((((((((((((((((((?po
(?\CJ(((((+?
]gЍ{Ex!KmX?OTQT?\CJd:w(ep3T-HXȍ[vk;H^IY8+Չ879&
FaFCi`7U(((((((((((((((((((((?\CJ(sҀ
(
(
(
(
(
}OB#^^/R?hn?A7-"sҀ<U}I<xrMG$fF݌k`q$q"o90zзc_IGCYlt($mQ\K!0_e_ya1q튳fLO?7G/1o/ϺsG+ʈhct8
Ʌ>e{MQ˨Wtf i{nyb37c`rx'h#QEQEQEQESMBmZ=?N՝iF@xU'dti9`duP'_Ln'duQ@o玓2?|K<t	YErپ%:O/&O7]efx?'7ĿI?uP'_Ln'duQ@o玓2?|K<t	YErپ%:O/&O7]efx?'7ĿI?uP'_Ln'duQ@o玓2?|K<t	YErپ%:O/&O7]efx?'ɧ8:Nqq'Io@c$1RT1T )#IP6>}7[)ho<
wfvH.<#bcU?po
+3FWOJӏsҀ
(
(
(
(
(
}OB#^^/R?hn?A7-"sҀ"GuS;ȁ>4k+K=d
Fv:gZ((((((K/#JC7n3,.s ~CҬ}OOUoQX?n"?GۤȏP=?#T}OOUoQX?n"?GۤȏP=?#T}OOUoQX?n"?GۤȏP=?#T}OOUoQX?n"?GۤȏP=?#T}OOUoQX?n"?GۤȏP=?#T}OOUoQX?n"?GۤȏPEuʱ'D*{#
*"oE"#$g8N+>OyS_0:>OJwzmݜl9ێ\N1ޝqY7Y3gR(ɛ:@~
UV%44yp`Ej?\CJ(((((+?
]gЍ{Ex!KmX?OT[Pq:o@[EE@#{oF#{oEb?	b?	Q@#{oF#{oEb?	b?	Q@#{oF#{oEb?	b?	Q@#{oF#{oEb?	b?	Q@#{oF#{oEb?	b?	Q@#{oF#{oEb?	b?	Q@#{oF#{oEb?	b?	Q@#{oF#{oEb?	b?	Q@#{oF#{oEb?	b?	Q@#{oF#{oEb?	b?	Q@#{oF#{oEb?	b?	Q@#{oN(`B	HIP=PEPEPEPEPEP^/R?k+?
]gЍ}Dd



SAE:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7002.jpg%2* textboxR'H?=syu$2)`1FH?=syu$2)`JFIFC
	




 ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?f]w.8}sT?!y<v zOǤD2XK>T
BIVE
X;	9RoW`;?H紿G$v_?-3X5٤,OĸGBrynFFf@dن'c=Go=??#Es(#Bm$c4+A9:Go=??#EsKj$"HqLdE$J?#EiO"EBLs#4+A9:Go=??#Esi#T6n
c,]²Rۉ `Go=??#EsV'J
dc?6[I!Gi
gPK	({K# BHA5nGo=??#EifN֐iL,z$iO"H紿\_ޙĒ*$_fVFP3zU;4{tg?(bbp8Go=??#ET{yq9Vٜ|8=z=Jm4-"Ycy?:~*lti)R<`q<UAO/Ȼa]@o"_Z6Xnm6%ӰC c  +T=j*`+}V	'qP;^]}\He`HR"pvHEm$b12+ml[?v??T6*.~1'0۴OQi>y idy9;zg9ᙡ,BoR7OUvR,_/P8 *@(#~ƶ??Tmϧ1/ddQ	U81Y/F(FS{r}=kKn}?Gݧ?*2~v2&Nyzk\!BlmϧjM +w=C
קR݋+s优W8%HOti?ƨ\j)u
#I/в)r:4^5m ߏ{cj&4Bۙ	dd2aWxE|
>o<"y]F\A4&{bf,qOR{O$}!krJOvf[@y{zhRy2"
*	JGlכcCkC%%ϜKc{׾kF2}}G}Rg[y$mƤ<hٿp|@bM17OW@B_%r7$ԤRJd3s+J54_`ie&+B@<8h?NNWKN21$m}8Vv@g䦆?`ԏ9c!ex==+d9}E0AXJ#=
1=:uOzs[l%y s{Sfgw+UJMH6y6^v
HDŽO_QVtu<lc`8ޫyw?Կo&_.ڗ;RJM?ܓ@j;RL-5H\eMn&7	?avp~nkH_֟TF-YMx]٬tvT٨Z)RFP>Ђ:(Ѩ(֤{,ʅ6
 w
#CnEŒRW"AAl2[..t;,@\sT?o9O5n\?UWwD5pUnJ?+?qH5ZR#h\	f@>#u蕋soi45(s^޴Q^g}oZ,ͨ+>Rʫ#X1`G $foh-n/GGnQqv%vy=F(("KAohRˍżi(*9Pv|?/;I׵-ZX&Gkia-	u)1`'WiZiYVhaƤ(LyC gI	>	m)wy_wwLq@Er>uG\/nh|DR;̀>l(`cy
(
(
5C*HcG
o?8>ǽu|67<,8c0tEvQEQEcjAZV5]O$'iG1esϥWnn} {o*Vk1˞A=I$?S^}@B^nVlNJ
CRKg8Hrl}u9ۻh.#vNH<u_?€3dEBo 5僐{LR_jm_.3*#tOoPZ<|~n9$K&9dyn6wg$ޯ;MT
?п*e-4 j7Q&^yV_l{vzq_?Gt/
@Z%v{mՑp|$)03ܓZ۶?oQ@]7S(]۶?oQ@]7S(]۶?oQ@]7S(]ss]\ZKfƫ!'>_dtoStXeIa4F
Ѓ
hEQEBۿA^}}-3~9E?vg>Sּy{͟wOZ)'-_
!8ojQEQEQEQEQEQEQEQEQEPv~ק8h_~sߠ?Npu>{~(ǝϯ8Gvg>Sּ>o	WN?@Z@Q@Q@Q@Q@Q@Q@Q@Q@Q@.y_.߯|;w?OӜ4]}^8m6=k+(ǝϯ8BqEPEPEPEPEPEPEPEPEPZWl`)#>:圼߯;vTg!\eUgkJ얶WgicUCg9_genTӜzל{P20]E۠$hO~*|bKhGKM8G`@ӷ^ڕA2Ip"Se8Bv_\u:}7j@#\;Esrp57"~Xk#)b1~1h_]'_|?׾~phcQ?=EP}}u>{?=EhcU߯|_|?׾~phcQ?=EP}}u>{?=EhcU߯|_|?׾~phcQ?=EP}}u>{?=EhcU߯|_|?׾~p"NGBv_Xq}ݏ{Fֆ}d2Mg3(bcNG|ij⼙awU;Wja)sn8'@Kƫ_EjX$	t9H
0AW^B<2#=<Yr;kXiK7i`$\F~/J?B(ʳ>܋wfg60R?:ԴP
B9<dbp\D?翿~E_DG{߯;Ŭmմ_dyOTf5e4;Y%huesE 0	@h_P~y}#}}A=uoEE}"?߿^wh_P~yݟwZYGZ`œ^OZE}"?߿^wh_P~y[E}Q9qם"?߿^wVQ9ql)j,Hh_P~y}#}}A=v:wVb
4]NO5Ǒx"I&X=I"43'9<Q-nIG_Z(pM4e&D+opjۘ2(cܹS?aO{"]&8P|ފ@Nּ7?kh
Sa|+T*x]+ffgAn-ω[6wKY$ke•#qӥupCKIkBߠL)"KU\oA
dcP
滩f	qooc"[xZ
ƫFCFs1N:ceh^s$>DVokL)/G8/ykM܌#*8g=68Ơdq*Ѕ
,
?Oe@/}ʸFwc<96/#D)gϘ\nϾ	Zڟ/ʏOe@A`dF[P2u
k!Tj*Ԣ?_ڟ/ʀ5*+cЅPk!Uٻxb<dҀ($QΑ`Ð֪z/ ?Rտ¬AW<WyA]Z(9	PAvs;G
1
tcQ֮t?n%xV}:D$IR$Y%
|p2{⢹n]Ym
$JL@ooמס|F]vMy{tѧU%
^1ި	ƊwB&.(?GN^?h;'/\L];z`뱢8нs0t	ƊwB&.(?GN^?h;'/\L];z`뱢8нs0t	ƊwB&.(?GN^?h3Nn`%q/qW*_LEW@_DdJ

SA*E:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7003.jpgVisual Class LibraryR@I+ʁNF@I+ʁJFIFC
	




 ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?uycq,$XW>*8K#AXp9$~ 弘:ܨ`W8tvS9E,l Ͻi'J[$O7z'necFA(8=C^Q:JGU8ں<w43%'~X$')w]B5GxMSXEhv#b0Yw3av+lWOVgP	b*pX2Iq}0}OB#@\Dd

SAE:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7004.jpgDO (_BROWSER)Rm[Dn`m ^I[~SFA[Dn`m ^JFIFC
2!=,.$2I@LKG@FEPZsbPUmVEFdemw{N`}s~|C;!!;|SFS||||||||||||||||||||||||||||||||||||||||||||||||||"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?H(yCvJqj0r4\dAn3Cdi"Mx76sPy(nl8KoD8YXԃg9%Kv/Yוd$fLܠg?Sh4YOmF>U.m4]<+HZ0pGzsZҌ$'?	sϒC[746I|?=iW̸-=,qې2HwזT=G\h?%a˞r~|e0
@uAN8=j]
O'FΖy?ezr?7N]?.oO4\i5d.eBnb(0
KПǞt(湉>$,˵$Qm醣.oO4\i~㑙|btqSčtf#:qR:px9 h5	sϒC$QGiM1!dpEaJ^x}PMRM?	sϒC"Ǻ7f-`#` ܾKHv,&-AsJPfR/K|M7'?mYim`$s	b3YM8ϤLj|$F|vKj7$G%>I}&-54o<r1*I
T%ʍ+ӐشKw/cB;FG#=(5'?	sϒC}&m47B|
ǧ	+uvY~BUGPV88lSI;X.7'??.oO5iq}S:w]/s޹:R\h?3EWWgM	sϒC$\{
}.oO4\kaO]7%>I}&K|Ms4Q)?	sϒCf=>vt7'??.oO5G.Λ$G%>I}&(\h?3EŸ`:oK|M7'?hSgM	sϒC$\{
}.oO4\kaO]7%>I}&K|Ms4Q)?	sϒCf=>vt7'?t>)y(Qܣ$^i!IѦg]WPDT5N ȆT3Njv0Y"~5+6Fu	7]?,>٪*յ8k6$q'8j3^Isql_CTuxt`]`d|{M7k~#Z;NXD(I1FGRTN"SEfHCc}?uHn~̗b?*z=OnwIߟSRSB %zA\mE"%ZBעͫ7Bnhj?Z_{ f6BK){;!4a0s'u=+.
r
[BrV9Œk_|?fb&GybU
x?Zovns]L*F2=}\EֿXd8ҵTB-m'Ԍmjwل.`chF@_z>.,rJdps<ɦR°%xQW5"R@g)qG%9jO73tL(m7Zo+p?0?玃v8|񨣖7 XKnZ>.,raHfgdٌګaj?o1G$ ǣntޥ[l7)=*Seܕq Y1HNw,X9?ZR5gl}hx>,rOKG4xU'''f^}_5JG%M$wi#7\SM֗%wL>]m52e2Ư g>&"hĻ Ɲ+XgH^ lf@:M֢Jw:6NNNkcb3m9)5}g9(N&D|`^Uk_5JG%+Qo}Ə-G}l]AlFqqSb/?Ɵf8-G}?k_E$ż@33R޾hϷ>G>v|}4}fac_Qo}ƻ)m]frc
NJQvf#$ϧYX?h_}4b/?Ə,qZ4aj?]4Rl9jZ>0aj?Ϸ>]}fac_Qo}ƻ:(Ϸ>G>vtQ3Qo}Ə-G}3g>Z5Gf8-G}?k,qZ4aj?gEYX?j[m#Txx:uA<d3FތEğ@M;F!8M<ta8nWI4Rl9k.e1AӭVdBOLWխq3"0ϯںHՊlפ_tG:qƖ+{Px`UmMBvlG2}??{/
Ols0 d8W?]'닩n=B`#L|OX?!_g%ƁH$Oz:sUVc$~lP3b>j
ct]wHX"`@[EpұrAhCd.oXX0ኊ/+2MRϸ}<ԭkVq@Wp$[֨FN6cMmߺN>7Z"9nEs,o$ RɉmrTјQah23r՟<6~\P/5N[`N:
m#T/$Pmew?7ck.&[8	I0Aeaڕvi5쐈:U]ʎ{ovDO@1b/3[t;Ks#$KRCrD=~ofc9ɎEKL~u/$ˣN$$R2;&<#:v k![F{!XK3@XscwnA![VK	FQp9Nڠ*ٺei\"*CqKTc=Ι+}|8};A;sȆh툃7NGӵ=[a/1@#<dQ61e#|[Ks=V`> xzԡ0FB:7 (o.P@Gm "F@CEJD)m)9F'oQYl,ż};PFfe
Af9?=S]J(`H8O^C'8`:8>rcۘܝ`r׸*;O-
Q~h04׸)vV|BD簤4ҖvI7F?3x9׌5$:jO#F"̋"ژw@R?46_MgoM}poO0dnxϨMmaOݮ~Q͜
&6=3ΎI.[[~<ǎj)5k
;[OAmj<3+r=էywmzglⴏyAw.#sx618$30;kX^>op1uqN]G-USV2]65^yt/sRM<uV,io+W*r(((((((Hʖ$PQbջJXpOy2&?c2>!{P]is?m|jZt2V@@=jޟrȿh0iFzVKCOF+{?|?`zu<.RR92*-`m޹<YTv&LfPr:E_z뙫"O]'닠PX?v>V(ݘc SjHRO4SM`4jKk8$|+z`Ԇ@3F	mnrF>~+9kQJrwV
чEXeGʉI=r8h?I?4N,d#b$w7^oL'D#:Zɿ_7<n%g'
A	?O&dJ/ɿ_/I?42]}S'A(&Q/g@'i	?O&dJ/ɿ_kkAo$!qSI-oW=Jݫ_7:?o%tKM }7:?o%tEtTD[련T0?RO7:?o%tH94"]E
>dJ/ɿ_/I?4 tAO&dJ/ɿ_)jJ@7c1ڠwWo%tdJ/$?Oގo&vSWo%ttB0''UwG$?o%o4	kVI1,6u<2J+GaR@*{q^A%br$jB.ddDdĿ^(I?4}Or"]?j̏#FCN=ztaAmE!>3J(bL
J8HS=8hQM2(c'e,QE> TSаEI~gh޿?34&Iz$tTy'ƍ<?@Ro_䟙.vFm^z=}@
+U>PO
<?FII?5-Y2>gs;VOy'ƀ(5Ś$ewZy'ƍ<?@iX9/n`S|R0iĈ֦"O]'닠PX?v`XddB]j

I4Β<Q䁒\ۚI,Κ(J5d|ܗs##ZP|v2Epd
D-3[<m{OCfٷsG!q°'PeYQAc(isqN*S_	~ҞiOOyƀ&Jz4}=?)/Ǘhj*<GS_	~ҞiOOyƀ&Jz4}=?)/Ǘhj*<GS_	~ҞiOOyƀ&nՏA4}=?<Ik(Q4۾O#eX)}!t]٪;?R۽qLPH#n'=h.6ĀW"VFC&9a“̸my8TRMVSr"ڭMȃǷ;cYQ, l`9JhJ%'%f+I<z[#aKlg?WdB8ݲw`l*6i`VxYq!\IL|I<yyl|F!$,Kuz=WArBϧn`_/tя7^X|O^*md7̦)Dt<sU5,0Da<lzt
S1U`	8ȨΡk kR3
i hŮvM#'޼M.i< 	^0\o%.c_1(eBq6ʺ`JF}9	Hu9]cuv98aր)jn|μj(U<(U@0	?%RFdSivC~s|r(,#&7
muSyv'cF̾f [h\y-:;QϽPg^ЮfN&2Q=ןqེhٞhU2m#hۀ['QϽQ;&yh}6&\pz*KovLҏ}¡RVl 7緸J/ԟϒ?rLa?LqV{ff%QP2\//nP"|x~1-}&eh~L@\yFAy03I1)ToԜަK7bɶD
:Wjۡ|ϳ]۷>C=8((?u\\B\XOv[U@^%D/.O"O@u~?*{Ѝg_
/mQc*#I|l
|u9'!G)mu%Y"1ymV@;srwb8b+I
'ۯ|sJ*>w	W:Z(((((((((((((*AEl3l|⣢+g͈).#fOM"yG+(@@Tsƶ`q,!ceqcvSQ\ig{.28{<z֭lG$,bDi%z.G~{cLG6X}t4P}ѤDBv3$*8gĺdHm(sF!O8r{j@Q@Q@Q@Q@Q@Q@Q@Q@Q@^%D/.O"O@u~?<,r2cu~?.;}=%4˙RQܐGPg62c~6yu?AYZeAc5/aQ[@j08
#HNkhRca;|²{-/u=EHwjd{ƥavbٍx =*W-G>w
G+rڏgu|ب?.`	8xvG>w
G+s1jңI*F#36N@yZۋuBH
<ud}_w:?W
>_+MeKۦ(h	10Ip9HɭȽxA;ek|6=3p\a;|¹>$?nO-?t9/=jKf'kI]QOy΋|W
|hƮwME%JF9]kx_LA`3ݴuOq(\~_(a;[횿U,G~]8#<uO}fUW
HX[>Λ|W
β-uv,L68 8<=FRQtȻo5W$r3#9︮u?l?}}ϝW!o[QOϸ\_(a;C[QG?_Ə>sa;|¹mGڏ>ο|W
?4kj?uh:W
>_+7oϸ\_(a;C[QG?_Ə>sa;|¹mGڏ>ο|W
?4kj?uh:W
>_+7oϸ\_(a;C[QG?_Ə>sa;|¹mGڏ>ο|W
?4kj?uh:W
>_+7oϸ\_(a;C[QG?_Ə>sa;|¹mGڏ>ο|W
?4kj?uh:W
>_+7oϸ\_(a;C[QG?_Ə>s[Ϊ-/b-n2}Mijmh[*y%b"O]'닩.B5VoZX?YITk67WQook4,"2x5ߖ
m@*oܩ+
Oؽ҆ɹH@1j:s
*B0
NI#=궧+]m8]8!I[KcͿu-=ԓ\mH'(4o%H#=Ȯ K
J:-zpziH)d2%8:cSj`Ce}
LU^D 8N;5A50eb< zq/=ww&N@@'s<w)Jql?$X$rrq־*`SLi/ sF1=(?&t:Ux @q0~]VTfآvb/h$v$3'2CaY4
#a	7*F9Г/o9%QOn1Ĉ!c*l-Ӧ=2W=hmq'k!0G'.5&!EX?)R9d9WQ6oRBnO;,r "ŭvȪP<(9$(|naj[H2o8 Heg0?K
1r9,yY]C"ȯNq׌p&hoei}&#!TEed
SNtSAc{<#HTlF7;qFsL%|u?/HcG`:]ߖ
?u-TS+[υo'Q^EY}ǖd?u~[(WQG_`:]ߖ
?u-TQ,yoN>_G|.z}e[υo'Q^EY}ǖd?u~[(WQG_`:]ߖ
?u-TQ,yoN>_G|.z}e[υo'Q^EY}ǖd?u~[(WQG_`:]ߖ
?u-TQ,yoN>_G|.z}e[υo'Q^EY}ǖd?u~[(WQG_`:]ߖ
?u-TQ,yoN>_G|.z}e[υo'Q^EY}'KTMhW<*חȮy˞W(/$yquxAθ=B`#UfQ'UЍUD@:7??UʧE\#$aAEgcYKUK8l`1gf$
d$Eܡ9R@q(I@c6X3 PDӭ+xKx+*@0sS+2HI2I9z՚(iVNhw)UBUmm0On:qJtmB$8sg.u=tPqel)RH۴`1SQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ȭy~y/$yquxAθЍUDVB5VohxW* kAr
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(//Z1Y_I:/$yqt_7??ʭ]j$t*ѿ
a^"U=@*QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2_?_+"b(+Ŀui_I:.B5VoZX?YITE\z7??U((((((((((((((((((((((((((dpVEkdPW'닮Ŀu]j،_ TSаoDQ淢(#`qG/淢([?yGt@މ|oDQK=4yGkz'?5G/K=4y
<OtG/淢([?RhoF'Ya#AV;HP淢([?yGt@މ|oDQK=4yGkz'?5G/K=4y
<OtG/淢([?yGTv2Z9b[I`}CP5Gމ|Γ=t@މ|oDQK=4yGkz'?5G/K=4y
<OtG/淢([?yGt@މ|oDUKc%%dfЏ=[#`q@މ|oDQK=4yGkz'?5G/K=4y
<OtG/淢([?yGt@މ|oDQK=5RhoF'Ya#A@Okz'?:N0yGkz'?5G/K=4y
<OtG/淢([?yGt@މ|oDQK=4yGg
R8<2 $fҭPW'닮Ŀu]i_d?x:((
ڃ2E͗i䃒=+*4FѴFM	F3=z(({?U{?U4GgO:U7v۱}۱מEcw0`bqrTRc\:axicgw
::?{hQQѫ:;go{Ө:ͷjRrep=9;8YB\4
ϸliƚZ䉣R.#ݖPmr:ps*2%Y'2?h+~Fz<~uEZZ?5ZZ?4QET̳ٹtpGμz{08Y<W
v0EsI";Kri60!Shn66X!g2sׯJҢ1/.{)I%<e}P#nEpQhO($}*QEZZ?5ZZ?4Vb4ˬq	QCӯs@qKkFhU^A^86˾  ٌT/דNV5#Tge.ۛcyx>-SryFޤ`xM[qgg$+OHy#z}kjK!78`:	tA+JC-9bxqQKEZZ?5ZZ?4QEf4ڢ8hōYqOp{L{G&Tt
Aj@4Ϙ3?Olc[{bKJG!_((هTlZPPD1U2F@ |rw0V{?W_`pRz^
k@
IPIW<:(Br!W(+Ŀui_I:.B4tЍ2?B"3sIE=6]k1̂Y0rjdiE=yDhdidiE=yDhdidiE=yDhdidiE=yDhdidiCKD 8#yOZ~jF@OGF@O@~֟߇Z>֟߇Z>/Q>/PdidiGi%i%o?o?QZ~hZ~jF@OGF@O@~֟߇ZF;Ha^jF@OGF@O@~֟߇Z>֟߇Z>/Q>/PdidiGi%i%o?o?QZ~hZ~jF@OGF@O@~֟߇Z>֟߇Z>/Q>/P;Ha^i~֟߇Z>/Q>/PdidiGi%i%o?o?QZ~hZ~jF@OGF@O@~֟߇Z>֟߇Z>/Q>/PclnheW:>/Q>/PdidiGi%i%o?o?QZ~hZ~jF@OGF@O@~֟߇Z>֟߇Z>/S&tڂ
??ri#/}`f?z[ZĐ46v?"0~	fc
\@!VY"O]'닠PX?!_B4t
_CJܬ;/z@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@2o>2"H
Ќw[O3wT^3qVZzߕ[CY'Ζv"% 5*V~4_I:/$yqt_d?x:}F΀!׫i[e!Wҷ(((((((((((((((((((((((((CNC@:vʏ{|OӶ>TCO~5[Y_QbW'닮Ŀu]i_d?x:C^nV_CJܠ((((((((((((((((((((((((#}
:#}
Tϧ*?o?O}?NQ}?Oo+Y_Qbmg'}G@^%D/.O"O@u~?C?i/zXv_O
+r
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
k4dĈ\^~~,o(GeJݼPeKX:PZOCfk?y??U/$yquxAθЍ2?>`#QBʌOjC^nVRqP$*_}€4$I=
Ӣ?zi'(NOQ_
:+3I?>G_}€4$I=
Ӣ?zi'(NOQ_
:+3I?>G_}€4$I=
Ӣ?zi'(NOQ_
:+3I?>G_}€4$I=
Ӣ?zi'(NOQ_
:+3I?>G_}€4$I=
Ӣ?zi'(NOQ_
:+3I?>G_}€4$I=
Ӣ?zi'(NOQ_
:+3I?>G_}€4?I?>M9#diNH9~F䎸U6V"Qb?ҭb2G1Vj2J"*I_I:/$yqt_ʮ]C+FAb`#UfQ'P?_o~(β;S-eҤ$1D$'<?β;Guߥ
ӿ甿'G<?β;Guߥ
ӿ甿'G<?β;Guߥ
ӿ甿'G<?β;Guߥ
ӿ甿'G<?β;Guߥ
ӿ甿'G<?β;Guߥ
ӿ甿'G<?β;Guߥ
ӿ甿'G<?β;Guߥ
ӿ甿'G<?β;Guߥ
ӿ甿'G<?β;Guߥ
ӿ甿'G<?β;Guߥ
ӿ甿'G<?β;Guߥ
t+_8t'>3m>huߥ
?/R_*DQX
_o~(β;T33M2㱰)T˜@gYϝ_:|3._G]ƀe>v/Kmb$yiOrB3@sH#4/uߥ
?/S?}%4eKh_o~(β;L˵k/gYϝ_:|FmdXd;GGmb$yhO/KgYϝ_MQdߩw5o1F@ɝz:|_o~)v?}%4/KgYϝ_ΛfCyw4vuߥ
?/S?}%4eKh_o~(β;L˵6f-(3S@gYϝ_:|3._G]ƀe>v/K-U fg#&;Å'UF+)"05bjZi-13Pr*,v"O]'닠PX?YIUj`#UfQ'P kArxW((((((((((((cMd<2tVm9}}?űO+ѰqNMV)aҭ-cGފKJ탴g2Gq#FRܗQ-21fT<uƧI?6hmYNϒAv.2Ir3,7nIŒxH=r\+F5	YRR&q_=EMpn|¬"*$۟l^յEf:N-ϗ@͌ӡ#RYEs9qs%`E` ~By֥NѤӱ[
qwu?PS7m7g϶jªE
0R#}vgfzϧjmR틮ʂw]s͎yUQBU)h;ɒgA(-9nZ8v'֫ڤVJ{lN]#iU*(UQ1kcDF,6`*8<g22xaZXy%
x;OzѤ
XX:Pd6t\d|[:t&F{+*\gGcg;4P\iXP;xQwjImLeXv0}qaZ3;5ӲALvsϧj|?>g~ﺮ22wmgusSEQ$Ȳ۸ln?\Sl/};TՑ#U7F~hOD G)`<yt_I:/$yqt_7??ʭ]j$t*ѿ
a^"U=@*QEQEQEQEQEQEQEQEQEQEQEEppmO_wJ	r@H&* p}Wu+H$4Tb)??뤟UʧLjmW((((((((((((p?^?_){#E$9'KKi'FR	987??γuq#ٜ	t_I:/$yqt_"z su~?(]>L%F*@jS_(S)/Ǘk.Jz4}=?ˢ5>ҞiOOyƲ
O<GS_(S)/Ǘk.Jz4}=?ˢ5>ҞiOOyƲ
O<GS_(S)/Ǘk.Jz4}=?ˢ5>ҞiOOyƲwL!͜m &oV(
S^I%".Yzl"EEci%C8Z7cj:(O)SGީ}	<OSz?ƣ$?4yMoT7cj:(O)SGީ}	<OSz?ƣ$?4yMoT7cj:(O)SGީ}	<OSz?ƣ$?4yMsF꤀@Pɪqx$yU=B_]M`)3)39 Q@^%D/.O"O@Z&y\D@OG~gC7'j_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E_!G֣?O
E[S<zTDdwh

SA,E:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7005.jpgc7005.JPG (844 bytes)RU`켫bkeCF]U`켫bkJFIFC
2!=,.$2I@LKG@FEPZsbPUmVEFdemw{N`}s~|C;!!;|SFS||||||||||||||||||||||||||||||||||||||||||||||||||"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?ջM9>]B+̖쎀'{zHrq{ֲ"K&(BX^lOK淢+/B~*X.nCuh ʱLʐFΣg$rĎʖrzK.#12}:lƹjͤpjJ$n
T'g87?*o@Ddww

SA,E:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7006.jpgc7006.JPG (816 bytes)RmPzq-!.DI4FAPzq-!.DJFIFC
2!=,.$2I@LKG@FEPZsbPUmVEFdemw{N`}s~|C;!!;|SFS||||||||||||||||||||||||||||||||||||||||||||||||||"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?w*@P?z
&oYp6/<q[JߕrsR֮0sYbv2>ѽˏ]œKn8^{RNBcD@np8	w\,6VHZR154ܕFX&&Ddwh

SA,E:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7005.jpgc7005.JPG (844 bytes)RU`켫bke	F]U`켫bkJFIFC
2!=,.$2I@LKG@FEPZsbPUmVEFdemw{N`}s~|C;!!;|SFS||||||||||||||||||||||||||||||||||||||||||||||||||"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?ջM9>]B+̖쎀'{zHrq{ֲ"K&(BX^lOK淢+/B~*X.nCuh ʱLʐFΣg$rĎʖrzK.#12}:lƹjͤpjJ$n
T'g87?*o@Ddwh
	
SA,E:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7005.jpgc7005.JPG (844 bytes)RU`켫bkeF]U`켫bkJFIFC
2!=,.$2I@LKG@FEPZsbPUmVEFdemw{N`}s~|C;!!;|SFS||||||||||||||||||||||||||||||||||||||||||||||||||"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?ջM9>]B+̖쎀'{zHrq{ֲ"K&(BX^lOK淢+/B~*X.nCuh ʱLʐFΣg$rĎʖrzK.#12}:lƹjͤpjJ$n
T'g87?*o@_DdJ


SA*E:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7003.jpgVisual Class LibraryR@I+ʁF@I+ʁJFIFC
	




 ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?uycq,$XW>*8K#AXp9$~ 弘:ܨ`W8tvS9E,l Ͻi'J[$O7z'necFA(8=C^Q:JGU8ں<w43%'~X$')w]B5GxMSXEhv#b0Yw3av+lWOVgP	b*pX2Iq}0}OB#@_DdJ

SA*E:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7003.jpgVisual Class Library	R@I+ʁJF@I+ʁJFIFC
	




 ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?uycq,$XW>*8K#AXp9$~ 弘:ܨ`W8tvS9E,l Ͻi'J[$O7z'necFA(8=C^Q:JGU8ں<w43%'~X$')w]B5GxMSXEhv#b0Yw3av+lWOVgP	b*pX2Iq}0}OB#@Ddwh

SA,E:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7005.jpgc7005.JPG (844 bytes)
RU`켫bkeF]U`켫bkJFIFC
2!=,.$2I@LKG@FEPZsbPUmVEFdemw{N`}s~|C;!!;|SFS||||||||||||||||||||||||||||||||||||||||||||||||||"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?ջM9>]B+̖쎀'{zHrq{ֲ"K&(BX^lOK淢+/B~*X.nCuh ʱLʐFΣg$rĎʖrzK.#12}:lƹjͤpjJ$n
T'g87?*o@ٕDdf


SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7008.gifc7008.gif (1505 bytes)b+K+B~.TnK+B~.TPNG


IHDRo:XPLTE3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3f̙3f)))UUUMMMBBB999|PP֭߿?߿_߿߿߿߿߿𠠤&bKGDHcmPPJCmp0712HsIDATXGWv useӘ(igbC.uBs$2?m5IİSx(V6"4z/US=?
^/;/?)vX'~rC_݀W]<	l,~6!	s=1Գ%?{#',ƒu!۠+#D;J>/SrfS>,X\FʟES	AꏅEW
RSʸRpKm񌴪?~K$7?õ	*~GYN[[=[oW
3M##}(Z)/fV׋Kh61Mz?ɳ߈NEKY/WIENDB`_DdJ

SA*E:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7003.jpgVisual Class LibraryR@I+ʁ/F@I+ʁJFIFC
	




 ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?uycq,$XW>*8K#AXp9$~ 弘:ܨ`W8tvS9E,l Ͻi'J[$O7z'necFA(8=C^Q:JGU8ں<w43%'~X$')w]B5GxMSXEhv#b0Yw3av+lWOVgP	b*pX2Iq}0}OB#@ DdY

SA	.E:\vfp\@#5"@5"B#A#! Visual FoxPro7_files\kasem_files\chapter8_files\c8001.jpgc8001.JPG (7795 bytes)
RZv0zNV<*bFZv0zNV<*bJFIFC
2!=,.$2I@LKG@FEPZsbPUmVEFdemw{N`}s~|C;!!;|SFS||||||||||||||||||||||||||||||||||||||||||||||||||"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?յD#ʮW'9|]l7I?ů<jly~NPNJ47;?/S`]B8ܹ<ԓ
-?MWmôn;OGZ֒X%쉩Gk_)
KXfϗfznsoƬ77Сo$r2?__gHyOT_k<?*]*=;Tq9!\+V^xQgp*mgM	}yOUQWx
/S)
(/S)
(/S)
(/S)
(/S)
(/S)
(/S)
(/S)
(/S)
(/S)
(/S)
(/S)
(/S)
(/S)
(/S)
(/S\ڟZ**uXBOK3ɦj
20z?/UE*m]󩺹QA%9cx(cFy4AQFY&SRE!ӯ䍺2F5g\ֺ&y$8Y>7Dn|ny[Eߗ⪵ƸZ}Y!so,!"5SnƲ?[=ڏuEVc9_,1%I8-I&Ӯ[`%>`~AFQ%ǖHMg{ԹS*F$:o9
Z'^EmNnno3X?O|3{fl4\ďP{vz5^V<I5^)A#K>OOZ5<HŘDdڽJk,yW}O~(ϼIz
ǕgϤWG_`_?o>}'mQ,yW}O~(ϼIz}eUy>߶
??^EY}ǕgϤWG_`_?o>}'mQ,yW}O~(ϼIz}eUy>߶
??^EY}ǕgϤWG_`_?o>}'mQ,yW}O~(ϼIz}eUy>߶
??^EY}ǕgϤWG_`_?o>}'mQ,yW}O~(ϼIz}eUy>߶
.5\0RJ~W}Eg:ǟ5{EEJ8T7/9nI3yEEgqxOw̛sq>:|Vm F!b1WE>ekXGڥ:;h]36W=qVdw	"p{^X(TͿ.eff(V/?jU>@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@cxAS6X(TͿlEV/?jU>@Q@Q@Q@l.f&iu1l e8sֿ<?ƺZOWY@w$ӿ甿'ZtPg<??4/IV)"O*
;yKUEf`i_NRDUi@w$ӿ甿'ZtPg<??4/IVkIª
ʟ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@cxAS6X(TͿlEV/?jU>@Q@Q@Q@#My^Oݖުc'5毣)P<j?ŸE3_GQ毣)P<j?ŸE3_GQ毣)P<j?ŸE3_GQ毣)P!BEQEQEQEQEQEQEQEQEQEQEQEV7?7so[5M\PQ@bFUXTQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEV7?7so[5M\PQ@bFUXTQEQEQEe_\2\tʸO@Grj<?4o~@w$ӿ甿'ZtPg<??4/IV)"O*
;yKUEf`i_NRDUi@w$ӿ甿'ZtPg<??4/IVkIª
ʟ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@cxAS6X(TͿlEV/?jU>@Q@Q@Q@j=Tu3NWj`5}?O毣(W(j?5}?O毣(W(j?5}?O毣(W(j?5}?O"`((((((((((((Q J٬o*oҀ6h}[B5jGЍZ((((((((((((((((((((((Q J٬o*oҀ6h}[B5jGЍZ((((((((((((((((((((((Q J٬o*oҀ6h}[B5jGЍZ(((κႻT^t@VO/K=4EdGt@VO/K=4EdGt@VO/[d?eF CO_PAEPEPECtJ۱RA:_Ѡ
j+'Ηz?h}֢|F:_Ѡ
j+'Ηz?h}֢|F:_Ѡ
j+'Ηz?h}֢&gyf,~y'?@Q@Q@Q@Q@cxAS6X(TͿlEV/?jU>@Q@Q@Q@^i"r|29ǡkU;h1\))=U)5yUP<'<H֨o͵)VL0q*yt9RyY/93vI,7),\2HHvޔ>elPp޼מ[aVzf3gJ{AGzc'Ҡ^}fޘt-0 5Wp}o#-o1c*d!szmEFDR4nvobT01@
Wzrc仞Sʑ|#:gչ&7fBACЊ}[O4;ͷys@?#ˤ@;f9'5=޴1NK+TDy9߽i_Pb::(
(!g?e֥{?.2Uy
LРB@4i2Jc`a+C<n]b }ybIf,!9?5{[mksyï?Ys7IjS)lc_^SSOAq V#1P\}{>ճ~oLq@^-[bȐN̚,$@62 F9FNjI.>׽jٿq8i04,bpUB0zA@k6壶)
ןȨ5FA0+GU|XǶ8zwP\}{>ճ~oLqM`iTC==Cu5Kxm睧y<1ر`08qZI_{%s[	4_G@J֬((((o*oҶk

(*GЍZu#V((("SG;?,t{c_(z=_ykr<4}Wv?ܢ0ǫ;Mc睏&(?Gc_(zN,r*G2HJHXVQEQEZnإ?9P
f}Wv?ܢ0ǫ;Mc睏&(?Gc_(z=_ykr<4}Wv?ܢ0ǫ;Mc睏&({H>c&#b@TwҴ(
(
(
(
(
Gm+fQ J٢(_oժ}[B5j
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
Gm+fQ J٢(_oժ}[B5j
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
Gm+fQ J٢(_oժ}[B5j
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
Gm+fQ J٢(_oժ}[B5j
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
Gm+fQ J٢("is+($#I	Wt/(zk/kf^@_GK"٢1׫:__ȿƶhoE4}Wt/(zk/kf^@_GK"٢1׫:__ȿƶhoE4}Wt/(zk/kf^@_GK"٢1׫:__ȿƶhoE4}Wt/(zk/kf^@_GK"٢1׫:__ȿƶhoE4}Wt/(zk/kf^@_GK"٢1׫:__ȿƶhoE4}Wt/(zk/kf^@_GK"٢1׫:_]Eu[9`m:\WGEQE
Dd


SA
.E:\vfp\@#5"@5"B#A#! Visual FoxPro7_files\kasem_files\chapter8_files\c8002.gifc8002.gif (3393 bytes)b8\K#Q<Pn8\K#Q<PPNG


IHDR%PLTE3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3fؔȨ?߿_߿߿߿߿߿߿𠠤[bKGDHcmPPJCmp0712HsIDATx^뒫*M%oF [Y}2v}6
,x-v۱
<-e9֓>XҌ9T"BnMlc<m\9xbL	
(<y_nMהc{ε0>rf9<)wWiZ䕄[}1Yp?x&nNk~Oj@
BIW_H"BxaW9>؟+]Pt""b"كT2ﭓ!Nz'0n:?SӖòKU[r8TC]ybHpXgoăhlus~	Ń@ 1
57Up_n :sPYD0
/Ԍ[dns87!;qKz>evH*EKTv>D.00bQ('gj'@H|^-x
Yˆo_swE=QGp/C^ <@<\CU?%U}aGҹ:=:o1*{CuJmc-Jmc-Jmw=Vəw$=V=:LEToGq+C$_(XA@<xT+v砣l]Fdُjgmu\A4D5IBCKwR(r~"ޏ.dh5vDL;{u:xI{c`;Н.6i[TkN
MϤ*}90OLp6QʨqpVy-8X\o
<.j#j-nr~CiX_Z[QH^uYwܻyc3p
<h{:D}4NW28Po50CX;ԮQ6;8.ֶ!;9ɡ8T,/@Sdj]MoI
'+ov$;̎S}'͈_k6jRFHEFȚN4;l-W8nr8"\*QO#|hZ}K]I85-&\08kXl׬2TKC<&v00%}[{Ctպl
uf,K@O:!_͡+B4yŝy\zJZKWS|נjQp
bR<TTNS
šrq.X;T׷a>uqt/bgV&-n7:pH(@=jpӷЦ^@h=e@<^B~hj/AMP McAN4pʊgj
8T)HXrfpQފ^B=0n%8tKHbHd6C$=uߍ$%%ɷÄ[5zyJ
m0Tr㈇rD<4Famä3xkPk ak"j0DzzQ.𖷮J>@pLhN9߃sGBs9:9|str
P;]Q/_ pW9oѷyD^ndk)
tnq+mM7Z6{Ц^XEh=F벨_ڮ5ZY5򐰝Px\<x(8Pp/C^ <@<xxx
<x(8Pp/C^ <@<(@r
>'s(\IENDB` Dd	

SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro7_files\kasem_files\chapter8_files\c8003.jpgc8003.JPG (7979 bytes)RhTQg.R.DF<TQg.R.JFIFC
2!=,.$2I@LKG@FEPZsbPUmVEFdemw{N`}s~|C;!!;|SFS||||||||||||||||||||||||||||||||||||||||||||||||||"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?&.|s\(#`QonjV
e
A9UJjc+_sZpS,Vad+J<G1g?90=yzvB!}<qr:䁴3I]$1	R8(N;jB\j#l}:+6W..oKZ3`s.ܜđNYZ<*X变[g88_Nz])5	Q gcQI>jYfXG[I.+!P2N 7^z=WӒ_*.r3SiǤ@k~W}<m^<;11]D[aQt8<8!Ѭm@̶{T-Ӹ%5(W}<m^J獯i	,o,ĦOʲgbz.yzG	X1$u-<np3ZHJ獯	]_zvgZڇP4|I9<|`Ua]_ףk~EW`7+6G%w
=;ٻ	]_z?+6XTQ.J獯	]_z¢evnW}<m^J獯{(vwk~W}<m^C]_ףk~Ex߯_׬*(Pf%wx߯aQG`7+6G%w
=;ٻ	]_z?+6XTQ.J獯	]_z¢evnW}<m^J獯{(vwk~W}<m^C]_ףk~Ex߯_׬*(PgYj"1P|91Y_	z?}g/ٞv8\uZHX}R=DX}Z#98+?Zj}kuuEewHk}+SԬjUA;s溛߿?jK%r'ts3ĦI&i£fz}7WUEkҊؗ9_Fo?X?
ꨧM3y=`+L,WSIRo%(7yk
m%7Gmw"n2 zϝQ9Fo?*xn\IlJGWW
>_(Ĺ+@T*H
.T?X?
~_(a;{G#7ºW
>_(M3y=`+a;|L,{G#7ºW
>_(M3y=`+a;|L,{G#7ºW
>_(M3y=`+a;|L,{G#7ºW
>_(M3y=`+a;|L,{G#7ºW
>_(M3y=`+a;|L,{G#7ºW
>_(M3y=`+a;s$jgi뎇ҏL,_G#7ºyX gjXfdc0#E3y=`(fz}7WI>Rؿ<_G&G7o]'?Kbg)_]XY#7Fo?tl/͟|t}badahCr`q~cZ]I/,r"cDpU@Bȡ=pFjFWz.]NqA\z4$t*+;߿?jZ#Ԁfs~":F"*
|K/T؃\Uoי#=1B(HyhRƅn]n26"ʙXَO#DxX2dbnĐp@鳗?lMN~s#uQjWe}haz⺊;ڱ忕YS~ӷw>
(
(
(
(
(
(
(
(
(
(
(
(
(
̺X?֝f]h?RmqٿuKRmqٿtQ@ڻIo6c9t9EtD[s1@$d8+ySl?Gv㎝}[j]r%D,pG]( iom?"*~ O	Q'WףMOO9S#ի߿?jG5]7l~tCm|cw]?IEQEQEMdejFʥY9$o9תTP߶z>w^zE]o9ף^Q@~o9תTP߶z>w^zE]o9ף^Q@~o9תTP߶z>w^zE]o9ף^Q@~o9תTP߶z>w^L9O/iln#e&UTFaIǞT$
vbc(/ckg1qf/??€1٬1?l?ƶsFbc(/ckg1qf/??€0.ծQ"șxkR69"Ua@e$Fmp	=8X$f7??ʼoyzV^KUhi,i*+Xd<&n<2q21V-UdrNq#U+ "mzw3BD;dqQН\ o.
SR(r3cw^;zxC1f1;G:qH)rf!GA'<xEF!Xery\N޸<E&\vy%TfrytjmǞ#>2 rMJa	`Cp!
7OuU0]ۤ*qB\gڭ3 q)ADq"(UqKih=c?QEQEQEQEQEQEQEQEQEQEQEQEQEQE$?x:|QUm$8c*PFG99=}Td@nq
؛_dʀoebpHR1֔[$);GO뎇{}3ɸYB`vpz~ҤK)"whg
d'y)~c=(g11\Xqx<JYϤb_0>l-rzc>4ɿIU OQ'T:om?"&D^s^7??ʼ=NZV~%SV%tRAH#i`i_cAW_M@w$ӿ甿'ZtPg<??4/IV)"O*
;yKUEf`i_NRDUi@w$ӿ甿'ZtPg<??4/IV)"O*
;yKUEf`i_NRDUi@w$ӿ甿'ZtPg<??4/IV)"O*
;yKUEf`i_NRDUi@w$ӿ甿'ZtPg<??4/IV)"O*
;yKUEf`i_
XKp~ֺ*ǸR(rUP)tc!I4*I$$Ӛ!
q>AV6Y~h9R#>Ur__Q__U(??eG??eW(
~EE\)5)S{Gʹ?gۼ	c8(MOO9FD^s@{G-UWZ*髙?u\tQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEVَNxO?wj_}^3	:9~a[{{xPǰԀH{?%>B4Q@Q@Q@Q@Q@D^s^7??ʼ=NZV~%OXUs5W3*(((((((((((((((Ǔih?($yӬk_WP9Bvr}7i4';@I>88If=X{Sl?a^@QEQEQEQEQEɿIU5h~%f9RyEbx)n0d}jU-}QoUh_lo1}UZ(lo1VoGU-}QoUh_lo1}UZ(lo1VoGU-}QoUh_lo1}UZ(lo1VoGU-}QoUh_lo1}UZ(lo1VoYM$'Q@,?YqEJR8"s(((((d$t*iIU4٢X|ǗkB7TUjZ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@D^s^7??ʼ=VH$gldG*/
;yKUEf`i_NRDUi@w$ӿ甿'ZtPg<??4/IV)"O*
;yKUEf`i_NRDUi@w$ӿ甿'ZtPg<??4/IV)"O*
;yKUEf`i_NRDUi@w$ӿ甿'ZtPg<??4/IV)"O*
;yKUEf`i_NRDUi@w$ӿ甿'ZtPg<??4/IV)"O*
;yKUEf`i_NRDUi@w$⪌E8
ԏWCY_մ{kWX9Z^Z^vhu6Uh1Z^Z^vhtEkyyiy۟?//Ѣe4V?Z^Z^vhu4?hY?Cmn|DV?M!_@kyyiy۟?/mn|SC,Fh1Z^Z^vhuS2ykFe5
R2ڵDdJh

c&A#"
<!--webbot bot="ImageMap" rectangle="(105,41) (175, 146)  #SHORTCUT" rectangle="(16,42) (85, 147)  #MENU" src="c9201.gif" width="191" height="216" alt="@!9" border="0" startspan --><MAP 

name=FrontPageMap><AREA shape=RECT coords=105,41,175,146 

href="http://kasem.sstplus.com/chapter9-2.htm#SHORTCUT"><AREA shape=RECT 

coords=16,42,85,147 href="http://kasem.sstplus.com/chapter9-2.htm#MENU"></MAP><A 

href="http://kasem.sstplus.com/_vti_bin/shtml.exe/chapter9-2.htm/map"><IMG 

height=216 alt=@!9 isMap src="chapter9-2_files/c9201.gif" width=191 

useMap=#FrontPageMap border=0></A><!--webbot bot="ImageMap" endspan i-checksum="55934" -->b0z\`9Ŕ-nz\`9ŔPNG


IHDRzsRGB@}0PLTEO&IqIDAT(u;0C+eȵ{lG-B%B@W$GDdo:Ȝ0^Y8]>uҁ>>џ\|C!s1$鵢IENDB`Dde"

SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro9_files\kasem_files\chapter9-2_files\c9202.gifc9202.gif (7007 bytes)buJJGԶF"Q4nIJJGԶF"PNG


IHDRK<PLTE𓕣s{W/i86_dqDTo0K췓aFwßSgeu#^Utyp4pD88D@ ᫳I3cϕ;CiH$\ť]]yltӵX:iq.L0P?MUk+3`idnDYِEe˳H(/ݬXupuT0$FNPDqP[uV:AˮM76oֈlspDy$$_Tw~ȬYֽpxnS^H,^{<yQDIV"W.4;g#<G'>'証I4<n;UHqȭȵ oT{n<o,>I\i}} $HW/YY:T<y8(FaFe.
<Lӫ~YqNiT 
G*Dӹhl{?Mmem}~d:pd"TCL\㜪4,fD[uG<iќpM[l˻‘[MMmqK|(,gq\eQKVG;E	
 \e|s{󌒡Íd0n<Q<$Lin•[|ҁLּOYlL\nɽ $q\yq<y,$/,3mI_d:DV$g,3A
{@EV΀CpTH $0enTay㺣8&0`FM,ΞHvӫ8$^~/fc~XaV,<
<`[g𠠤{"bKGDHcmPPJCmp0712HsIDATx^ٖ(EVyn 1`&a3tMUe`/x@߃%	&ac{hxK.6@	~F>vYOTϿ\}S}'Ꮵk~XB/j#„Y:'9.
tPR~9{AC[ßn)%*y,ߏ%j{Pj)\|%sX:X~IK%-W%DUly/8KfԦrAOxX4/R'ˊbc:{zpT@0acrbIaD(ufanB?uW*$w9pu|
(хY"#,:dK~.Czq3KcSQ*KUD
UT{LҙPg=V(tkY$:~{հ%iZTt	~Ko?wޱd)RPUd9WLKvDIrt_v_2Q?e- SK,q6ȉ%]:K͇4l	Rsu5(RR%{,~
;]JN6|&X@]g<>}_:)u=*x X-Х@KӴ'nO)s/%ln\;Ih&<P\kY6XRKR<<	;`	Hy,IyvX$%0 $IK`@`Iʓ'a,)%)OXRKR<+y+U/~wǷ5B&Kjq%y{oF-?Zzk,CHPQ:XtyF8.X:SVQf~ʑÉ:9iG[s-R׳tYAb	ߦhZ!rPLu"VN7yIs|QTqh{D>{%N3E*MNLcRNI1HQʎK}RRW7C,yflNM?;,bIWJ|g+MegP`h:>>m2IF+t!uYrr8in%7域m%g9C}I|oŕQd/	b2d:,	mdGN#h'y*|,w+=ѣ"Kzzx*8}θ޽,A8frXXJZ:})ǁWK/'Zq.9wįcy 7a
c)pֳ"'g}|z֞y_fO,]=@=^ՠcEtq.{CL,:a(lsRAmܞ+/_6k"KDݰd̑üt)J]2Q&;%XXLh=ѳ}oSޗq-*Òȅ+<ҧi~Q~GE"EtWYV1Kja`Iy*S%ZӅ%喣"GoffMo9eMUth^*tA]ɌKACEcA%2>K&s'%+{B؜eN{%3/%%>4YÊ'T$R%sR%%[zrx}o%:..=8٭ef9N3r%ߔ
;OZS0_*@KtÒ`_E)KL]~p(ytqd{w,9#Y25(wv]
wmn+R6K99?j	p"bBҺd+=:W㡥gqQNdg;߱EYlwnPm%Yj9W-?GcɜE<'?/)kqf!uiGd꒜RK9n]2:/<ÁDb)n5'G978K%6	km\j
EOZ¡uPދpwveRR/ƞ?$ױK>[u(΂K>[8Gq]t,D.=qcx+&:e2U]_?>9v/{?7J/g0Dzр؟N.y-GJţc|[w5
6/n8kK(5͒>e/9vKfHq}toކ%e4[&^:P=E.KdI^읷L7R4O[tqr"Z[[/xrGEX#<s)SHҖ-.i?8.^Kk钝
iCgt6KKa%sU!g2FuZbEt)('蒼O]6
.I{tc{R:c8HuǬ$23wF.	?d0sIPv/ץ){ܺntrNX*]2E$z`)o]:)%2߿=⚦	hӥjen-i"oյt˃L|:RחK^Ee鄴Y* zܖqbB,1Cd)bEJdqs=7ՊPU֡ė+1Uju)p7t$:%/UlTW5_?k5MR$˷DY歾ItkQ8!^_%?tmsQ]z;mdG~{钞#tqoM
U4is^.;w]ZOၥt)(Хnp.usrnN[`8k
IOШZ'`r]1%\ҏ&RaMnO"HL|ss/.H~x%9׿rm]r[hY֥Kb}o1&j
Rzi[n7ZGQ]KO=K'}}w.	sV;蒺_ɻ]zKEӑz蒽FA+NX%2\Wt(L`鱠:P7]r~{^!~n?]ő㞊Kq>1Ti]_()ϙ%\F;tI.">U[ܫB^v/j	$NtIYZH2w,&vu]Kwg{׀ZRKr;~jX=T?Y'Xb]*!,X%|1ХaC3[ŠKElB\U.k[KZn}p.(7(ץI=["o{v:>ti`һ_ХfcKozcC{iԥoz@/(09r.> \ULÄ%gUf5h=qd@.}tDF	>7DM!K3ٮK?b#/S%xS&4;K%^IQwKӃsm.8@)Mf_ҺDq|?,f'&Z1]R9)KˢS8q:߹~os޳S֨K=}j<gL2M`ivu)Hv	4;KJ X%ХaB1Eq̕_9nvKGpC
U%ܯr}.~1r]M='XZ,ti
[cҰbХ"6p}KgAе-֥n\r]*̄G)ץIX'0!=^KGpC
U.j]*3W4s;ti[I]ҫ܉楈j.K$V`ivDuI+O 4;*bU%s
t)K%%B<RXu%t%Q^SM8*tizIs#~Y%Fiv0j/K6]q&Eg,K5iI]*Zv)F⢪."NХeB~CK`@	̀.%]Z"c44FE.~ĽKu	Rیd޸pR.
m|,Aٰ5.
*]-b7OzVߟ}ytI=DwKpY6&k,U2u&`Y(j];y$<]sK ~蒠36];.sgcХ/v蒰C5]7-.tWХ]#ߡХN$tiϸwi5t[w4
]1]ByCv7Х"ޱХ4tixwm-t{w2])ڝZKtI4jPNOŽ)$V.I݀N`WB)$
(煾0^vSX=E,vXOgDҤfgM%ED5aXdE
0%tbs`K}|
HXK.K
#BE3D,_*4;4q{!pbN]1&)*NX%恥ف?L
%XrLVc,ʤQcI';Jyod/1J,Ѩ;v;N$xٹJ:,qXB,#Xe%U,#,]x[5WKL\.Kz9<p*ۡa<	^>~y:e<<	;`	Hy,IyvX$%0 $IK`@`Iʓ'a,)%)OXRKR<<	;`	Hy,IyvX$%0 $IK`@`Iʓ'a,)%)OR;fwXWtIENDB`
Ddb

SA
.E:\vfp\@#5"@5"B#A#! Visual FoxPro9_files\kasem_files\chapter9-2_files\c9203.gifc9203.gif (4404 bytes)btHOS0]Cm$pPeMnHHOS0]Cm$pPNG


IHDR~!âPLTE
{@EV΀CpTH $0enTay㺣8&0`FM,ΞHvӫ8$^~/fc~XaV,<
<`[gs{W/i86_dqDTo0K췓aFwßSgeu#^Utyp4pD88D@ ᫳I3cϕ;CiH$\ť]]yltӵX:iq.L0P?MUk+3`idnDYِEe˳H(/ݬXupuT0$FNPDqP[uV:AˮM76oֈlspDy$$_Tw~ȬYֽpxnS^H,^{<yQDIV"W.4;g#<G'>'証I4<n;UHqȭȵ oT{n<o,>I\i}} $HW/YY:T<y8(FaFe.
<Lӫ~YqNiT 
G*Dӹhl{?Mmem}~d:pd"TCL\㜪4,fD[uG<iќpM[l˻‘[MMmqK|(,gq\eQKVG;E	
 \e|s{󌒡Íd0n<Q<$Lin•[|ҁLּOYlL\nɽ $q\yq<y,$/,3mI_d:DV$g,3A𠠤c
ZEbKGDHcmPPJCmp0712HsIDATx^r:DMB}?ڼd+!	|K ?6y~]~"_i
;eĿq[l~-cn#ⶭ>W==?пU}eh?qrga>_!|r<U"~m{><dQo˵:lw<m?o>.&]ELP~O>ПJ;q_ꏤ		'S;軛7>c{gT9b7C^>ǽ?~~Cl]:;z/oYqGIg*%ף;{c*iGP5\]'VP,ū@o
tmۡc>|W.&|~&Zv$0ӭӥjpPshBmz>`@`xlv׺YI~K	H/}ɬ\06_i/PQKUKp/4ޏK(
_J@/% 
~?wYM'`zmxT|QTNl[PQKUKp/4u?uT~_*@ipRx
g<oEYmx-zux47gW-'~6V?b,~6ߵoLfFno47?:yWVT'> 9N
pe5A Jޟ[z[&OIȅ_|/3[kdC-/3O'Ƕ'&#MEgGzf/>/W@"ރ:TŏVgx.3>OVp	|VEܿۂ_ڬZ~i2[vدI0w]m}ߨͪ%8fF/A1io?uyoTfK3MO/48~)ip߆{骙='ۙ-pte"c>e=,~1i*oY泴U\`ÍV6^T`@]WC痽IC+OhXT[N)2GSؾWMWʱ̗_IfUV=1jV*UE՞;*=c>n\oڞ_=כ~1Z^|0Q`OӊW|jVf	gbE{FZKPQKUKp/ʹ1qK^-ߨͪ%8foKsPQKUKp/4o̓;Z.8ޯc"6_*jc>ԃ(~HtCF/mV-Q4RJc>~~K	H6Uk\zo?OL)?/% 
Nox4V🰞\,e=܊_j~1lgq?'ad9S;u9Ś}_OvGv#?ּ7zUAmJ
iL6.hp4g'ݮdˮV@>JreJ }pROȺP??'PK<|&3ZmNwW4φ?,꟞
/pdqСʧly&CnPOPtA4瞇x['l';;;Բ=P#3EM9~J8K3aڟ鹟>/3+]p_E[koTfK3RJc>~~K	HxTx?~s֏^,~gXT48u_*jԃ(~~>E*1C(~J@p̧d_
xI>/cQlJt0xT~_*@ipR_?p?KK.&IENDB`DdV"u

SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro9_files\kasem_files\chapter9-2_files\c9204.gifc9204.gif (7872 bytes)bgI@T(=CG[n;I@T(=PNG


IHDRJ;k^RPLTE3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3f""")))UUUMMMBBB999|PP֭3f333f333𠠤PXbKGDHcmPPJCmp0712HsIDATx^E##mROWa7,o?`^^|m'xDY *}Kf(}S_T6U˿ E)(!0Y-PJW~~9y(Koau>sjsJ^W,2uR~`()m:PE9HPZW^R%(iJ%7_!J(UkYR.Q3JD_ݩB7tţO?۪i?ۤ?f5	ڶ"B"xV?s9]D	%E!IYpmPlKǐ=GOP^q>>"S	gCek@ȴrQ%:Fb~6wFV49FlÈ!w|&*T"JƆ/u4a^F\"$9͌Jl-(eT
'ZaG5IMrIlk"DCrĿo@)+t
`<c$?Ҳ.z(]k6zttՃ;+yCzhKڨSgJeeTH(j:.wE~/5S(:`ֿ~9Zb ͓(n%7XjbFUWJUI95FR?]]$̀qDXlKo?у0<@Q!'Ѧ?G^@i_Zk-m̘&T	(X$bFdrU"J"fD&P%0 f)w(NX)w(NX)w(NX)w(NX)w(NX)w(NX)wϨ%Xe2S
5[y"l-.wu~֫X(CIl> f[do-OETx:
$JytX&XpN	+NJ_):طz"`
nyf%Jnʨv:L-[hOv	~IQjΖ@d>JURzf%c.c;NK)3,ݞP<
G|GFI+KZݶvy.+J}o-G.p(W%|S5c(yٸ)NN|PN.I.7Fӂ,ϪAq ;ۈ3&+Pb^tr*Qs(G5ps
|(KۯJgSB.޽P+٨@SV	LVJ`:oH2ʮL3?o\^wo~ΔGLT.n;ۉI|VRb]m߿p@I<ȝhpL";m(l1z!GmLoP'0.Ȃu#7E	%F$O	&y2
׶]L%q(僨26T
|Dkv(Ŕqw(e23L@)K7^iϴxHX)dNU=UHkN+5d;l}BI?;@Ib(7݊E^;wal[Pr!#(oiR,FIĮ&p*}{>8f!G=Ou@ȋ8
Q+re*U%;G5oL~BI1I{6ag\%%}0Pc/%6
ԩē#j'-VJ8h?>$PJ4+xJ&ֶdQ2YGɪ39%9
|hlGuQA8Jv.v*)ari>rӑ&(UJmʐݦ22\DL##}ijeAҲTpE>`dbt`76F-;fPJa#h%8_&H]ȣt@lSlM!!~㩒l<:r(,V6wS1([T*RTgD͟W:3%,J[B1خG<@^&JoT
/eQ+ҕ>n"SJ^n*y<J\C.\<֓NdQ]'ZezJ*V軡nm(Yj()J
Wx
%(&u᷎lP7I.&P>jN{eTBZbB‰1|SPw$ZN#J5pv8a$JvL
877JUd"犪RDpmqR~/mҧ|3*'w0k\Y`UkNpHR8#@q4*VʌēC c)uu|WIUS2V%kV%Q2Sve֠~(튼*U~7=pyqE$jҫTx:IԂ[Jmκ!ޤJo7?8K%亖WV@
QRVD7E]\-XxTvQ2G
'=:IԴ$[M߬Jޤ{QɒtZϹwTqrJK=OXɄցEɠSj
5<
M鴳`)%sY
P:yvx*EשEsT.Ǫxq:K,)~1ߤJy޸ӞUM(81J'i\XҙKήJX)[QYq2w0!/W%xF,J'7ZRytJ'S%gP\)u!Ua*'|*}졕C4'Js/A*釿jԿfHNJyGNHtca>P~V(MJeq(V<.QU|81\u/+kSħ}[pXKjY&w'1NTIYޔ0`v7eI-KdjeQ+uoS%EG'eY&XqbLDO#d3U*n4g1702O$,vuϬSN@OoAt3RI
FY'*7Izʼn/̺]Q7Ei(rG
965x
\s)gu,,ʢRpsM/VCBQw
J–h[qF	UTtO;W=peiV,g7pҮ'8\+NQM+NC{$b[&.ȥ)u:ބҫzpT&v{?ͳWݍT6UV6d@*ZKOfKQ=4JXq2B<˩E	虜ݭX˩R۞u]NOs˩R0(Q1T\H|a𐱀*/WbsdӖ+N"ۃqǕ.QRHޤ6@bS߂gDJh$ɺNߣ(I}+{L\c%I"V]z\. JW(XPo	Yڹ	ߧ7;[qm̺]_jv4JPKt8a(񩔝
9B^YɛIPj8L,J*bx_!OKN*Cx2U'yUz٥z,GĹΌk\qOUj̥yTIIU=WjUUCδ1W%r7J8`At*]?t*Q_qԃsNp']4pv%iHhʼnmƣt^qn[z|xYxolD>(+Nsh~]c$$"t4Yn4_[K֤uU6;Y`#U[`9UŠDf*aI*%,Cc}5TIzwʯpw
+.@*Sd-ћ%A>rTsfzRǝ]J5@J\>(gawoWjW3JbߕTIPPBi[SbfU'TVLCL{K,J4ppq%4-
<$fLJձRPEҹj(AJR@$eIR	Ks+ZSR4pRL?O	Ic"Ѓ6Z{!}X`I$WPgIz*l=J|4!Ҹ¥9?	.ޭJ'PvO(W4)7/B*嶞ߕ28QP'}Ub/J'-J|S5R֓@Ī$JmP'h7ۯTo9n=(U+d,]5o=;U)7]=zpRRVX\RTiSAur*-IU1Ӧ,2TiJ,Y(Ғn
4^v"URDt]{Q[JF﫷ϴەZdP#˦-0TiZ,V0bPTѠJKkVҰ`0ޒq*M-E,PJ!1rqPJ;pC&rE*-
U&+:Ti2,[IU
wF0,D:PRGITJ/*J&lƇáJygMb*
"oH4n*f{ UR9#W./7057(%yUp[Io+Q܋ң
Q=8%g38`8͜GIR0te>, 8Uښ,<TIԜgUU*	tT	{QnKuūU~3Ҍ֫R_ll VժT
C_:JP\6mJӺfAs-SQ|`}Ll͋VJ?X@_HzcgzF*uЕP+BS"*)@,{>P	?TIΖ{U*IZs缠J;{_P%Y{Ti_K$m]*yzCmgP=>PV1OҎ^Sg+Ti?1Tiew4ζ{U#kUiݝ*uVaI?K*]0zUBt=?(	z|\V$ɏC8r*IY@J2vD.:ݓRn`@EO
(BJR(G0}L}v.ƕIb()ߗA?\[;BρܑF&$זEIQdH#@Im3fP{oٰےbU4#}eҪdXS\5
Qړ5#u2()ԀR>4p%EJ$:&NrTinzJG%I%ҙ8isknI"dkUs=8-O=9	).ϴmR|ر(P*vڜ	ltPRI>(;m΄@iN,X*,CMC
Yauְ5NG9Lc4+V/ߨŧV:wu餙P2$J`@@IȐ(!%!C",lP2$J`@@IȐ(!%!C",lP2$J`@@IȐ(!%!C",lP2$J`@@IȐ(!%!C"/JvAY`F<y7+IENDB`Dd$

SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro9_files\kasem_files\chapter9-2_files\c9205.gifc9205.gif (1502 bytes)b31g;uC0wn1g;uC0PNG


IHDR]PLTE3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3f
{@EV΀CpTH $0enTay㺣8&0`FM,ΞHvӫ8$^~/fc~XaV,<
<`[g𠠤|bKGDHcmPPJCmp0712HsIDAThCWn0[o-jlaia8n=ϪlK\,\)N0CIqf`ah9cEYAJ-9(ަ95=~XD92%oG%C@8K@CUu]u(2(YnSS#+OlPș%pFhLQUF\1c2d?gJ>11*2:ྉX&»U<oA SȊlTZ#<ώCIHyVƵ]UDJBaWh%_YNQ@.08}WצXnB
%":3sY!F j҃,^
̥2@AaGRhA-l?PFƸ&NE|\gV	JcXH%+9C}Bn{17Ms`tz==oɨZYDpvZ;!-0z8p3z^Ӱ!?yqvaqkY3v*`hh5;Z`<q =2-:u̱T˥'zC@t)^aԮq0ML#qNci~%)+|p/JFhHq'Ym<2}yw
1.dvDMIENDB`Dd{U

SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro9_files\kasem_files\chapter9-2_files\c9206.gifc9206.gif (4167 bytes)b,GB؞+N~nGB؞+NPNG


IHDR[uS;PLTE𓕣s{W/i86_dqDTo0K췓aFwßSgeu#^Utyp4pD88D@ ᫳I3cϕ;CiH$\ť]]yltӵX:iq.L0P?MUk+3`idnDYِEe˳H(/ݬXupuT0$FNPDqP[uV:AˮM76oֈlspDy$$_Tw~ȬYֽpxnS^H,^{<yQDIV"W.4;g#<G'>'証I4<n;UHqȭȵ oT{n<o,>I\i}} $HW/YY:T<y8(FaFe.
<Lӫ~YqNiT 
G*Dӹhl{?Mmem}~d:pd"TCL\㜪4,fD[uG<iќpM[l˻‘[MMmqK|(,gq\eQKVG;E	
 \e|s{󌒡Íd0n<Q<$Lin•[|ҁLּOYlL\nɽ $q\yq<y,$/,3mI_d:DV$g,3A
{@EV΀CpTH $0enTay㺣8&0`FM,ΞHvӫ8$^~/fc~XaV,<
<`[g𠠤{"bKGDHcmPPJCmp0712Hs
IDATx^]ۖ(Y[F@PP.Q3=]]DBC^Pŧ_o#Ө=T 	+KēG@KQ!5LB;#r~E8cUp]ic:E\a4|Iٔz>#*b*Lx9W>2(C(@QN{*^(
'Ts3p.
)lb7/B
ט~EC7IT ,DSFPȵ0?2E"=!dlR\GSBJ*ipUjH04Jcw,=+i:*p(r
T
!6hj޽*|c>29aC,,n	_J靨[^#/zi}SC ^xgJfFiB8*5[c~Txc(EE2(gBܜ
Ȯ|seaǜ%|znwWqWTٽUw7\~I[4Yׯfi߸~m⪵F!`O7zS2"نEX &
DNm{&;HƲ)TyT$5L6LFĀHG0whxFdn~7;ܤAT(]1¶Q}I[*MlrmhW3)9p0BTH&߆^>c 0؁Wf۷#TPi@r#b?"o|'-J("c_hᜑyY/"'B8Ks8\hD4RGYEq?4=,&P1BYO$Us3S	\'qf\2j#j.̉6u20̀dXsaLXy.Ls|eqZ.,sȃ/hA.\[Nظ6._C5Ǝ%X3[\-j ح*+_ԅ
Ax,?Y2Q0Mj'WVFä*qakrlSO}}(h*aaQ0\XT?JnLJ€
p@%e6VhS$[Ycf^\~ʟ^nUVgS[ׯ.j⪋Zty.UPF~1yhFh/Em]6V96a}/TSHAG{
PS։gu>c2*!g	T./AiᝨXs2&p8UL4W
j$ĵ꜂U=Tˌ'IiW<'vgeOqWUG92%h!CL=x2\0cz`΅6UD5*p56jQ=8^rbݡZ{hqO#^\W7pUB^	IAX5UmLe+gr>~!
U2~ϙ%O=@*uZ30>*6J}Úp0#^x[يtX
#**,`Didm۰ȯBTTf 3W80.|tc8	Tmy(|T|-nX"ߵ6
QeAϾ{,[)OYwkb&f%2b̖,)ha?z>`Y '
叙Qr3$۷
'#|=v14yTn6z|'\ўu.vwJ`w>oE{]9ў"H\*=hps;+{TKH3O?-~s\
G=(ibU\hؽ~j>?LAfP
P{dߙvRnW}sM<ҳ	b`uO#\K>|Lh\|T$H)@"/tx(AEnq0k&l`b-P|"*EFU>&2,N6}i1ZC	=o"?BwOz(>Wp'/B%TS}	kFCk8t&,qH'jU;В:{ڦtK..mA_JIAӵK5ڞ}6*gzɴКI;{I[`s8Ce;_ś6hX7nB۫vrGxm+#S_~\{^W[7s*MgmY`e4zdZkxE@%^ЖWǪ|}BEW*^h1XJ/NQ>@ry<KڙMg.Nh)I(wj!σa}WϞDt/@稰TT:cҙ^}U
@c!4g?xŕqxJ_fNgv\ۚ>%weBi7s:=pRٻOIqv+mYD&ZF=6Od<A!͠չ(ف1”a&٬g38%Qz(Emދ&TKʧ6){$!@[=Z&lijh0/rVk9Y{!	YlxL^*Sw2"3B.a-n9{N6\\Yef/ׇ7Ft{rsSױj߭v!d<K<rYœ⌘eִ:*r⋹*oʅy.N\*f+nQ(;ҰI#`,1*0>&^5DK:R[	JV̘qD].5}X!:“PP\iMžozR/FhaC")"5ht)R0ʒ+4W/=T%V
P5A kTlUDL%z+z"z{] 
@v)%GZ=РQA#91@$T`K/CQa*
&2sE8tp
NՃy`dK
gmrTTK*eE	Kl0ʅ8Ѩ"ZHHM&aeׯȋ^m⪽N{T!q+!{dpZQfWmfe#;@}5iZPd~Bz_Ѯ;aۍ7JjQ=}Qm?⪽N{q
KoIENDB` 
DdYQ	

SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro9_files\kasem_files\chapter9-2_files\c9207.gifc9207.gif (2888 bytes)b
+&Dz!EWn
+&Dz!EPNG


IHDRmPLTE
{@EV΀CpTH $0enTay㺣8&0`FM,ΞHvӫ8$^~/fc~XaV,<
<`[gs{W/i86_dqDTo0K췓aFwßSgeu#^Utyp4pD88D@ ᫳I3cϕ;CiH$\ť]]yltӵX:iq.L0P?MUk+3`idnDYِEe˳H(/ݬXupuT0$FNPDqP[uV:AˮM76oֈlspDy$$_Tw~ȬYֽpxnS^H,^{<yQDIV"W.4;g#<G'>'証I4<n;UHqȭȵ oT{n<o,>I\i}} $HW/YY:T<y8(FaFe.
<Lӫ~YqNiT 
G*Dӹhl{?Mmem}~d:pd"TCL\㜪4,fD[uG<iќpM[l˻‘[MMmqK|(,gq\eQKVG;E	
 \e|s{󌒡Íd0n<Q<$Lin•[|ҁLּOYlL\nɽ $q\yq<y,$/,3mI_d:DV$g,3A𠠤c
ZEbKGDHcmPPJCmp0712HsIDATx^]ے $eNVkr.
qLlks3vdcQ
“!z͸(lfB\0JoŅ|>7vG<$Cov.>L̡1.cB2yhL&bنI22r&ZcA;3FRK`3
Ap2ƒÇ<$:HU22D=U]HC<h0G4JUEe#mBX\w?X-z$B8X>qQE͸Qp/-\ftDP6gB+u^GXh_HD.հh1MVXoq0x˟&ѧ\_5Hi\Key8l&@^|_i
KSF:sϧ.ÒC2"R
tMQYw/NAΩm杧zۢu=||t>\m/u7~:Jѽ{'"qEʗ*K#RP/v_/yE]_/[`8E]_/c/y"i]"OGIut[@E_EXDE/v_HGy"i]"OGIut[@E߲BWHMiG>_J6[ՃH
?6dj(-3t/ul1ѱ,_z%_oaUONjCG=Q?<)NBwq':;HYVs{
8fJ?iy
|9?NaqXD-~j7p.9f,gEhlpU:%1k%VGåQ.;|(O0?G+Z`\%a6z_Z_~k5oIL3eReKcR{~#:QI/ٺAV\Ɛ>KN/v3OY4ܛ0SŽؽ5;n8}~?:p9_c>/Rj/R:*:s^z\[+.We~/},%J.Gj+<:_YHHV~/Iu;=DEcEΗZX"GRp|_|IJɾpe! G7IENDB` 
DdYQ	

SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro9_files\kasem_files\chapter9-2_files\c9207.gifc9207.gif (2888 bytes)b
+&Dz!Ewn
+&Dz!EPNG


IHDRmPLTE
{@EV΀CpTH $0enTay㺣8&0`FM,ΞHvӫ8$^~/fc~XaV,<
<`[gs{W/i86_dqDTo0K췓aFwßSgeu#^Utyp4pD88D@ ᫳I3cϕ;CiH$\ť]]yltӵX:iq.L0P?MUk+3`idnDYِEe˳H(/ݬXupuT0$FNPDqP[uV:AˮM76oֈlspDy$$_Tw~ȬYֽpxnS^H,^{<yQDIV"W.4;g#<G'>'証I4<n;UHqȭȵ oT{n<o,>I\i}} $HW/YY:T<y8(FaFe.
<Lӫ~YqNiT 
G*Dӹhl{?Mmem}~d:pd"TCL\㜪4,fD[uG<iќpM[l˻‘[MMmqK|(,gq\eQKVG;E	
 \e|s{󌒡Íd0n<Q<$Lin•[|ҁLּOYlL\nɽ $q\yq<y,$/,3mI_d:DV$g,3A𠠤c
ZEbKGDHcmPPJCmp0712HsIDATx^]ے $eNVkr.
qLlks3vdcQ
“!z͸(lfB\0JoŅ|>7vG<$Cov.>L̡1.cB2yhL&bنI22r&ZcA;3FRK`3
Ap2ƒÇ<$:HU22D=U]HC<h0G4JUEe#mBX\w?X-z$B8X>qQE͸Qp/-\ftDP6gB+u^GXh_HD.հh1MVXoq0x˟&ѧ\_5Hi\Key8l&@^|_i
KSF:sϧ.ÒC2"R
tMQYw/NAΩm杧zۢu=||t>\m/u7~:Jѽ{'"qEʗ*K#RP/v_/yE]_/[`8E]_/c/y"i]"OGIut[@E_EXDE/v_HGy"i]"OGIut[@E߲BWHMiG>_J6[ՃH
?6dj(-3t/ul1ѱ,_z%_oaUONjCG=Q?<)NBwq':;HYVs{
8fJ?iy
|9?NaqXD-~j7p.9f,gEhlpU:%1k%VGåQ.;|(O0?G+Z`\%a6z_Z_~k5oIL3eReKcR{~#:QI/ٺAV\Ɛ>KN/v3OY4ܛ0SŽؽ5;n8}~?:p9_c>/Rj/R:*:s^z\[+.We~/},%J.Gj+<:_YHHV~/Iu;=DEcEΗZX"GRp|_|IJɾpe! G7IENDB`gDdJ

SA,E:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c7003.jpgc7003.JPG (956 bytes)R@I+ʁF@I+ʁJFIFC
	




 ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?uycq,$XW>*8K#AXp9$~ 弘:ܨ`W8tvS9E,l Ͻi'J[$O7z'necFA(8=C^Q:JGU8ں<w43%'~X$')w]B5GxMSXEhv#b0Yw3av+lWOVgP	b*pX2Iq}0}OB#@gDdJ

SA,E:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c7003.jpgc7003.JPG (956 bytes)R@I+ʁF@I+ʁJFIFC
	




 ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?uycq,$XW>*8K#AXp9$~ 弘:ܨ`W8tvS9E,l Ͻi'J[$O7z'necFA(8=C^Q:JGU8ں<w43%'~X$')w]B5GxMSXEhv#b0Yw3av+lWOVgP	b*pX2Iq}0}OB#@gDdJ

SA,E:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c7003.jpgc7003.JPG (956 bytes)R@I+ʁeF@I+ʁJFIFC
	




 ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?uycq,$XW>*8K#AXp9$~ 弘:ܨ`W8tvS9E,l Ͻi'J[$O7z'necFA(8=C^Q:JGU8ں<w43%'~X$')w]B5GxMSXEhv#b0Yw3av+lWOVgP	b*pX2Iq}0}OB#@Dd

SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c9301.gifc9301.gif (7484 bytes)bvt|~éD:R̵nJt|~éD:PNG


IHDR=PLTE3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3f```̷ "$( *"-$0&2(5BF𠠤5bKGDHcmPPJCmp0712HsIDATx^흉(c:m#6V CQIAڝ#^~?=׽?=˃\]{|%~w/	3%,xPH?CI["˂w%-o/3%,xPH?CI["˂w%-o/3%ZnׯeK`7xWJ}
-7
^:%Msuנg]
Iu]^r욠oww̽7.zѴ˾[&loc{'{%9~٥O؋3~~=OKkTgZc#+u2⡮1oO\Dxwța}yE|[q4gwh;S3gtx[)w"\myЍRJFx^{_1}-x[:&4T~^xV?{3Kٸu^E]ևö^`+Řx{WV;0*fdIy[oniЍ5_<${sߞE5&E5mo dˠ}o؃Ո񚚌mi8=.lKݱkwykڟUs5Ͱ;i{d[F#~8qYj[ħ+7xlze\fxtTޮ<,4x-spvy u홾gUzJx:5As%ך9ooY}amo7>#zዃcnHě!;6
|]ℎ%y/̎jVT](
↷YtPt
;;<iqL}_j!o,6/H	xFm~wOy/8E^%$-߱W=?1/?WxW-vr)sV#ō/mUEK3)٤LuhWԥKח(5`:Wʼ`h&h5)7"/)FǺ(Bn>Y!+ƛrϵ~gc;	8U	^Xq7
Ŭ=M'U6^c޵Μ귉<76;FUo2+";<-V*2ie;=
u1ߟͷ	:>#u|Ώ\fpmk{@{g6yt<^4\)Ro̟weȞ|yI$>mk9RTcCQds;Rxo<yc@Ik1^zK$3IB^%;_T'Kɢ x1,!
^MR5.jN{ɍfQ@Uc=Fw(
=DGF#=c7x	1uh/=j-[-u?|.	Z̟cs$0Wk>
Ks
si=me
si=-\leX{F<wׯIU[*7cX5r;gi_Ŝ²svo7}f_.ZvF|q%/S];P=Y7lԀzUދs[q"CC1KM7 M7m;^LG߿oVhO[7]BsEr_#>f#sSn;&3ȩmY~7ylrF5em9oMO5欫o/XcWN\Gj^0Ǽ[S`I_oXs7m7m
9s(׼9lwU%6xzy}]	g^	^ݴ	W7yp㯽Xzr:=oа<ߧhz=+J%:F{yZڱ2e{ޫeV*U5</I΋Lؤ~_8xwHEkT_r>2	tsUb5;7XK y6"s|=η懖*Osy9u=QHicUq-#QRwx/z(noFt~hRn%;e祉懮/\<_1#&jo%zk~ kBЍT4%$ݬ?7,E鍈j\ףq/e7#Yx'nНԐr;,aS5-fL~h;n&%x^EǼdНW.dF~(pG{U	ƺ{˛7qx[*o]BS3=mz%n=3mmz%xrzqҽq}֧'ҽ[7}^xkDt\T#IIbx2!,9␬%(*_+ߙv+uj?s9jR%IeS[7ۆ&cӏ(CPR%g[&W\溫tp}oRh(oHm*Jх"MY|r~(ws\lfE)qk#
[^
|AwNVK*bYnx2yUp^e2C:x=Bg{~)?71O4֜_1(D7e[g
ׄNg5Û}-ul-?d<ZyUҦD|S]J}\'޷A^Gis֯*b=R;R9>pZV]:ןߗGWKE||pN{kw0h%{P;o6c<{<
Ks~M^
c`zhRXdlѲ̹yl{]fN]g1PY~LIwFyB;^$F[s忼y@/1edjN%	{ ^k7i9RB)[=T=2CU0xgh&.ƞ,P=ml`>>+?TYvt}_$ѧ~p-ZŊCSycM[ sm
n]o؈SCm	 Pyoz~ݾrBmlH|nRd%
Bީ11c}#-=oya5'C^s=ox
ޙ6gS1~>ىNNmYqwϳs[>=Nܣ=ɻ~P5.q@q
ލdF3{hu4{.	Zo:':x5P[̧SUČ5[87& Zx'm1c%=s>"xaBޜ!{կXqnw|<R	؜RԂsrd5F)}Dx]6YuoMT}<>Ah
.ڤe䇂w+r7x_g?
޷
%v<i}2CNAX-|߲׉XZ.)6v#?4SY/.n9Pi7cC~	wC[>Fuܪ]d39}tsN/|K"Ex"2]Ɵ=˻LGkօ=»@=G7kLEIN\k;2/݂GQCWoܡhԓkܹ.p=7@khY{w=׸3xאz{g~ӵwRwO'wpg${[xBzO꿱+ְ?cG[xBzO꿟^Ke	WaW7w.(A(7V	KWyexW=Q
^rc'Xk7\Ƚ]'ߵ:`w-?L$o3>H@Z_9/fIENDB`5Dd

SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c9302.gifc9302.gif (8218 bytes)bƛ*}ʊyǶxpnƛ*}ʊyǶxpPNG


IHDR^YFPLTE3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3f"""3fBBBfffffffff!___www˲𠠤*bKGDHcmPPJCmp0712HsIDATx^]̏Tj.mWݝM<
^[0VGhC韽V@>}V+&QB/Pz%xExqg{3ƢDӢpJp'䰼oOOU6r#p|k(mGK9VJP|~{p
|(8|
Jȥ}sC~
pdF8O9TP%Ǧ$JOw\~PNրaG^kهm^1[[ɥ#J;B=P
>R0DOY\z \K۠xa\%Q"Jn6N}<Q\H؈wM%K:E|KxΙy0NyIm^o'G<jϟ4kovGQ%Jaxv\<?D	BثhZ7'X	}4.JOh\2`'Ѹd(=O#sɇ:@aãљ9SڻIFO
}Tb~}(::ƶ(H&K-p~eB|ZWiVr	W.\ŋK~غK%Bnu<Wk踔#\޾>n]^Y$%ۈ"B.9`d6xt	ʡx^0Ѽ pɧp'
$>p>^b^F0|<g{U,
P/drijd=6x&i_,Y օwOX>Ɗ]KZo0S(-y)Sf%o<!S2"ilk%E#zI~ٙP:B2CW}ZG`D\ƒq䫺%
%
Qd<z6//3@K(o2=LV>LXRhM=.lR(وGF{GkjE)9.:QN*^oQ%"aT'_!mҊ6?ƥR@՟듆K.DG"RWJ;'ӟ3j/Tå tRv\
1Z^@>\GN^Ÿ&k%ҕDY<OQo*|<*J2)m`C)JJOk=/y4@,lA9h7/Dރq^hȥҦ|4\ʯJ6KMZJ
,`\*0֬ƥY/j׸Td9d:(j4&+l%kF|ԗ~Z;^'U\B愉/(Y6SJ=.=CXȊSdK
QѯN_bM
k}TR.>d(q^㞩LeHu"*Kwҋp[U\2cqi+ڹR}/eE{YKD^|{U\.n=t긄"'i;3p)
ZoZ.b)J}_xj?Kd6_:@@>J4Or	$qI	8dw3.9OS%].و%:K#sTNJ.D{6]많KqS'__m^oQҨN[.UhWvj3/5k*[)Y<۷3s,P,R."\lp<~WUZ<'
0rP
#J}0.ۈKԢ*JdzhD:}HK_a(0l9	^u(`>ZS	*qZIiRl(xg(Y2`<<;ɀw?AUǥ!U(]l(=v}qlR;[Pgv5P}U<PHCwK9ғ{t(% Jw5P:Ҏt|Y:t:T&{΅ӡtť\d%
FۺU)'CIY-r_	J$xƥ4k[\/pyjqRKT\zՆ4
m6̘}iu1K-k"D!{ROhDu(L)![XRu(McЏ)]5K%)26\/Bq\rf}R.D`3Kj`CQ`?bkySrԯ0Q"|pp$OCbp
1]VF< 
5C]Ct(`@N}?Ĩg||4##]c{Ad/_%Ci
ƥ)f/ml^B.oMǏrbF
@\.	NǥJ]mդ
> 3QkY.BDEQRq	QQd#s|^^KD)FɊF
.At0(yˍaR\o֯R1JbΚ7Prnjq⧐"=D)t'>8*y,cG<G+nX>/EH‡-]ˡDKi ?§k٬еO\ʰrwyIggQ{mqM,\l^z}etZ4C"<ƥGҩRHt|<ӗ86.AhMCP.TK'c-(}uxXAZb3}	F:9%峡2}鈒PpנRw^/E\*Z}({}'ԋn[%Ttc1}/RM/EZd&
{erItNL_=<:>K:dK@l^B.d$\zCսd8'PR$TP5dpbBĠg(R>JKh[[wFEe'ĬQI>vOlrC=RV\%VW_Qpި%KA}dr`p.ׅFIE{%t("%,BO#كkЈ5XK	)%DHKG6%?g;L\?"})ڙK0
AKAoW#<g)ٽw&+ӗ·yU3/U& -UK}ڶGL_ɚ#84N:i\zz*.a:x÷cr
kQENfʸh_li
PlNȱPO%	Hl(MT\(bp"XTfK۔)mi#	)D7E,2~
(qcܣR858DqHUK	4IN	5c0L).^6d+4rKtF	h-$dAB4X){b!#ikn^2qě-HsIIpz&4w<{/6Spi̻a+;KMl6r)lN3.Uoe\)*qi)YUV|qi2yͫt\/u(4I|oP>yM8'"~L_U)'
&KJ.Kkd$0$
eY[[%zrꒊKRσd=b.t/ =ɇ^((eD2,Nb%Hu֣z>?MTt\:՗>hXfyRau
$$uIťS}c2` {}>	<:?;dп^ҩ(uo`AL=P~so?e3<:8AiꒊK!(s<I"Taar.ڻKerʨ'YҀcN/K/u\Z)RW;Tk36ҙrզIJ9M_BsyRzaӗ	gqDKaXռ/AD&HJ\z(bx))2}!sfIJ(]_JtT4&%^"@
RHT-^U%ppI83bwt<Q"}>G{c.KN{STQRWQiq%ӗl.*[/RW;NSOyisWp)ឡO-3Π!wjusڸK	VR}n%QⅩ;``cW]K@D7m5\YJ%D'-eGh 3`;Ԥ_cbз1q ~yVrIK$ Pv/I%$Ux6yIhYC%h\4=M$-8y=Vw5\y)L'd6b?4{Y].ed"'vIĈ*6vw,k~=ւ7eK/[%A^qJO}2J6/==NО*il_㬉itt{fl}r-wwtP4\8E"DQX.Fϲ,ZfiR/E[OnK)f%RHW(m%,4
||-.Lǀk8=%qh*ѓ}RżQ0m@'@@Y«b^"}?Y=0cv@hZ"f/P\uPB,R(^L_2}ΜuK]ط'd#Sp)ԗ#hDIe
M-gl%L,wR/@)2dpc~;7i|8D0jhO%+BАkZAi
.A9	ԟҘ.ytCz<	bJ>'Da\H>a@$B;v.|Rop^X!mp<Tˌ21F'1+}\2[%<^f}8F8$נJ.ԊkGIz})Ld@VG)
\QC-P
݉?˥/mt*RE3S|R<C!]N_&b!|C0DG<x:郅F]\3/]šB9J]V3/D]&PWO=J#dGgeK/ueLZdOΪɮV).@[zsnZ v
QAdQpFw}`
+k|07lM=%]+Z&5J2f(ݎYuP>J0|AS;JNp
\޼Db-R+FSc0 CQi՜2p6:GM,_RG^sZӺ0Vȥ[	,e%ͽGm2@5%
$wUBP'PZKd<DB&
@	9ѝl_DIN4%(fc4/=O˂D9et>Ÿo𺋶4E_;Z:&R.rܚC>nªTaaJL]ѐTaaJL]ѐTaaJL]0DaְN48FaSK;nQŠ0z[ER+PmJ-ػC[o(b:5B!֋K,NY<+IENDB`JDde"

SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c9303.gifc9303.gif (4563 bytes)bI~w3nI~w3PNG


IHDRK|LPLTE3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3f3f)))UUUMMMBBB999|PP֭!___www𠠤VPbKGDHcmPPJCmp0712Hs3IDATx^ג8bm_l,Xr[ 	3K
|pX+KHzn`n,5o,}ȲOD|X}<꽜$~ҔYXJlR`i*<5ZіWuz9)/=
~P>Kdhu[I'gUGf|n~mfҕޟ5iG^ԲdXxW.a,P5By̖"K@u~?(Dbяb |[C01瓑߄VyVYITa)$Q-p@'t|+
:}Z%:b#akQRnco7R% OQSg)rCR-NAKX?U#MI,BY{Yѥ5_JfN)rDJLcs΂Sپ%UQ*L*'e$DPRDgvt%V`":'||8N/QJHSdL^b9N`#6QCbޓQF}i5h~I|e8܌\|jc<JKsy'r©~y;X*nA?Y |us;%;[&dח[{׀\xYu̔Yz=fpL#`fg̔Yz=fpL#`fg̔Yz=fpL#`fg̔%>J~H}<cvgZ۳j'K{`o*|fwiOY5N9g	i^neu	.Ed
f	z	Jwr_WD[znvmQk(	Cnt8uV$NkL/@?cleksbawD5Ye,OgĠG]2sXrD#w7Y
v=Y"DaW8&m:va3%KI~K(}(BlS%Kxq$*
Z]<%0̓H˧!@8kt*%z*3dE`|K3&1ߦ	sEEXڪoDxɇYۃYj]tǿbZN^@NRq7{ted'hl
v6XN;Yif},S]`>FZtGJ!/H6,4YIۺU5GbR~j,f>:K=(-V͢XZ?/,avKq.|_+Լr{qi俠.,NΗ,42phUh2P\4iq!L.Wfx[6֥%Cd{X,ҲJЍǶti>Ll?
謹bwpXB2=%yq'52)/XB5.`4`	gOso?dojvT:rjqVT2
Y}0d]5b+a᫃%\S,4%sy̽{ơcj⭈\n#%F:KKDJK@ =̒(5%(D낊ɜHY0_Zt[3KKKDG1k,1E'YB<Yy<]|hs|՜@I~":	jҥqI%!(zRu#DB,_չD,a0_bBULcv-SlFɽ)j.EV0˗ѵtZ㸍Ze8,BYBK{7*l4BB
z\V-04pBJ`	1$h򧦥<YJ]WϽsN,]	KfdЍXPJo_
?YFkNRUPkm{@~UtŸ_uhƨ_jkWҥ"wd)/ɹw߿lx|ύ^X^ͺ@ku^4VvT;K*(K*o-,Cצ^^:>OYtթ Gc?N'8OP(6CH:Ru).,'ݯuY颈%{\ *KafOlY{c%kKqPjW<5
:#.9%IL`g=x.a^%]I&VDт,iX
ՊFRP'z4XBh
YF

l{B%%%F-@KMY2qU39l5/O%LW &GHVH6˽I4ޕ1]Mʦ#ӥ	&Kip]f54N^\9]s{#`rbcwtҥ	Ҵw}o6b؄:U?7fci!eկ{k܁n].aN[_B:g棘5~D{J{NSq#u)5{6RzBdYRa<Fj3iYE("89K:W.}@̙٪YM}.9K;&~s	Lc-ks]j~iQKu®KZ]-Y4C*>Kc78%,_r]r]*-0](7kVUۣ{i}.=;7]:x9aK,snן꒳tkVKxqmg8u*ҭYKEҝYKLq..LҝY4'T:i,ݙѺ1t(>._tx.ݚ>=\޻TAtpt)8KΒ('^eKWt{^gK{rP:.xsnw.[
yU1]:xȯL~ܽ}q%%;Ku^toK<VIENDB`EDdV"

SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c9304.gifc9304.gif (4292 bytes)b.Ot1n.OtPNG


IHDRJEPLTE3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3f)))UUUMMMBBB999|PP֭!___wwwwww𠠤39;bKGDHcmPPJCmp0712Hs.IDATx^ے*b߶/V,!	g@hZkmׯ.~tD}$yz,J?hf#(͆Pׇ8^Ѣyv镾(3iҔp@)iQU%>ղ5X˘+ӱ6@
M2ԱQK{Sn}QL~f|ߺg(9^_ݯ?S0QzAĒ(ENX뚞<A	%%K婀mGf](Š<PZeG5H}, [=;na_E:
Q:8eQu?*p|uv3zߏิDMlhRp~^@J(w[LE>'(y	V"P8!U++@4}/JuU2Rt(`%ܚLi9JQq({zPf)߉V:G)J,NW,,2܎p@P2(1kH_`J{pt
x`uLI}jhRfCaPC}(M(DǕ=8w'aF9i[T
GqW%n&t`hV+c+}}HQ>=OE@+%]4PcU%EA$J"aT#核r EI$jDUIX(nHQz:bۯ( X(nHQz:bۯ( X(nHQz:bۯ(醺Pr'}SNi߼йǰnB΢ڇҙX<pqB']np*JaS@L"yUjbMhp-8vթ7
=yyŵFXoׄ/F>cR9JOϚPɸMY9 {NQelpx9~ZP([%rqUIlԗrDc~)1{lˡD&
onmдk6D25Y@	*F~XӖJ<]P
T	/~2E]őϙ("+<(F:^\r;Xg+C^3C0c-Km*2goڅR7[,|>R:$'W%*eסKm`)w}<4l]Dʘ4mGgvG(%N:$3d2rJ;Wד\!OQe+SȪ*Q^չ(OQL!w&d-eLpS%E%,|p6It_'ˡ:V<#Šd/_!J[0jПh=\8(pT=8ڷ5{CeS%Rc14F$Jv7%L4̍J'2J OF⯳%<jb^vC%<E)W5(VDnf󑥄rsV+^a3ՁN&h~F3U(Y5MZgseU)[CeV2I{/yֽvVBTDHpTN<Z)>jG+x!s*F?$K*Q<Cm4!-VX+mU)e_r'DljMCNhG=Nֹz/J\Qed"(RvRI*&86eFe5*	΄{{ҌwBMnwP%[oCP\^+{hW}Jj֓nRz6(#Z*"J
i 'VBU6x!d	BLJҺ:$c*@6)%⪔Cȟ*|IRڐ❾5&&!8ZϹs%c8W%5=SߤW{ZaYWXú*{mcEi.UxֵOgӥ.x"9FJn>ɶ%{T9(NZ}:cMz'[һ-U	x8?|%)&И;֪3j˽֪MzEUAA,"KPH)o2v{mU)ꋤ%83p&"ܿ-U2?M<U]`S%ފ<؏|\^on>bC9S%]PUtݷ=|UshIen(jسJsk'eCjsu@FMR`urn;mo˽Q6YBio,́lt[>W?-cPEi#$]](98yOp䛫*ʻzU;(%yZRLptD
ewp7Tq*#S3((e(n(&8QWSUGt$jcJVU⪒hCc\(Ueq^axL銥+Ҋ_gs踒T''8U%oQ;E^9kva3Q;Jܽ*ll9kTi\ɃW]JZ)JW룪(]T&'EUʨ-S%M詢teXN}_JڭST:U/%:.[(]ժ	p0]_JAٍ2e7s.|*
`wlnQ%EL47]+R!U%8캦W:|,JϝT
5;yig ﱹfF^@PsgTip_<ԾT`|6"S_IENDB`Dd
 
SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c9305.gifc9305.gif (8259 bytes)b9K5Tf?!ev
n9K5Tf?!ePNG


IHDRe7PLTE|ywtqolifda^\YVTQNLIFDA><9631.+)&#!	3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3f3f333f3333f3fff̙fff3f̙3f3f̙fffffffff!___www˲𠠤m/bKGDHcmPPJCmp0712HskIDATx^]r(C1ws;d&	6FGG䯟|kw>

зvL`}.Чw*b{s{=+c=>]O\;9nql`Fl}lCZmcL6\=M%J7o`;X뉡OFlM&:EVD"D9V1'ȍc}Wy#
`
.۳;}`c
2]mC
:},]D(ͩZw:{JoI=ݹ
gqgVE͛|j3KyJk[c-A?Xm`5bm}+we|#GsAn%FIfkoǞFS>8\{L`iYCO`#VPVpc
Ol~Xdgm^Lf>m`:@
#zX=}
v5I?!xJo
me`uuC`0BOFI"^`=!,OZL>aEGM0;MOX.(	Rklq
(xrb2kF;("86Y=$, 6*Nr}Qq-*N&VS%$^J̮{XM}%V<v=Yy(94?S|uFI"^v"ukźZOAQfZk
DSE4:ImYT2}*}*3،̗5q(踕A.2>\Ǝ;=Qht9Vt ڍGO<K7k3`KW
lw%c<y3'.o
l!xkkLPCq4|'3ŏdlN,&"<}ڌr*(F[cXC
|XKTcGLج'>I+ك|"<ۜZtez[0VKPvyYG?*o`x~)SaD崞
+0bhPf_y֦;NdZǗM{6/>pXkv
706ۢ{Y)
}je9puևWe[e3&<Lq𴺌EX:{=>u
|dN1
yX 4a,ö8cc2L/n6c>b`Y;1D8$}bvq)2e>v"yy}KuVYd];얄K)c覘=41l }@.nF[{T]-B;[R`E\i~4(VXHQA$\'4JB&*e \T4O]f%Sg:nФ(,%-KШZ/|-k2hE`JZ2ۛ_Mfvc5)S({;<#WXFӤJhY`JZ,A.#e,`8e)=2e`	(]
5XFX'^%-6iŕcHB
xeQ}`g0Qq^u*-	[(d*-gSh={r[6(Fiq%:``R<]{λ=	]3gsvx36;LnXq
:u3Qq"qq`>MzTQ27,)_\`_};	{OZ=-XUI74X:U`ݾ.+½ÁgXTUQd*EZKM{	nd/#8Q'=9R떂,MxCjfl|YOZ75PCq`/:١A`JF;шAEF껂8$e,X:\x#[*#C\ִmc]Z#甆TCcDECk3Xi/Ab| \Gq	-TͻO6RP,۾cz2!lvKqvFi;_
IDDau:ǭ˵o22
E7c{ٍ\]%|lV*`,%*()2z6@={(,mɖұNcqSvk3+AY?ͲV3`pX
x剡Ci/ش<qb2 o[!_yp5,CĨXl$:jZ"ߘM$@0c~-@t)=%fJ`gt(!
MƓSX[gl*ftDS,e{*J"Y~SǮM/)	]Xu}2c=`_fZF#LCUQ?
G_'_5J8F].W/X=ɃظF`

(Ky
Dz5qz7_+QθJ]{`ERظWv-6P7Qn%+#aG!*c522f?
Ts;xMWgYi}Aaf~cӸuH߀\hH{Arn[ZNXXaZ
)wFV7/e,BDƊe/چ30cU
%:-LS`,%bR,,n(J
5T"Wœn"z}꼴N
c_aVO
,Mh_džձ+¢Ej_2ũ3igu4Z`c}p7
ir8$`>6. dX2`q)(yl6*}GmVUz=_d*fDmz(	e%ɌnF(MY"Cq<WJ[:
;۳-,m~`t=P|
T!ŒkP}lx\Y6cG;cȉCtMgwKO\$b^ŠyHU*ZXxo[pn;FQa%:UNDi*cՑEC-|8	X^H0MMiMu34R*#&\.jQS)!fUZ!H&xfL`qVdnO`j<PD1leGRSŒuq{2VQnji`<5Jy$]uJݢ
Dtz'VҀ4[[ CckX<֮?;>C4Л=(!TVc,FK]>E<I.ذm\}`o-T҈ؔBGO\yf+8RUd,3-Qr빙eԌVbhXFlEKə4xJ[Yԩߘ0mk(Fe'+*c\/`4e,X[>+ٌu3
NFv@˦[p+E(x `a[9=3ڟa3De|2m6d.c=黇-QX\jH.<M#vf5Ł݌= 5>'[գem36~
#`~C;/"vF3X$NX,xzinǽ*
H6xX4MqfGZI10;3!08s<V_XIR׊Ҁѥ%>ܿBx6lo+7O]Muc[5l=5RX7	f|q)n/ p*9c9/OݝWK\LqmKBDFŲ^&0	d(;Md5<V4lE4u{BXp1
Lw<!-؝<[TƖ#/7ow_(,s"#Z>mJcݘ	iGػy5EKǒIN?#_Yr: ȭ{l&l/u:5x"
c;hx'-|j	x*cpM=ytnu<Xc+?4t]u6ПaP5|21N9cw.&xǝ&iMR#w+vH.X79+f% ^GOe|LHOT
76:orezW8>jvO6n1/Gmx7LiZI^mcȺQ;>XQ!cs颱4}
ucxS`l4D
qVA%\[xĻ9v){Z1{">6Yor2&γ;AS;fm\N'S:2'ƍQq8y"`|UMNX7SJ4	 \RlwԵb1^]ׁU寮!|)_wS;]%hzM.y'tm83:INw4IP%M\}gI3V7nAXU`/"cuIc!OAf?iLڌ
Cfle0*.C،V[df,X30E|04Y'MlE(M	cؐ5dflX71yJ?PTLڌywl1Xdfl{LڌkPe<>
5֊1YM
VQ1
PcZ1po>X-R@k8[Y*U3c҄j)
Qq+*z:RXO)7cX1a>,rG,9*^q>vT`
.WU:mY/}{8|R>RjO<Y/}R|R>)^5:ў56C>vX\dGk;RtodcW\S=z2*8{7c_8>XRnjJE8o!H6c[7؅s';*kVÁnی]آ<`7ck{+(ʸ(Ogg6G=uOnXϺazϝ(	Ӹ5^˩,]{@gSWk:ٲGv5؎5	Eɾ}~~n8Dŏ`.OwHxܞ~U%(gFQxK<`}:t3M݌}S`7c7v3M݌}&X}e<.[;onuNN3)=Of	=7?kd1n+E~-h1rtw }wf$S+;rnv!lGwfҟD`O]yā}'e.	lh&}l`|UwU^vWu7JыU~[)z_5E/V

lQjӁ5L=>{
Q|`mG
b	iwXJ.hk:sXcDH+zcR2)yן:aY[v IENDB`
#Dd"
!
SA0E:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c9306.gifc9306.gif (10708 bytes) b!twa#8
0t!&nl!twa#8
0PNG


IHDRU{IPLTE3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3̙f3f333f3333f3fff̙ffff3f̙3f3f̙ff3fffffff!___www˲""")))UUUMMMBBB999|PP֭333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙𠠤$dbKGDHcmPPJCmp0712HsIDATx^]ے*IUo7= ۬IvBv|B32J7f2`Q/d@/UP/`lq`g2{I>ׯT}'z;vv-s3*kLnwVQϠ*I3IPsqsyU2詠+?Uq^eozm
΢{_?BYlt/RxqURSUK%ѿLN_~2"iy5 eAkSS*RU,Um[u9(AL*bU~U:uQeF{+S*L#-P>P
6>}*C)U|Gh5|@KQE#	^U
VS59ZN?AWJ!U*?;P;[,cc3L+0PX<Z_aeZa{yP=a㙃HM)Y`e
00-Pu728`1VC^pf3Ts
UC^WY3T*`@?UU;T
Kp:Qy.Cʵ%T-Wo_U<%PsD
hk7O5>mrO*VnnGCmN
UY>	u@gQ	:ufӟ$yl拪tAU"֏akIaLM+,x.NU<VXDYZ춧ZYT%Te'ߴd=\2tĬp|
PuEoM;(X[gԭQ:@?ܻ$Ft̟94(9`3-Cܚa@LS㞢j'sz
9GCO!qjmD|ޥbکqϹʷ2BUt3W1Fĸ1ERB*gB.^fikmz@w{W
'm
*5M>[*9Xޝ	Z.}[% ?$?ǮӠ*|GoOJG%9AaTP'4;?Z}Gf_r3WX90^,fAp+m	tUzg
	-g{X!Q/q!g\eKr
#VtJ
y68	S)rzhnH:_s{qpK1+Hjr=CUpƢJ,O0DmIPϸY{B1~g+
lݏW+bUQv`QEjU]B{U1#iTe][ߠv:P	U`TQHvL9pBgyߋK+T1WEDXUEQtYÐtU}t>7NgĵYβp<;d&!rk{&!q$0T
*
{xdU{XH$%[yJ$B3~zn=`@NO;МoŢ8:1mBnT
*=*&O4P%j':95ΙJ|jmj:gUrM=]3mo
UaߴtEUUb<Jep8%U
%UF(Dհ>蛢P|>{˼NTO3ijRZ
_lAWہr"ބ*ikv%`dzݦ{מ%{ZkuOn'cYV;'Oͺx(,D֑ZU?INzk@[[zUOfew*q2Zn^i9
ёEK΀iGUWQo%A=<\XdcܤBK [	d5axnTex-s<Msʨ
B.,2PEUEԅM'WtU]YW㬻4UT<{7?.2FDUn>OV^2,*hE]>r|h-ůP	@33`ֶ:	KLvAqŃ9ҦhA_f-	f@(n96q+,
};ۣ*Y	zJB4lТ .ZT]V"Kii@/n[gr`In?c*&/ڌX
&,lJf̨2ZW.;Vf~-ޛQ((cޜ/=`cmYK-;uz(˫\EW݇9N4榘Xg\uTA^Gn_a`1X*w#9-uDT=`RLG| -^3@y;TFuUn;XHlH6T3xU3U9FU_'rHKkVQըo{;ևv%?-A
WQ5\JK6DD_3Ts
UT
뛖Χyzh8[(3PEp	-?UՀ\3"o2m
ݗqDSMZ8}:rczGRjxS@՛Zs@WE-cul:\587,ufi7aQհ<coipxQ @Ջs`
U;0ہ_PƜ*@4M@^tA*_ܸU
z,/.

E9MUiE@WAWAW~qUqPX_\0tttՋ/UwX/.7mΓf@t
[٘M3i}I./[?6:I*vCUWHgU_36	_T<̐;fsu]Z4<NMq=%UֹҴ]G)-2\a桯+B-qmOQ%^'xYH\O0ڍ7ʿ`s\d{B_=N_۩:w{zAb\ԏw4.*
-\w.PqTQ;f-3ysɈK'TG`@9:CU(ᜧ˾:r-W#+-_].Lbp쵿ok
s*.BQ|S۞RrT*NYnAE_ҙ&~wk*&Vi4]*'";JH+u'cG=뱩>tk1B]>F<C8Yr.^=5'ϵbЧw*uriciIsUP*S:v®g#D 9|=#\>H:pzz(7+THW:J5JH~}3'*Vn,QH=æ\iʱzrJ3evKsbp*.]|frR{mPT=n8=!P%N۴t{hۼW+
\bj9TJW-7v
<eWFT}jꏢzfJsD+g^UFfǫ1ngDD0uUW*1kZ趘ʪqU]>2Uāe~rnOʪq=,ATTv*ƥUYT[⿃"SՍœ׎Oz@֓RUGŬUVK	W!A3-ݘ派UR}mZaNW2]iꏢzfzz*PmCQTsZ_7pxUsR.~0ꞧ~Tfh9LWΥ$VjZ$(y`~UxZEg׹ZU7ptU%PxjS#
\UU
SUfKt^H<鶞Dj\7pttzmyKӗ^TvԚUVuWa
\SIAbSkQ

\]u!Qm5)uZ_7pt

\5+{@WFB*hfU}]j	T=P4K1,WݶfVBy*
,vzbqp*1^*|WZ%f&Kms^_U:a^$U+9Ysh
]:0-=0^iQz@p
杫uWAWAWAWȑy{-zqU*̯һfKUb5~? ԺrE(Yiay A#]%P*]T-*WUqk/.hޖ@
\*WGZmjrU䪆❵;cVY7|J;uvgjE1ܕfR*q߉JURjay Au̯= WկpX)YxJ*̄apw= t
JGL/վ
\]x\üu1@Wcnz"/paUb-Gtrs#W3
sAvf8/a_P;	*T
[s@9`R2Wb
\%Fƫ8\%F.<OXB7"AXUU^Jp^:œ*W0^w͖<AW{CCq	Ta1t@
st8
JaK]r0녫OQU֍cs!
u[O/vոn*<=X9`QrBWT㺁0^x"@WkE#9=Ժn\XXϸnEt^È<Dn\e]JVxE<7Z*'KƥUXXo;FRFU9bll|l¦t[O^nR5.EX\kbqU$˔m
($m6"aR٩XK%P}AyCU•NլU֍'^wU㺁0
c_w<rbqUxebzSrBWT㺁UUPp	uWAW	\u*ptj4wYWAW^k)
U**E=eU;t
QēPU5_AJk{.-VY7.|?^d~t[OVJ5.EX(if*IMP)-yUm}
\*bJ-yWvCq	Ta1t@tX^@#,|u1n8kU㺁bD	]ORx
UU_u-ػjOn\ؿJit[OPD5.*aֵT[O+('i(U*wz*r@j*]u!px= ƫ0^kKыU5gt.A	*[WLռH/2Ҝް\%jѼzZ	z*Tjy*&	
*Wa
Uq\%VJX(z@1t@
cUUU:t\]%Pa6"x2*G^=Zeݸ}t`LL:}v7l"m*qLq
Ts6f]8.*W-7^ɪqvJPTE03a
ElW}rt}ˠZU}Pi8kTXP]Ut{@P@:qC
%@[
UMmcc3wYlDx4!H(*>PSi*	
>4_$md	Tf1oi(ܠIerA2p*|.qi*D?@~NKW

ONCZ^i.jy~~%{gYb*C?@~NOW]t؝= tx+dQJ2|^PZ|̏^ٖŨUY9&ʴƸa~
]E+^	__|UQ]5r]ŰO0*4+倫-j햂7̞Iz=y9@UK5v|/|cCݧf>։IhT5!آu͗kiC8QFVC!9J	tZ:'*g_Vk`_Nz@k}68wC95	ތ#PpU4َō%&yGH"@ُp)?ӆb<*JI8<D"_~QUY>>!%O)jJxGV]b0I1-j,%\r*WU\YUalBڣNᓶH"*\?-cKJ&ޠ`?#Q|<>j96G[:r4,(h@<bHWu'8E9`Uz\=Xfj9Ek-taWiKj{6ka/@ޝ+β$]8U અ)岪Uva@Yա0^װ^W]v.,$i@ẕxJNYgSӺb\]QpT:`K=Nϗ7U@Bꨌqv?U*i!,]Z@3"TZ8WN{+-6ݍo`I
P%=llG274sVi?!.3x;TvOFPMԞ7^l:h~{,v`ͺJ{"tr1~nC6}*״9yuٮ4{bsR
Wa7WݒPe`CoV,$M;
uL>^JayB9hDWms	hSoG-7頵L6ps%/ -إU@KgԺumGP&f㌷-LPu-h3Ib5~WT:"b-݆vC:lm*")r՚
<VE`U>UN]
O-l@UU!5#]rlK4oiBgBEjpm[؂*r7CrNUU`ʍmo}!mK_{ڏ6|KD.8ʠ'0}"YLN=`gy89@UspB5+z=QNz^ի\V*IU_U	wwy_^@ՇHG8OYP;)wP}O:]RvNzU@~U./W_Ts
UU`X_,s
@0***
3P?Ts
_I|$g82nIENDB`.Ddw
"
Cx.E:\vfp\@#5"@5"B#A#! Visual FoxPro11_files\kasem_files\c9401.gif (9854 bytes)!_DdvS
#
SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro11_files\kasem_files\chapter9-4_files\c9402.gifc9402.gif (3829 bytes)"bq>pjT3(8S1x0Knq>pjT3(8S1xPNG


IHDR*}"PLTE3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3f"""***:::BBBIIIPPPWWW___mmmuuu|||𠠤KDbKGDHcmPPJCmp0712Hs	HIDATx^r s}Eg$B/Ilwۮ?BȮwN/z@ߍ
\ի=_ɨ~^yJTW^WA?0P=ꙣUuJz$ kZd_^3L&.RJ4_
U`]ӠZS*p"e-UV&SD~s䇢9VU<"_`~n}L@XUfx-l$V`[	4Sv*r٪WW.RTQ~UփU5$/;^?a.7s8y>Ee\4
c<|_6_jgtp5	.aer"/5ւa~F5bC8riM.J]Aҡz}rBEU¾*o.df»Qz]xhg]X#h	C
fm
F*3[%-AKVEg>L3Vbd~Pqnܜ@0lpR=3V:_MF~]Ė\[LPߌH*mjmW*4X2/F*'(P-aժ~lDVYRF;MɌ7	X_d953U5d2VېqC	YuE
lUVoؐG%f𦨚UU3<2g	8tiҵ.j	d[2
"+4UIA@ٗ~UX~**nsRm/Evl%[{1v
Q1ω'Z渷#Ar\	UK/k+ h
VW0P)|)9x<q4_Ηzcl&ջ{ê#ͪnFx𾏰/&mTUw>_vw>9JpEW^rcZ?HEHcƨLU&?W8y<UH˩5W@UQUj"Ԩv&J{eqTT!s
ojuWLqNUY|Hm*vP7NU#%EMiOHUC"(X\bFKELU-2t}ʹbN֕(I4TS[E֬Nðl)h*W94/5چq:~5ᔾ7*aU^{nxO*ћrRojP	UzooUyyT:j$zB{pÏP-ŨȟzxUW~{#uho솭#oJh/TU.ng{@,!#J4 WNUu	*ڃ.3?d5Eu.T#)ow"^Oy<Pո݃f	*mpUY
2fQUL6E2k7LUQ]۪@[#*0s9N9r.ή~7[RoiOWᵽx˶tڪ|}FZ2nKտPc %tK?Os*m0NVF˩:n#_0KxU2WוO#<:xb{Jwyݵgy-H
f݉07DJTFmpTeG
q}x+52zng;a=Zt28Uvi|7bكOmU :SUu0N
QmwUlnّʒC{w&uqT[eՋÔ\BwʫQ/+Y볧J{C{gy6ڃ~j^}xuuy\zy]{JȂD!HYנu=`oX`%PUQqQ/@^>C>Uq
蝫*TP%>9nўs$PrJe"@3a
XUW*@,hRRUUTX߰sTv㵚Hj[Eّg}|w4@n*wo֔pk5p>a_jÄzߵgF2Mo]*o},Jėz&U,vR?6&[yإ
9!W@E习jf^RUbԪվZtT?	Ẫ͈OIuUD7j.1ҪaLB>TT>bA=`AB(R
٭T*R
WŧjTU1W@L	ȮąW@q2*"5AuPʤҟ|AV
A&VFFqJkb16iIENDB`Dd
$
SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro11_files\kasem_files\chapter9-4_files\c9403.gifc9403.gif (4097 bytes)#b2
m`ƦP(l[S
Yn
m`ƦP(l[SPNG


IHDRpK2xPLTE3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3f"""***:::BBBIIIPPPWWW___mmmuuu|||𠠤KDbKGDHcmPPJCmp0712Hs	IDATx^]ے Cfq
͑2F6[gAy}R^[/EDQv(/Pv-^]_|:~nI`wvd%ۿ3ȶ5o=/vQBq;a(y5|#^]6\ʎQ"pn*q\%1,E
v^ۮ5-clq=Dv h
cj}{TvrdskWC;%/fn2&w/^4T;n*X¼b-gV*G,Zv@-;Jՙ+s:q{nοze$ԅsr~o*;O|9zpN"`φe?}9̼'Xzպ.iGq㔝&aeVclȰ
q9eڞIJ{n6#$^<
s+oʧl2w}׵{1o&n',,RYS	z24cJ/lX63K@;%.T.,hPcر\4v]]ngIQK{;@?G\eO^*^8XzƲ&I:	!0t?RawُacZ#CeuLvLXP,1;@QYǞY؁x7vd2B\"p1R?t,H|jtc}!0E; ٰrF1O$Y.F&wF'WJz8%90R\x1v-0J5
;I~LsV/Ȱ*2݅`CLN9-;a)e;v/Sc=!n?ءCvC\
|
|g1b˪vh3;AFL8V
#1\T;1d*tvDzךLvq2:706Z̼fo߆0֎U:`8e[;%0|4 mDjaՎ6ExjD'U;!Z{E36΢F~VtnA67j;p%BQ>$fE;}T^Tffg|%zKߩj {Lb];*g[l\@lXd#oqGj1L~t͂PV`qXE;JkD(sU6:SCӳ/9qvgCᅠ[ֆq'9pفu&=_TdaL,38qzvKБiG"!KqmAݷ
ݞQ;楈vT|ua{nq{vfΎ5KL@N
'`N2[Q@-AMq5	yV|OF(O@<73_/c?@N
>vO;snsLzVXk1<w&{vrG?/mAszwp(hm՞;`=\vLveZW;ͰĴrͳTd8XaboAb݊8I? A%p!Ja؝fY8k~o
RQ"-]RvJb/.;܊A<92v9Ϩ Ŵ|lKJ<|"eڹHv%~ױ
vyDZCέd`͵qy6ө)e@;<wL4zk[\fI\	lh5ܠHvSKƎz18AvE-^CEv#YSAc+?9wtppVvtt_U|֘Y|<ڃ<ޓU0Da鱯_>gJv#^x2mjè!G`GXO.	9A0Q643OG1٭؅!qwTbnh-@9v耡t^t;7!Ɏ8>fܤc6O6H쳵Jqc^=ؑlЩv<_e硫cbv%gm/2f9ڱq`<ZԥQ qqXlv,@F	|k٦M{ڱƤߔأ|4JU;
f	[1;6#(w5?v-%;}; G<rq)q2p:Kr}Wu|J_ٱ@zZϕrq۷u4Wi1SwdSU|ؘSh}Ru;E@Y-E#u ƒN3IENDB`Dd

%
SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro12_files\kasem_files\chapter9-5_files\c9501.gifc9501.gif (4730 bytes)$b Rn7%AG7]ao1hnRn7%AG7]aoPNG


IHDRbyO\TPLTE3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3f"""***:::BBBIIIPPPWWW___mmmuuu|||𠠤KDbKGDHcmPPJCmp0712Hs
yIDATx^]ْ V6o1:;R;;Iv#`^o{"yo7KA.⿿ڭTg@Fxv/ SA|t6ng?}A~;2,7vg7Pg#!v$W{|I/a odu؄GBqq	6@,Y]vT.vX,PC+O|A(+̩Ndi1BBf{A2:إgԳA,L&
;TpLw@h
DE*T⇆̏J#><
Ccybn7Al?Rz=tI%<p VG@݀iR[9CezSYnlZlZN2u&:LMIn VG@݀ii:
0-6-V'bXu5(Qb	Ս<ۀX/6XdL(bu
L݀iA,J@WugCzw|^گwb*udj!pK6o}gJA+ܽ%]ڼݿ!},2N<y\ѕuhb$~4}Y}+SB+!R`'v/-pZ\ZAU
WU$0%!
s{P}Wo+i4jEpGcX.&wrr5g
}oiDh2B{&!nbP0{؋{mo=߷=_>B/0N9cb-@'G^$Aq$EgqLP
Wb\,kxs9")*Ř[pw,JZuZXL.=COlELUAH(eBUuŬ_a5	=ǜFX|\;yBC-ᇺZ2ޱ*LA
:m Nj-{$ِȱqƇ`4:ȿc~֓U7ws_/|%ZE^MSJFk0a+Y,ͥ{.W NԪgA$-#HHuySuX%q2uXq7n1mg='7giy&%
0-6-.qM( >b%?{Gc,>ƟaXϥ(*Īb6n}3SU?2Q	xcpOUX'=sF~mKQ>V^&`GIJ4_~,İuȷy~ojW~;XHep1z\bڊqFsY8~i`6o~e->H Cy\+wl1$`?1 f,0*"؆Xڈ?VmiiB#J7ջg!X|*Ս?ÀXM=ănc,V7b~Q,8hń.pʟ,A-T'T, ըdmYQK~PI(E7	4Wi0=[ܹګA#)-'FZ<x`s,~7!숼 ί
wpX@Ln'4!.RO84K N6Fp1PJT
zZ
:pׇQH+eo9I	09ĞVçӄvh'b4ЅXFB#sS;50^/Nm:sby?sHIh
=LeޚL7XңhrC@zb7&[v3k_\tZLҶi_<YQ
1&Qו학Cul`q2aQp鏛aqE}/,v;\ftA<TR~ę%*LsO8v̴pƓ'sO/$z~?}Z"V;NbA=@TB#lfq/LUey)k?4nQ<ٽh!LЌ}a38}KN(h"<;Oh'Y\SkFP!M$3q}yY v^BE$ǀņ9BvM$-Yk1q+bz_̿9{-Rz:rGgR;90]*v8q4XߑĎpţ< >^X
5F@8RZK܃q#1Cy;`a/z1haB~YnyDyq^?s]NOVK*I<OGtGh<ʮOӖ*2/)EkH'f)+G w,aYIl,mwdqa<'y?
bb1=Džp
	V	=Y<qxc.z-btLZ'=ArGZ<ЊZ<l垕xu'2>,.MHUnLn$USi3 vqzuPgA)O	-Orm_;}PޢKҀ}#=1ğkdn`C<8^C׀fV-ZWJᥣQrcqVb둰~m9援<ݙӶO*>Z}=q2,
q2W\,xճ|M&ݹܪ
:Wd%->8;vb7F+߮Ihۮ/-VbEl'w.}83"gOV
U]H4(3UFb
FՇ\_(bޓ!n\ʼ/x7Vb/<8]wA|qV7SH^>h&rmD >[C|߹#?<y;~!wS1dN?8^uF%3! ~;B\W }dוnWܿ%o8ԋ[#,Zn\Cb{uxPC.±GAZM"p>FY⇮xkzCY*';xqY*a,nѬZܢ*}i+Bdz\nxr6+b,ͷ:q2s 6P7bbڄTcz?kTcz?L݀	Abbu0-6P7`,6P7yl%ȧό	9IENDB`%Dd
&
SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro12_files\kasem_files\chapter9-5_files\c9503.gifc9503.gif (3711 bytes)%be#p@vzne#p@vPNG


IHDRpPLTE^_^`~^b|_dz_fx`hu`jsamqaonbqlcticvgdyed{be}`e^f\fYgWgUhRhPiIkKjMjDlFk+b8l9m=m>m@mBl&_'`'`(`(a)a)a*b+c,c-d.e.e/f0g0f1g2h2h3i4j5j5k6k7l7l8m9m:n;o;p<p=q;n;o>r>s?s<p@tAuBvCwDxEyEzF{H|G|I}J~JKLNMOPQQSRTTU=r>s@tAuBvCxEyF{G|I~JLMNPQRSUVXYZ\]^_~a}b|czdyex]\]]f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3f3f333f3333f3fff̙fff3f̙3f3f̙fffffffff!___www𠠤^F6bKGDHcmPPJCmp0712Hs	IDATx^]v qZPG{ڴje1#Mӯ:"]}xW6^=?^_s{	ҾЖ5,"<𷹽H@!y4s{ƀ Dy4s{V Ey4s˱&FZ rknH+"֬	V+Ek>RDj$-WmqXc,"i*rA9EhH{TQ,Ti`O/#f)]I#vJtQ*;8[ qSٌ]&-a'
?G7@㕬,A-]gbd<u풆_DY4^ȢGqF!E<iij$jnEHc ͻ@Z,|m['{B#|V?LM#ݒJ<T0Ak
B:@Fg"-
H7F=8s!#HKŅkii!A\hcʨƦ0&;[
"#k>|ާ;f	%Ì >$6mJR7`!o;01rh#BxzOFY|(I+<roK0oƮRiXi#*i+VghYuKjȣg;(ek7Dc6T*ʣ

0{Dȣx'ҏ N#Ed&bUö{.0a!#c$QKHnf8(d
iH6wT&!\@V	0(d* b]
0#mS`0yiuczb\߹lٻ"٫8˓Al6P2 7  6m4#MVgv?Tb}p&ga8+sԞ7ez(b6a4;<N\?SnUF~!0JbSVּ!d
Mn`2zJ\J3yiznܛ!/#G54Z &HFU@7ȣgZ4`L4呟7\&,i[KCMg/K[`+{a#mxIL}J"ALF@-]P>$\)2LlQD[C^s*
TFMX%t)
!`sֵ7UOC0OCBl6qDM~;#StDLlyPڨcȳU0>Msl}ZyZ1KwB$lhF4&'HC"6iڈrqhXi@^"&*U%bSf.p
01<y.  65i1cZڨ,7;ߌAHQKBϺ*!˘N. 
4\6j)	<V:?őd.
`ԖǴ7͟LD36905
?Ӓ+U#0&4d`
X~|g"qz &:d`RpoNL{469F~iM@,1F1&L{fs)lzXc:͵:
kAe&1s:o#g M{!6L*]`b='Doz3l"G	5Q]`bWOEe9A6Ң3iuiB{x
c'N.&6 koSiBŎzKS6PM(GkH;_/s{a,
QBi:#,h4#@*==e$
/!Ec<4{6؅%]	&wqPFG͊knӰ;ͮtǶiǵxbH
QRIx8iU]oK?˓eB}||." BqykV-ׅ=+	'phB|g>_WG'
H=o#aؠ.o%lLfQ 2B\ +֔iy5Q=b5B#o*C@ He2i(HŞ{DQE&~W$EdZbIJDH	"QɈ
j>ᣱ<㛗UVSuy,T;dZ7wF*ھcWG-@Y#G9)٣5ajqq1#^ɳvqj #C0&qB}KgB|ϏNqG\AK6J]M&]Y4IENDB`Ddx
'
SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro12_files\kasem_files\chapter9-5_files\c9504.gifc9504.gif (6160 bytes)&bַb:G{mKnַb:G{mKPNG


IHDRh>PLTE3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3f́^_^`~^b|_dz_fx`hu`jsamqaonbqlcticvgdyed{be}`e^f\fYgWgUhRhPiIkKjMjDlFk𠠤WbKGDHcmPPJCmp0712HsrIDATx^]k([uUٳy<slfc`/ |؉Vg!y_?''>}~}~?C|~O<EjQYC$ݐv,<(&P=DRV%0C%!yG#G].H*"3F;T7OX`®ZPlfAp?Q蝡4[;Ob'D"bgDBǟ#Op6?w;\pFx` \5T)\hQ=g"&…",W
F 
n'	"-[-ю84\zHCc$#`hDӝzQCUEPxx~IudQO(q#`h$E@ZG8טS+>*>˴K
JbiAi_S8_	D^e7mZxJ&7poO)FDDyU
V[=~c4]F=OxجnF<+1z*ݥDѸuk6\A/@^ߗڨŞ*ZONXj]-Q>!
unaGHSZXE%},3,,.EU# /(bLA3bUdӈ`"wf"OVb촩zTq);H76hp(+VٮpD2׸EJ!,O=G(q"X@!B{ĸ'Ys*{)CvMu)^:h',[ED(NCC^CiD(F}[=~ž.>j<Зyzk:(hZ8Tkj_Cl=nEP
oay2.&}	Y҂OYKp
dzr`S)|	|ssC<Y@EX"+f@E"`hXW5`^>+MVB	>Vh"emN4z|f6464
	[L~	Lp	@i&P%\tPhPE]p3fAR-=@	[σ:P͡3D͊`U7=#Юg3+8
{S5D)V(V,޵ڌ
.WI/#т@"8D0UЈ5cZ1 @VgwʇӕhGCDsnQX14_7Ȋ.!`-ovDT7MĹ@"<`NP簖|&(<i[RGa¢p0Dܞt(x)j(Ő"Z<*<nfp(*(q.{S\5f_xy"{@7PY"y׏dŔHPzr%YF` 0  "LhU\=P͊pU<	De5(D5L9rm}8DumH"s9ʋ׵St<ysyD+BP:SA߲ȅDGbX:Ղ#g	
KWJcaW䠠I0spoh(N4,
&4Wg|l>*絝%
Sa.0VJE:*,@>)lãe<kEdI2"ꦑLD0#@xZЀgb|Ľ֖UYZ6"@Ƣ{kZkوЮfscz۴r͊D
|/!JyfF┷}Z4+a
C7և*!Hyӎ#堁F"S2Dp@=Oj'lD 
)o"DDÎ%H~F"SΔFW}?/O]{6"!߬#wE,	H~kh7莄$4b#ALI!<9\S۞U_]ҶGDz." Qn̓qO.s" O+(49UY\7k iĶ{
bbL2Pb &$C؈Юd7c&};{"m-<
Pl["64"`C{%وP#MU&9K,ٜs(ɾIo#TtEH<vn "!F!3t: "P!fy='),EX1@VOVɢ'ÕKTE
"֎튐vDh0(6"VCh׆z+B{8ihOvU
OyCʛ14؎G(+\D"H2.")o%5"$)[L'p )[PT2`<OEyU<S:wE#tww\D@
%uP΁PuP΁EE:wh"."BQ4ם'\D"2."@@Y\(ˆQce'Py4u3rh؈DZxFdC'^sB@"JHDD"/Q# gوP3G+T}5]d
	6"T(BTyUTCaH"!WyU4$1GVd`j"}bQ9벫jlD*蟆f7ZuFPΑbPudڪʫ]̝v>ͣ<(Nv4󸈀ʫ <	$Jӊ"HcPgQhsfq!08K˔{
׀c[bƽuPΑbPu튐y{9(`k=K؈Ь*|RI=JF*ER./FE6"(B™RQVg-(EҁdG'ͤ<x	q^!I-
h/!:?DЂ50YgpD[ZG9$aaY"G:GHiwWD",*F䏹>,j}e#Uhcܧ"֎튐vDh0(6"VCh׆z+B{8Ҋ!5] U-cdK"BE<In̓q!xn/ +\D)2$ENBYPtj.")oL)
2ڱ-(^S`#؈E`lDhW7-Fv؈Ь^[QوPٔ7Vt+f#B"dRjҾdϼͫķ
ДohPSج6K̀RHes`/%lD +B2孑*5К9B2oU)&
h""Y@whh`s!;Mķ8=uEXzY]d5lDVZlD"HoFƓ+
+>	l."P5	qX†2ؠc(`c2Oycvn3"y`>o'EE.|cGA0Jx*
e/w#+ae 0(/Ext"F#<nN:)Ek@rRP`Pb4@]7+UQVEJ]DY*EJd2㏑,VQǿ(#>99O7(3dEHURZz
΃mIQ%(j:dA*G.<)(UA(*6d+`fE$7hV)@doa[N@E%K*[t,<-n1I.7
1e3/@s$X1!zĐb}mCp@} P!x݌"t!z(#0p"au4+,nCA9xGP|(B' 捻XG>$$hTRtZP5\PhPL@Ai6:iyLe'Xh}\!oӮ<a"Bjx͂@"DWgA~l_\ye\yZ4մl%ֽ@]mI'_yU#s7K׼$BPyU\
`B!aK"UAcaCDHV^5#B<4DP3F@Hf)=/}=YlB`ԝ^h)`d;ma/ ZA ɢ򠰋
i-V&)&
7**s+O1 9 0~;QQQf·[`<gUؽWs`/a-0G"LЀE8E0OM̍{ʋ3^5(Œ\~\"@f~`%YGDAfDn#3@jP<e-D< a➻jw;G8x?	DoD{Fv+a ex6{/"aB`Xa#fݬIENDB`*Dd,
(
SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro12_files\kasem_files\chapter9-5_files\c9505.gifc9505.gif (6564 bytes)'bJg4lmgonJg4lmgPNG


IHDR/]JPLTE^_^`~^b|_dz_fx`hu`jsamqaonbqlcticvgdyed{be}`e^f\fYgWgUhRhPiIkKjMjDlFk+b8l9m=m>m@mBl&_'`'`(`(a)a)a*b+c,c-d.e.e/f0g0f1g2h2h3i4j5j5k6k7l7l8m9m:n;o;p<p=q;n;o>r>s?s<p@tAuBvCwDxEyEzF{H|G|I}J~JKLNMOPQQSRTTU=r>s@tAuBvCxEyF{G|I~JLMNPQRSUVXYZ\]^_~a}b|czdyex]\]]f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3f3f333f3333f3fff̙fff3f̙3f3f̙fffffffff!___www𠠤^F6bKGDHcmPPJCmp0712HsIDATx^ے(E 	'6کӹ`@[!e?2Rop<AuE#Wŵn-Njfs=gxuW&4Pdh/k^UM kzܨ(ص-y<5xԯnuK_}8A7#ӭi+o/VRH=uzFvJ]Flnr3f1;Cu)g!H[00:zB6#X:XmyJOUu*ՁꎊBԋy!:	{1C0|B1JOw#}BPeb\@Vqul*gc
fhޏ{wTL;oc<b]X,o/q<Ci9HwxŌHn=9wcUrg[.1L6tklU}ws:}So2Xw%2tPQku|2D+_\P/̜;TFE]ǥVav_Gm3xu&<K~˃

@e<ow!/ކq/pA(}e¶R&<)Zd;l?{87r{c{\	]۽=(xN,cݝ|ƛ}}ߛݛ}}ߛݛ}}ߛXq"7777777E|oM8n5?s\϶*x5p'
'yAU}}k/6zTo
X>Wٵ'qnԗlF	aݝw+cy	Ϭ#[6ZqEXdmn3&޳ŀe<*vhCm6u7n963s_8
.[yWkrurzyWl nT],'[Ogt~E*IKgx}F@k+հ"3l{W
~'/.eQr.NE)9]MJkm~vMW|.!.C964HP"5CkynV>${.-!Q(-zZY&*Vzސ1>O-&4~_;
{4YO}6`ePvAfęuUAY_*
t"p3+#A=93Ӫ&nZHIˋ?帒,IWx{W*AEPB
e[[r%d\>E~Z2Y(z2ZT}
e@9+H<.I5聐%*)㇆1݅>HUߠjaR+]{fYI5xWC8IPw>
V .`dGP/ۋ9AY'Ǡ0_:i:>{~EnR:`שt&w%pǺ{UnE^{2AQ
o>JcF|t{k.`7#ZNgnFZTWܸLk6Wqr:ݺ}{';aRC6a
`ϻ:m3~T]({v6}g|^m=Dd0qk8mZ1K:j&CLtڈ=^NɑԈ&U{S݄8
بpu5\-$D*x7>#'Ngļp֎>a`D0U]ad\1'57&4-=pTnbzrƋd008hM._44bX\zd;/'e4>x&^ IlxIp:\`X:	]fE#Kߺ|#+F	(S@f~aEnH7s3gz0P(
x?arGq(P(0B!)@%>@H]`>,4E~mQ*D^i(pNH:x?zؿiCQ}at	<9R`;Y}="t=P(k}F?;tu\g3xC*ޟ;,q{qyy'#ýu1T"
<^6ߊMzP@b
zw53,UsT%|nS`A]ۺ9ԁ
=a_@rHybiYO(Ok;㽌|^rS`1|W`'f]<G6tyohw]>4p|&Z8dԴJnrL
cEG!|7}kf7վI.	5:K#*ɽ҅$Fʕ%OoNMvvpP70RJI5Var$/9ܒ-q)=;U5jx\0KWo*<wQ[9^9`\Ɗ1|ARMIC&,vO#j;?ӄ+7Q9q=ߩs9wP̻\>+!c 8
|ACWY-ԾG[JS8Eb_Oz_zsJl&]Ho8-Sh
O$T#@b(cƻrN6iK3GQf>lӨU)(z3>qߥ<+&U4lҊi1kG[PnL;(ߐ)Ęc3Tx>fHӖ+SE7QSW
t seP1ף"|tY&Δj8~&lS45}O溎]ƴ'<y`K_cZ*g*hO;0%9/!X);·s ZK
ܙBGLX`OT-I-(Qh=rxU	>-['Cr3q'gNCgcAS/Ps 
[

x_ٻT@q
{!E!j_^Qxglg{i|v}k$ipA7xwԝ
ogcVpd,ȇy ^?a7?cE1ug7gfCd'V~
y~g[5<1[
;<gN;=J>S7QOCW\F8<u =T`Z)zHqSS/Rt?<xWx7><
_kxac_
B~x]]G投Ō^~K-4qlo x7u"t؈v?PdgݱEn[w%~ݚ=8=W1{m;q#AC onMx*22[;31,_>#.f
*%
L3ҏ~>JĞ5RiW6.9q}
6RXƱ6_xDߒw7Obsq?CX.y˴k8ڗCyaKY$N ]=-!fvāޗZ{=t8Љn?
{@Ǘ}eٸ͋*xgW,nᙖ8e䮗ӵ
㓜f=M{kJP_S|(.Wɇz{Tyd5Jg9{4י?䝘mrڧxOüoh6ItP(s[)ghhƋ|&T֭`0/n*wخyV]4A1bq30I=h]ߓQD9+&#|JUs2^ƆI<
·Ç9UFwY+G'eHM00yb#3Y\-h)2,&	uj
Xrl(x<Q=5w)|'i>Ixϳ'%Evo*}x-Wn/6u/9nvDI~Kf|F՛YMaET6ާr"m>ui<e{E~s+:6nq=A 1"'nEO 3wwCY(U<	;,
`{T>ړ'oV<)`}"
6Dx,)*OKG*౜-_{l'[e#רߗbq-&3>{ñyu	xXڤ*/)TKñq5w>Dt/ȁl둼s֐ {d;Mb,pxw++w7G?n{>(ڟO=>ˏP
?6PxƤk=[)P,XWdvp]]=<	ci{a\x
[;xmؚw?}qür^@ӰsSO
wOކxR [z'׻ݥݺޥݥ]{c{\	P(ޕ0֓?>$$l}6M&fN6yWGOBֲŻN^x(٢2!ŻR5WgɇV)vp܉^ƛ7e/,XIz|PNeh5NKɕ-Wʻl(OIlw֮.
.Ikwu[wNlV
,}=2sՐsRD0a!LB2eZ])cy
-8(}~(9
P b>ta8Oϰ2*A'Ң$OwhkE~2d۰O
dV`=[TxEDW->r
G@sSˑ<;_EBNc@G'('*.P IxN"S>/b*Cθ'ߵ]q5
l+V43S|竳?ET*={_	ϼ5;>J^ҋwzP٤I	8jccBJ1|Ośl 6O^}BDj	*R/9x1T'xsA|?«/	
'6<LB9yZuN9y rxNl+{E|^N-ecfY+7/SwIAϛ3sN\")X^zS[
4.܌ww'wKRĥ3{	5RzYNC=痢ÁTKc/U
)p=v8_}+w|E}^#V*''oV<)Pl٤C$7R 3)7
2_pw>_XxKot"E¢[*ot"E¢[*o#tj~u
=`%j>B)ߠ
J;𤀍¼'Q`
@Q.+s@3_8.@_<foxV0
4x=<a#VU{]Okc8jvUy'3)[Id3y_MسdF1ѿ]K$XC!oQq=gpbf?Vgl:ǻ雫sHpH0(FZrl?IENDB`,DdLI
)
Cx,E:\vfp\@#5"@5"B#A#! Visual FoxPro12_files\kasem_files\c9506.gif (908 bytes)(`DdLI
*
C,E:\vfp\@#5"@5"B#A#! Visual FoxPro12_files\kasem_files\chapter9-5_files\c9506.gifc9506.gif (908 bytes)),DdLI
+
Cx,E:\vfp\@#5"@5"B#A#! Visual FoxPro12_files\kasem_files\c9507.gif (920 bytes)*`DdLI
,
C,E:\vfp\@#5"@5"B#A#! Visual FoxPro12_files\kasem_files\chapter9-5_files\c9507.gifc9507.gif (920 bytes)+Ddc
-
SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro12_files\kasem_files\chapter9-5_files\c9508.gifc9508.gif (9345 bytes),bH
e՗(jlT$n
e՗(jlTPNG


IHDRmN{PLTEN```̷ "$( *"-$0&2(5BFKOTXZl`sfzlrxZ`flrxؖx~ÊҐ3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3̙333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f3ճqV[κ <H,`Qo\uq:ECN<~a0𠠤Q6tbKGDHcmPPJCmp0712HsIDATx^m#Hs`^mqδ.n!@~~F^Z폽t1:v>}
OE}`-c<4|	`B)9a.*k~hx{ڴi
|x|EB+gP{HػMwi'աB9".iŏ
!:
8-/{(=	-A)!gv+I; a9@`SMl\mlB(DXV
؜^'VN"*7`NaWH;]8>G u6ѦNO=bKRuW?
ORmmàlc%Q[	O/pN>Qv]KV<	dQ؃>$-+m/-F[4\Лxm=֦mMFhдf~hkдeھbOWMTgmIa;;bDR/_v>!~a;^bDpm	Sa)|$SiR:%pTKgw2hl҆Ugͻ%[a3
^+:AZ\R#\o
˔ͽú,=!>RbʚB@v̗)Z`?.\
W"wMBڎ_tv,5|uRE3h6fkR9g$o6_$}`B!$g@袩'	ouz'ؓ F]}ow/o.xN8'NCCO>'9Aʎ	<I,gm6XumJC,{c8e֒||MdY[+FAbD'ߗŝ Ő&UrhCK.SvԫdkRU}KT/pK]T/`;gD
v}\+,mU/#6I5ou7$;,i[%ڙ\H
,aBluQ$]
~RۂNTv^kB]_FܹJ5KT9t'sSklxO)&'\ޒ߆7;{^ۭ;WBղ\p7	w&F
Jⷣ75mXOqUֆi/llˀIº]n0jĽ@[УO_D,>Eҏu!N7<zb1sh#7}ڂ튄7N6,)V݂T\/=IC@p}Qg!orpJixw/A|~1mv
ϥKbj{9.=멎ڞGvκB{ɿ|E7<ɿoTBxS2F[iO(,-'Qіqh(Kh8	epbe2{8R12N{B=em=T%Gq
J3C1bkKJu޶$]NWD	$%Ү0{t4Lk<	úVԵ֩w]?	`ٯkDquYVvƯBj>e!ނ崀/Bjh\e׏(],^$=W_=t%C(sS!⋴{>eqZzUO⫐V+iX=F.Xzߑ^
I{I] xI/YUW5E%Ţ^4c<)m5	h⵽	_Nqnk@DB{j2SF{	XؖihŲ9࿩8hWNf}3|'qHۯ'Ѯi6b}inۺIۿ	U/.҉'i>&ju-9mp?v[??wm4|{_$™sr'92:|6mi"hS3dO;8=i[:~;0h>Wy/6͓88O۽yՓYWE_(ԍXeK6Цo$7L{?<o;N{InF1ڮq+ܼ܇HF튒{ӣ&]גv/=m`k0qWMq{&Emk0^ҋsſ5G>`{tCqwa/MMY @{r_ți7lJր6m
C<HލҞh&%
Ў{|qkIt|ڍ]5֠<k-%$ڑO/1?e_wE9kvflbhU
Q59ڍl#V8tw=#4f
u-]wUq76ښ5c&M[mT-/hjeRu Vow0z{F4Bדpm?5[%L~{\F8pj92/s=T"~vmC"iTu!}+Fm]" KmӚo~P.mzI<.Z=&}'<	^:ikmc`')Mx5Sca`ի%F
f5hmMLF[-Ӷ&ܖo7Wq.įrB8{pїtn6<ZH{p/Ƈvx(m}S甄lyHô=FhGR)<85x6T6j;#=;6>$,'~׵$>!a6W6&iޤ|W]KN=4+U""my
I3&0;j=1~V#@ii1w9#Dk7RA{q%E&pLij*9fqFRYkh7[ځ1T/ެw6.Ц*ˋ,m֡6wS%K{6Ig+@L.#
)]h.~$iC=Dt= )$&mMCAc$ރ_?rg?FRϡ+'=#mg]\S۩$iG;tHKmw=	wm؏Q!÷1Hik9&=^7ͤv%ev=d:$^>_Rp	
>qfS2<}!m{0jԠoe5`&M[mI@Ӗihkдe6ښ4m&M[mI@WkD"nPM _hm%_x[xϘimO-9arH`]򸴊
1?$AN\6Pw]M:q;!*@1IF-侗6zmwl7ף}3lFzoX]nm9r1w_I;>i4Yp:Yicj
m{AgžWj=I%`Qq8>Ɍ񹺬vIŽw~\
Apu\n;)mU)<-oq\PXC;ǐeTC;LC2#DkLi1-,4}mPYV3	}%U"5V}4Fϝh=IB^w*L;LDo
i/	ﲗ,;L|3^93x4$#m_J`dF%ɀ{03&AגQd(:T@d==?M'ޚd:;uoNbxuFRiKkIi.kɏt$s#M(3xv:'`~yURI|eXoP|ѕmbBG8),i#UTY	NĴq[xdh3흰uWiQgogn}Rh7D_LuSuqWISdKsG&}t.OiGOh9
ny{@Q6PY<vv?I<٬o^)s/ˆi{m4WMF{6$a2GYDӶi[-dKq֬ m5	hzwx,p{ ؅д	;櫛s+#&LYp]Bʏw,	<{;A~ܹM۷LnV9fA-0wwʴǴ=H8#ƺ[S'X֗]VHym\,MNGa6DO6"Kߛ%Mj#ZGzϽ_br	\ŕLI^3̋
&64*Bv*ڠgN]a/ڦ?{vѽPX-3_$-	[oVڦKTFAJO(>r+vㇴCcA
-!~]X^>;bujYVzV=II BǴ6%RxM˜7
,1z\CZbN僺=ؙuµds$k(CQroWghIʴ[}Q:&أr	0s+x3b0L=mm:%qimw%Gi*cOr$#S/xQ§ivm)(h|6+QhxwAGWbN584jL{'lf[䦚m&M[mI@Ӗihkдe6ښ4m&M[;w
i}r&=ΣL~*_֬hm5	h2mmMLF[-Ӷ$i˴m5	h2mmMrmӵb@1ZIY1}'ѴLۚn&M[mI@Ӗihkдe6ښ4mLغ~#`KPR~nm:fOqIK*
+P'75D{Sd-h~`f~{:Km	F$Ov8:ڮCN#8[g	v$,&#A{w69gu|"CsF-fm%`+09`e)ݯh'"<6wnv8_
shc؞($n.mo
%cRߎ	T<#)b"مzmQ&rmS^ro2{KSh3ek=<	FJ""OFf"O)
?v=r:{6z'	)/I|KG|pM^ҳώӑqM]#¯W<G[Ph3}fϣtȼi[l^6ڕKy')4=/K
̒".XT{3Rw'(Y>~fn/P	J@_hkV6ښ4m&M[mI@Ӗihkдe֥-[0HfV,6x+WfVtǓCneb/CHhmMLF[-Ӷ$i˴m5	h2mmMLF[-Ӷ$i˴m5	h2mmMLF[-Ӷ$i˴m5	h2mmMLF[-Ӷ$i˴m5	h2mmMLF[-Ӷ$i˴m5	hzw=ȱxy]~PRU1$}q/C7ښ'Tm{[yh_,y,x\<3<ӓA>vAPXel3)hDTG֤}]<*)yu=	Jgxv챝hӅeC*']#̼:A
|AQ&H?5V<Y8ə?z|mK3{O+-sC@|
mI?8c$$pDw<ӴTsHJ
wRK荹ݗ\0sd
PEmo{ A?!@}1mfmI@Ӗihkдe6ښ4m&M[mI@Ӗinڪseg`W)/ZRٴՖ֬ym5	h2mmMLA{ߩ
	/5lQmOVڛpv.>m<eRw3ژl{Yy$@3zԢO2:%pM2C4=	_l&a7Y]^|F-o75ڟ?Kb,ߨB
uVEDAT+Dud?\~	EӅ&mSa'N3q6
*?pvy6[@ip${Pmnp0=	oq~؍'rEzI|wR_@[<EIQd>^<Gk3u25z9$D~hkn7@=ol6F{V32)nY޶57??iwǺoλhq[e׸2kb5nk>ۚIENDB`Z!Dd
.
SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro12_files\kasem_files\chapter9-5_files\c9509.gifc9509.gif (9257 bytes)-bhoe];g_Eo_inhoe];g_Eo_PNG


IHDR.PLTEճqV[κ <H,`Qo\uq:ECN<~a0N3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3𠠤T3bKGDHcmPPJCmp0712HsCIDATx^]r*֝lU
zA`vbL~HB2xb	|}>_~J3Цy?owϙF2~}X|w&!@g1GKQ)o.n~~cqWhᛰK	pΖߏ~KG~^nݲgOqmY?_h"'wzN|NFSXoS7K@xWcjϋof8f|נwHY|k->hQ+rPMl}υݜ'#lxk^
_6ۓpC'eDpF;18wP`+F^ZW;!W/8&c+/웑?:&##LKIԢf:4;xmZb2E9ydA/jƎeAMHi: =<e_Bv4))3/ -S0/+
)UZkfw+c}=
9dr9Fwǝj) ERk#ګQK8;%|n"/_/,aKl"
-D]5RU
B%O,y:ϗA)ɔ(gZa&$Ƈ×N|YY9p'%|h4iD\DJ	@pXV#ƋԶ\>h̊
`P>p?BF"f-e3u#=$VD
|B$y,@
GY(Hj`ќ(f}ꗣݧBR3_VfEq!< UnHh`A`,DF?qgFh[H7zD?72ޣ1|ЬHh",o!Aym&;w&Cv7+ŮP_).3<(0cQK2eШ$	<^hK?[~tFMV3aչP{{cwJӸ)݂1]IFBtnBC4Wg=jF_x5RmӸpR]l̢fzpJSSfN/~TEqf/͊n<3yE'm8MmQ3n&>x7&fWJ|[65'Yό<eSX7/OcL,i,g{ߩ8%>òI
'^zn<æ(QYu.SNo-IFy=1ĐDmCz'<T/g-kJ7.D|}]#{%X$%jKSCi5J $x9|& k"X>gzN!l%NhWY,JK*rJUC3
%TJj,2!:5uAKhdPfEUdP<φ}|=PxA*	B@1g 9$5% +AXy6E#"JYQKI1<!aŢMXЇ,%}wyc\ܨY7;{V7@@ˮ֛X"
%B h-^~0](b"NyIp!<N毰 ŕ|QB0BV`)^<❞;dY䂪e/д=B7G
7_aooꟜsevl|egJOc_~<XMg31A,-"ӳ>_
H`b;ޥ`;ԒbWnzfNs:yʼ{%!]%Ek܇y!*;X.j~l}KNmN9Q_>́=3	;g+zmrjyʌۛ!&ܟߗ#pW),MW,|cZS_o
p4oJQV$<uc{s\f0цyʌ𗢓ԙ<B:61ܝ_F>2QUi{E'+")ۗ+l~?ϻ]9k~Ƿ/!M2F^),ƼVAEb-}3z89TT斱p@
Luȕz5\z1 ;߯/MJ
s/4>Ln["+/RTŵrVcA–8Y/~Ɲld.bLq՝r=5G&wzi~;ryʼ?ߣM}-qJ|6H@-(s^ߚ".8s#>ZG$?M8>q>r(iz_W%k[ϟeBN#=
_-T_;%axrY+Rvܻn8nR|!&mwKfe1'l-~8fn)n-%y}N/uM] >E/_p(ڞFgU>E~t	9t9ߔ|ߏ_1Ro˄dyśķJ!a͋LSiOTG&D`ًsmz{5b=|-wA
KLi򻂿o#aF?)%3WG2;Y.?J{$WRjvЏU]̦~=o;oK(#!tp||;.gp(2$Y[ɇ}Ҁ7ZItֿ۠k<cK_53H0wwR;I`=Ek%0yn~?ow/@{>X|)^aח⻛|ߌ/×_:vBpufKM'}8y'Y7_o~jV.ˤsiMG	jW&V p7@8o#+y[HY0 q|QO'i%	~}ŗ㻓߷P5o'Mv{ogrI.Pmuփ7}pP?4^Y|>F>
/.z˥	}>Es}7ZAZq.G`o2kMP΢)U__M0#\+%u	Ǒoӿz߯Q
|/	AqNE_ak}Уվ*^߇:n}r(rC&?F$↹L~Unn|}/$Ru2L)F9@&Ce
dw*_enp/lpyzI/D[pIW YyaIGƛ|=߄_g.K
L*x0K=S?Q!e1Cưϥ.* FsGe3j>um+lTϊn*+ f5tjʓ.iWϫ;f3JYr_t`~
5{Tů:4e?{~Ew$0_<D:k27 )3mȘF0h[^.JeLä=(0#W`=%Z!|E?g\݂r'/Q񝲾lh֫vW+RoW/j
Yu㫀&6/o
LZp$M{0?i/o8DTAy׳?pEPJ'g83Cu-UH)X[ğOU%?_:%0J~g$P#i߄@ۋ$S:'1Aq`*n?	{i"m"?HB2Bw}$oL"?ۋK?;DT
%*iD.ҋ+#LH
$\	Q:O2RG_`V G$>beyN).8߽ov%6m4:;_ԏ#OAD|Y_^r1)rx|^?BP&%*\cĥm
.dw'Fr~\HnʠkiVߟ]T;(u3OJ`#?VwSs4(~:d"ş02I`3)$9<;$Y}ppEFph{}[2>Df!xg;ߟ÷f;Ew_cPDpwhpmݞ6/tocNyrO2VSğ+87.%P:DAҸگ2Zy$3~Teg`&_>_))aB8ְ2jpy?|HIi/^,A@uk=4ƨ|@[M~7 Ys#&Lm^+}^|ɏ,0&Wķ6wNtW.[_:3!:c0{#-۪~{!߮eR0Z7l>v_D\qĂXVsCP8H+}rSq
_S[DQ
#5
mB}0'WN4BG)j~{a]J/#=*u,<.x_P)ͩvoMu凛\z~p%1D<]Yޟ߽|wE]-7'o/&k[߯[xt	tnJ= 8G|t;tGs
|
_	^|s~}(V7\;8m
nԗy~7/2[$Y@FJVȳ*nŒwg	T.UL*+Cѓlh(ʀSY"hhޭg_ы_&b.	|5J~_?druE:AS\ALvއ?Inj1g[2vNv}EWI!J#ͯ%Y}pOm.5:i_o/"m<DqMWỊl"H}~a
P<5wh	?|#{2nob[y_f~B	4NuBBtdߙ'}1i`ʏI7,13*$I)47I%:{wWf(aw
|wMU_XyEk5DFd
7&{qC~oPaKe9Հc#g|%qsᶇiXwM>H{B-DϺ~JSyyN9f~pÅ߿کwU#
|
lY{[Q_BVv*U=cۻc{}0eT&Lk1k* HwTu$YGJ[Y|M26{cD5xhϫj#9W^yi~>e}Y]bN4LCdf9._|_>h)qF~);aOCW߿2Yt~!wY9?S9',7Y=Gq '1-o'YppҢo7aoWM#MY3	Ν_3heTWW_"	F~/j$E~O7^7!6ѪuWş#f=-?_X$F~B]-o=Qoov7?'_Uߝio7{gǫ<0f8X=~;I8AD֍_E@V7/*co ^	WHm}8ߚ~ lw>Eܱ߿'s^U:8C
#."=@E;[F~Dꗕ]_|G/;[F~^|-_3"p(߿V7"rq+Wf)#w\?0?h/Nq7
cf˫:wA6/~q
߻=2LpdR`:],ƑYK7m9	Aoq}]ߛK7(WB07x%?q_Fc-3t7ǵߙP`fF|Ÿ{z
jėeKyMV {lJp7J>Dxa+4^6O/k<*ocKZ7_	n{+S>g3&	\™pнW3. ;n5zK#"0l6W*\(*3F/ 3{_<|׎[_ڐR(s
hd2^4ɫer1&,2P,3$kv['O|xLEHėSh-hX|xE~iKUGы$P?ĪUh2k;IENDB`DdL
/
SA .E:\vfp\@#5"@5"B#A#! Visual FoxPro14_files\kasem_files\chapter10_files\c9001.gifc9001.gif (8158 bytes).bC|W$Z?jvnnC|W$Z?jPNG


IHDRpy)yvPLTE𔕣s{W/i86_drDTo0K췔aFwßSgeu#^Utzp4pD99D@!᫳J3cϕ;CjH%\ť]]yltԵX:jr.L0P?MUk+3`idnDZِEe˴H(/ݬXupuT0$FNPDqP[uV:AˮM76oֈlspDz%$_Tw~ȬZֽpxnS^H,^{=zRDJV"W.4;g#=G'>'証I4<n;UHqȭȵ!oT{n=o,>J\j}}!%HW/ZY:T=z9)FaFe.
<Lԫ~YqNjT!
G*Dӹhl{?Mmem}~d:pd"TCL\㜪5-fD[uG<jќpM[l˻‘[MMmrK|(,gr\eRKVG;E	
!\e|s{󌒡čd0n<R<%Ljn•[|ҁLּOZlL\nɽ $r\zr=y,%/,3mI_d:DV%g,3B
{@EV΀CpTH!$1enTby㺤9&0`FM-ΞHvԫ8$^~/fc~XaV-<
<`[g𠠤KbKGDHcmPPJCmp0712HsIDATx^흇(όmۿ=BdvO _f7wYK@[A{~%@Aîl_,|ed
_PNgCyп['?oVϗk)s
=B7),,¾yϞk{2f7oc0渎]2)7RN5K*TRP.~]4D?tCiUU/k}WqJ2ް_3[A|t9ջ|__ft^!|k!Oӳs'$Gҧo£2$Im:g_Ϗݎ~-Z.8[fl5`k].&rxtݦ)]cJWzT[!jl׻JthgBlmq4q薓
dBw*>to.^_{Gu4#wtr[)_<_iTNm"z'P~x+PeFɕ:w{<nƀνdyalz08˝ ϻvd=5tݦqc
yڼ1'691y>*^N^jES1J(6fzv}Vsgpvٰ/@7MzZY+=G76^xT])
k'칷i~))kQP"9|ȇ>-\D'>84Nf6R["fC/Ȃ~S#[~Sɸ'>	J?nuBjPꡧþEGO(Om&SzmzLΆ~J5t(}kM^ h*	J\JArWͅFwL~\ļ[1Z7;fL&OOeDFR{/qSȰ(Y40DʡP.nG⊔N<eJ,@AW-WBӑ04P1t]+e:9ջe?ި҉tf3_tSTLDxLXZM^s',u2,k@үl4JspQy`kTh.*t7UuBcOJ2=WJg͖J̰&Ƶ/VHd]
~e~-	ffkGm:b.Z҅Ki/[D,$t>yBweү.GǾO+=T7
tjcIUyCe_&p6OTByMw顎CdO!R']5>ܮݠpm>V	msΜjZu3n!q2PVD/nۋ @im%mOxQfJ6J=	O(m:_$3]OH.M/uF'>X;8focA<e+4Xl<:le[~SQPR@clnt@tl{qSfgr:rZ\K}T2O}B1k2.YZB0׀7x}E*7	o6TnNlܜ&@++R9M~W>ݟ`X<35N0)-`wSY?RJ0xսy}^z>A8l~[qNts/N/
W@7=V”n++{ nK+per*?P㲝;ѯU=P.T?ECz^G/q	3xUI`Gc~XnzʇX/I?Ǭ]|Tw-mK
ԐEn˼
.ƥпн6cΕ=Ÿ!=@YSЩȈ2Su}E>nO?6_cq9ջV	GА׿D*9_&t
ک<בo壐l肺p?|}fT	+[6B-ӑKIɼS630#
WcΎN3cW@+]^6Kr,nκqԕ
4XoګHз|Mzf>-:k{>2j@oFW@h]-:3ky(9]
=n,
;ypQ@yh+_JfDgw
?ۖm;/׃^CUЃu{0`+	kU?OΔ%R:.E&ϭ	,j
9w@mض.HxMeՔdYȎ7sƩSЙҝ.i\wCֲ&Q3|_Tf;st%DTJWz\ܚfCjҕxMCMm:>yyݙ3mq{-0~u/zwmw.U{ea.vJPIp}:Pu.c7(}ԡ1k%]y~ِ˕׫At=UgGyCA^Ff}{X^ţUʁ{}@߱yb#5#7lݚ~|HhU?p}xNdzBYջdXr?q@MbCkzg^ga.դptDUjR˛2wީgջHГr#g{	#&zEnQcfн3?qZݒ+G|bԦ;[O	nntΥnDkފysm3NoEfރ&MJ^O-iuQ;]?-Ȇ6Wȝ3zZu6FʛN5$j]SL槱+t6'm{Utj挬߲H[!W:Gz=	ӻe׬f.kTJˬܓЧV66ǦS!{7v
j6}%#nzW,e\ѵQOp[C3>sV|3?B1±̙3<eJPͣU&us<X19t҉*ס_nJ2HZu5FPum>]0
l4<b󞳎31ErS7o}{Z%-04a)]$޹U<kRmU$q~_S)cdPqj}*mӭ}Q$MPGkwvj$s< La=Oe0ow5[7ݞ7GJ=g `Gj޲aV+j9<v{Q./EaaP.Bm~Hiڦb觙3Afw/K\+]5G@'k٫U_]ngzW+#P{wfo:I=*$8VT +]bpڢB?~v=xZ:<Zs#z@WGkW@e|T(*ǘ=erVV{0Z@m̙<TX05
JP]7'Pz{ҽ36=qMfJtyB>qt"Nz̙p]ٞH9Ǚ.{T6k.#!hnHY/WL!s=JoV:[rlG^t~Se*wBة¿~R>jf-QZON\]rһd@yΦodsWJseYK2+Í]L>ŕIkC|%tSRq>VY7g(!
c[X(7JXB]PvȚܬtzZ|φ[ft
*]ZJzmW:MK-:k߮t&-	Һh~;)]-e$u@oYԓKłUMA<7QkA2bm|7+]um@o2whϡКtqf$Ho#׾T9/YfA،@oI]L5KM,uJKd}-yK;*[t(}"o`kWPDmzl@D
@al^#6(}
#SP:6%	cX\QcSaFFU#J\QݎJl%җ04}iSlI=F4#CPzJЬ@Yfz#(Q833gAΠJҋ&b-[6˔^A?&FDW}&sܥJ|Uyt2-hG6]~ٝJY*.w tk
NX=V.M;O^tgZn!0ǧK9ڗgDe+\y֪cŲeCEP>z2uܒ@
ōO^tf3>?sNc>zMQ:ueKN[MDeJ0%w 8jwGw!<O^X-I8C]&'Br=g&"mǶ^C3>;>Ӣҧ~ZP4O8tlJ0mQǕM	n3ԀJ7;% fY`,f͎}0t(}.{/ؔ>ۦB}zBO#rO>xFvVT
Y8<ZYЦϴѦϱX{mG6}mg҉g,^^`Ŝ6+]vQ/ONu@'hgJ}&Ќd-v0=SŧuTfaKdOX2+.ZqޗCv޻#w;g9]/H@4l=PHvhGF-l)z''˽}"1Q+UӖT1
s@cȚV:M	FϹƫwlJ0Ű#r]LX<7E
Bti_!:;g:>=Qnt6}pIo~o,p>q2xmtcKBcXyX})ccT,11v^*@_
ǘ;//cLb}З1&1>KK@cbpIRR8$yX})ccT,11v^*@_
ǘ;/Kj};# pSebKJ(`@o0ޮ^}Wr
w%אn@o0ޮ^}Wr
k(`9Gj=]]3d=ͷg+gSEt}:˛ފ3||UNŧ%Ă{B=ُĚ	|vC'Vn`Gř#v63l@_`@gS?*w1P2c>]EtV _*ԙ3xПR1w_!/MC1L;<P3O']gqfZ3
$g$yLC=?ff^=POrO@4ԓhf3
$g$y)Gj^Y9tpNY$KHFu@Oxyrf;/G6JG}'R/ۑS켸2V*]$mo6*yUHL4*QCj*-pX%SHGa-3,l?z3,l?z3,lпq=\5\@/6}9bgX@/6}9bgX@/6B[@[:泫1yZPY(W(y<;=?
g^f=Nr%aDs-RdByIENDB`Dd:$
0
SA!2E:\vfp\@#5"@5"B#A#! Visual FoxPro14_files\kasem_files\chapter10_files\Checkmrk.jpgCheckmrk.wmf (656 bytes)/R N!!h(
k=o!FN!!h(
k=oJFIF``LEAD Technologies Inc. V1.01
4"@.0&4LCPOKCIHT_yfTYr[HIijr}Qey>"">WIW	
	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzw!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz!&?յ]B=ZQgp0n<hƧA@ƧA@vjrė| 08ߎ@EpZ"<qˮ#5@t(Zv`*}3@xL,yr~Nf [A.ogwՆC!c<cG@ZS:-0{yzveč9%lzs7l?Poexv8$I,yzpx	<Yk+YϦ9(to׼P@"#Dd1"
1
SA"2E:\vfp\@#5"@5"B#A#! Visual FoxPro14_files\kasem_files\chapter10_files\c10-002.gifc10-002.gif (9311 bytes)0b!'y)G/Jc}NK!c'n!'y)G/Jc}NKPNG


IHDRB,5PLTEpM[l˻‘[MMmqK|(,gq\eQKVG;E	
 \e|s{󌒡Íd0n<Q<$Lin•[|ҁLּOYlL\nɽ $q\yq<y,$/,3mI_d:DV$g,3A
{@EV΀CpTH $0enTay㺣8&0`FM,ΞHvӫ8$^~/fc~XaV,<
<`[gs{W/i86_dqDTo0K췓aFwßSgeu#^Utyp4pD88D@ ᫳I3cϕ;CiH$\ť]]yltӵX:iq.L0P?MUk+3`idnDYِEe˳H(/ݬXupuT0$FNPDqP[uV:AˮM76oֈlspDy$$_Tw~ȬYֽpxnS^H,^{<yQDIV"W.4;g#<G'>'証I4<n;UHqȭȵ oT{n<o,>I\i}} $HW/YY:T<y8(FaFe.
<Lӫ~YqNiT 
G*Dӹhl{?Mmem}~d:pd"TCL\㜪4,fD[uG<iќ𠠤EbKGDHcmPPJCmp0712HsIDATx^흉r({*3IV `w6IwsC0?xG	|oӴ^SE7^?LyE}]IK-kl<_Z.|`(ڽu[Lh(/X~wx5TWbX+3jW4nE/=HjH@5ciRҴ?Ū׿_ԉiUE;&<~j;mvCi[KtmYoQj?6Q(}|M_=Nj1Ȓ	K{s|f|ٶ-RAӔv[nn6_Jɜhv
6J:-L,:~i;f(
ߜ)š_t3J35mk}bfmy$6^Svh	֏ՕKރEdCW &o}ol7sK-$ۙ
Pev"67՘\n++?<Zf@1c=xky]}}t4kb~p>YOzZ|{7z`_`ũeZ5Zg/|mD
*N{h;:&z}%oSbէHu/weDd	JˁGH@%헀r{xCz~o~kX6hKo-m~TW6hIo+t$7
ovou+6S
ۃ$#1ez5QԴ	=#3ioG7d%%AzPȬzVlv4),6ToĞ
vn7nPtżl$p跛RX@5Wn6Cv/@M
vv W6ۅSk`GiZeJAztbGm&F̖1hgLGm4Pm9
څJuaIAk@4ܶc@lxaU&ZZw;mOSkWNNќ
=#Lh״~;y#6y;o"mdmhwT6C!:zW}>&'v`Nfx 1y8ӓ-ۇS`s6>1L
dwt݆y*/u۝cr{6ԋO{݆ixyBXZ%.*Up-3&O9$1uz$Ah:;I6էO% ֢ѾmkFh?=@XTAM\pU+Tt^
WeaARKEM;p$>(1vG7Ok$XX>9}X/ImkyU9 0C=I'}ɴ=vGM~ £qUB{?Ӿ
h'p`s̈́v[ʻzR?w=HW
)C֔nIĤ-N{<FރtǭɈ6)?9J:|"wІf7<U'ڊ0ODdl1Dʺ
BSo5iڤ*5.ȕmMǤ:'Y@[uä,:FtϐvvQ@LЖ6]J3~⧺c3}n[;k󘍎AYи)^VK8-m)v(a6`HbѷUD^@AmMJ=]<Y0vef+4J@Ȧm):98е@62&VSN[Һ1펵~kҠ&
ڪћo	àB	]9G*	O~&BjXUIķXd^XUqAJ|EM{2
H`{2	J`|+3'z"nО(YpO̰696oOܺ{UcoCmrЗ͢ģC_d1]C̽ڝ­K@{fCmCĴ?gayM(7߰+/~gVmk}@Y$ߞ)]L`|Ń[aY|߾u
t&1XLZ<cr/C4LݲN$|QnD
k?m+0
9뤲i_ou[/#H0vxcӂޘvZ*C!僂3*Z>(h/0iWJg4D jXXNoq@@ohO
;&TfoOrZZOlr=Qó"amL\4;@=v.ĝi-틾۹\0{`)">杋Ԥ趼oHI0= +rڡyw>~o8p++;A'RO&:wm]j=Uto+~|' a˷9V8UݖR;͋Jė9mJ:+Ӧc7<g7_i{4FR\icӦ?ru|<c=Jt2j\-IF+hJ1/-֮oۋU6RBNlɥ![ݚjx]1[ o7Df=CO z.Oϕy,nzn+4&]践9<6m_}(;LB<ۂ6~	C^`ɓNIxx|8)F3&F̶nc#`@e@SAU5;lݮZ!T;"")͉Ӯ)yѦ*:.
ve}I{l[䶈NsUn!t&N3B38PiNl(Xm$0x?yZD^+Ҧ"6֦H@HԦFkқ\G%co{sѾ'a|~`:SoڽfW_Kafogf̑tl_,cNN#-ڶ(9r(mڹ';׷iN4gZt)0CcT&_
au67T{ੴMFxHREۻ[;Ŭ{vN(jKPGyl~80H-۷u:hFl_CZGqhgZ q3 #iMhK CR_B6Bǭ$v-uNQpi	H3*ª
myVնۡS|^}Yo4Mn;J<|2cGbSjbzSŨeto]]QcrSh|O̻ws`'<
Kg`j%/SÏUi?{Zˡ8%cakI-=*Mum<6t;~]@	̱`)F
ݮiWqc^OV˄|'d~:+L&y:)Qh$AI4cu현=h?f.i[N7&ߧGic|{NϷ!nrӖ[5_95%m6t;M 9,[3z8;ߊv9XW?	oNg?jvjg5LmON}*{{Mƺ|[7[0*iWl{ɏXrӦgv1s&/kw QI&LԒn)f8'I#X6q
u68uאLIzi[N0V.ܤK_+3ZR@&mc2FP~jgv9֕;	Zqtڎ3n8.7VDfVSGm;Tmn[rm]_qN|=:q,/ޙX-N0cԵĠjcݸ͘]l#bb<;;N`6GOԭ{<3isN5|Z}(-FѮy9rm{X~Yi]!›#XrXrj~)|;MÒk	^svM:Na 5ҳWi+L\H@IAՠ@$ˠjPPn eeP5((h72I2q$@{T


Lq%f=CM$'
LID-BC7$unO04{*ədC➜hO04{*ədC➜hO04޴G=]5
ftɜ>߮l{sZ%W^((dyC@j('@@~-L;G>0ZGpTtߚL_uqGXKڇpCڴR!"֧hȵypu?`/i7;[M6ݘ5>0
5f5pM(`VWjwA?Zhd6&yPu!
ƊO.9O[<t7OED^pM5S{>&1<Cͽ`Hϟ+O!혭-Y`vϽVz1&Wc+Ḣ輗}"TۛjӒ){wܣmy/j\=,;Wwwm-=并zÒBp_h07ϣ֒hs]eоz\'?оk{O;Jo)?Ox"4k~ϣM`DIڛC'W\f&s>GO*Qpl-MӦvoVojzEVNZ<GkgLDLxQm|ԝY?eic>5~sڒ3-ϚKKv%MZqX>jqQ62otsJfh﫥p$sdz߰ye}Zyש1nInd?/
31+/K[u|9kpE/X5F;Chj|WٺݛYyOMF\?+sY4iISrp&qkcӶP^܉Y|s\^ECڥWg}UQU6SC@S"2%₶D[_T+dJYֲmx(|+4Ա=
Hbc~p
iK)$S<=銶yt}|ՑڐkV
^JvO'nƫsUens,McQm֒Jͱ'ӶdClWitţuKXLJ6UQ9j:K6+۞L4M!ZoyJԎu+}N{GuA$^[a(2sXBm)aCV$1Ti8e̖7M(krkXio6SUos!KgDb+>mǒs7f>H
uaۓ5U\ݖRlax іk(Z|`֙Ɔs,jmbN3<Tɹ>qnl.d&EVWTpxdc9Q,ȋ"-9<-BfGoו8luY><kI<hkK~WF+a,,fFkz luYnI;7Ym4h$	"%V*Yyy%|gkWjb޴Wse{h7++tHlFe[\eĆi9%OSȕz|~%q"Z=	tA;Ahsvd瘯Ңxy+o40h[j]]*N GFOErX-#mUofc@S@!ҾmKC[<yBWrs%v>6mycw^n4ڇ%4ڴx@zol<}iJJW<Jô/|0d#/EJ[Ksz=Ve/-v-Z@<^
fWW0%\ ~	m?]G
2)L	y"S-m-#ZRݶ"TYUTxu\⺴c{?S@(܉eRM-ִ	֙6YFJ"G,-aV[bLLk(mUi+hۦpoh{,m6hh2S~-&3c>gZK[
c\T
Ÿ9Ӯ+`)m/ל]Whg:vVm	|;lܖuj1'?.[*SzSmMLn3ogCՕm^+rlOďlӶ'/v}NC,o[9vb0a8OlC6	<U*A?
8hi0f|N8a>`m|ϊ;f~[fN{whݎPcr[Ӷaf<؁6g5ɛmF;fmQ]9=\ϡ~"[8h//蠝-#"[8h//蠝-#"[8h//蠝-#"[8h//蠝-#"[8h//蠝-#i8"B(76WaV1L
EOh@jirzF(~ǴZv
1&ggpLh@jirzF(~ǴZv
1&ggpLh^C#
)*=#MTCtĖ'div3c]/D,I{.hvDhdt@{f
	LnCtHl##Aۢ.mN)ӏηc:»S(E}	7\6HVs2^>j`M!vB&{+OXrf.%?iSBc|DpC1U|*iA;N;:I-oyC
m34\@;vwmUV
RǸn[6csڇK=[(#s%? 83cܒybO<ՕKi+t+M=e:gAжd@h>e9XOވum@HI<s~S
g۝:w7]<5oN!M={W'>w=C"ͻgw'Բ|RwONe6-Hh:@b7;IENDB`*Dd1$
2
SA#4E:\vfp\@#5"@5"B#A#! Visual FoxPro14_files\kasem_files\chapter10_files\c10-001.gifc10-001.gif (12576 bytes)1b
)~֥M˶	
;(Jn(~֥M˶	
;PNG


IHDRB,5PLTEpM[l˻‘[MMmqK|(,gq\eQKVG;E	
 \e|s{󌒡Íd0n<Q<$Lin•[|ҁLּOYlL\nɽ $q\yq<y,$/,3mI_d:DV$g,3A
{@EV΀CpTH $0enTay㺣8&0`FM,ΞHvӫ8$^~/fc~XaV,<
<`[gs{W/i86_dqDTo0K췓aFwßSgeu#^Utyp4pD88D@ ᫳I3cϕ;CiH$\ť]]yltӵX:iq.L0P?MUk+3`idnDYِEe˳H(/ݬXupuT0$FNPDqP[uV:AˮM76oֈlspDy$$_Tw~ȬYֽpxnS^H,^{<yQDIV"W.4;g#<G'>'証I4<n;UHqȭȵ oT{n<o,>I\i}} $HW/YY:T<y8(FaFe.
<Lӫ~YqNiT 
G*Dӹhl{?Mmem}~d:pd"TCL\㜪4,fD[uG<iќ𠠤EbKGDHcmPPJCmp0712Hs%fIDATx^흉z۸&mr;3=H\dцg46?Fz
|off@ڟz
|ڏ[hB5<d	h|}oTֽ6`.*폏~;F߿YU
PrZMܕFǟ9Q%2J倈t]k{oԒx(n~ןy̸hyhj%ϟ5ڡSɓo}i.9`ac_>CAЎT0<Y;h\?mHyh||]Mk<{tK~c>ڻiGC6
-&+1бDKH-U/z"3}OEm;9oJ,fXu&8/]OSjiݕ{!O>v!*pkd
?xgڥ6иڶ#ã3~P5
1϶`ɑG'fC<:=XPۻw	zG9+SѴ=6zAJ5iU>hm},3Dwm;p9=>m+X|͑ZB8rǓ5O*=Y

8z
77Ͷ߇/mo>Ͷ߉6論wmNxmw;lhifF4Ncdʛ	41_MumZ]YyHY[===/^V3C7~nPoI:H[fq/"wO<BY]!Hlsc mX;B+:qӦMMXc8Gic4OTfhoxKum>mH`m=m@Y6NJJ+m>JQfPF{6m}B;mkQ
Vmg*:>ɀq&$_zbԶhy+w&nC>DOrpTܥGM'om,-Uwh
2wx#I۷vxճq;LPO4h?6c6`gѾ6XƶR99	1tpR=]3["E)V_
DK@	f[Bi)R>y]GJ2vggu/VTJ׵c]ѴRE\4>cI[.Y+.JW#Z6J
4Xu|YGyGWVU`C<RFJm?/lWo2&peFJm?/lWo2&pe
m	')og	\Vξo^A{Oݳb`t!ShwkCnYXO]	zhuׇU]ި9>g>
靴ȫ&4p=ّ	;cuuz+ƂP#@}W!ym'^@)b9myϨWf/`W	#.={O
4&4Ov4Fͼs-pbGè4v:O:
c`D&Wi$꭭sTaZ:Af0TȤe@i'mF6
Ў7\񎝝"RE
a;\,I|
Qͫ𧚝`boX݆k>ayir{q5%t۶_ %t5x 'O+3?P9sDrf&
8
])E>(OksFQ4Eq̯I$|Dmr&ϵ0k9y4Շ8un(>c)p8ث4NA?'ɞQr֘D;4[qlcdti{O]&.4Y5Xyv\\M)@O]kcvGң#hk]
׺c5ɿdi쵬]|Җ;)?k%40ݧ:,XmߗV2dn,~̼`c{YOʀr.\NrvU߻$ŵeǏ B{1Q:LTN+T_\^pퟍ?MIA	Lt>w
rW?tf~lp{Eޕa5vܮTrڴmDC<`itb,h{m1=o/iJY_wQ&/ʡj:jG1=~qGCɾA>LO}v=Gz/	lgR<ZxN߸mY)i{%!c˘0a+)fȔ}M~"l;7pw}>]6hU$P1k)Q94=KSsU"v^Oe~7jmN7ZL
1"Ez6ג'fO9yMGٸa;+gaW1rK`IZ3S
&dy}:OHPqޠ
YZ0AMZjr>O)+BZ{4`)rf	i)rf	ɜ |A#fJNSئi>r.]V<EH׎q ^
ɎHeҖpP\f2cSΥ-D;<:Ct/,vh[b/e6LMϛp;0KB{ų+0n<9jz.1ذ_7h[&*6-taO"9Zfm>>>8yf2s3s[4 7x4vήٴAC
,-31Z
=r=m>Zu
|ڛFRH'٦}9,m6:{l[n}#i-=s2?s%c۵ϱG?n;+ц@GSs+Ir7)7)OŢM%Ƈ|gv(z_-LK{N*9{wNK|9ڃ'mnm'@M)wmV*
4}~(\%ѾJwh߁U2̡::ߢaC촠r3."6؄r}M_|O]:t&=Pk[RT4csjm0G+
eCY{ۮ1= d"LOZ&)$کÒm;Â{d\	=9Ew<gװ@Jٕh{y9~1N>Ӯwt&:Gtߕ$a4^iIJmp)GA|KE02'sO$JoCM7rI!P\<sTW[cɓsrQFMzІ@dr"Wٞb˵=(FSJ(uNSɃo$9gyFN+8lSB|ޜ
L#~B!8	{)F<
qWIk&֬%.:QT6FI7)KkymtAS,mIGtmL=Ziyۮ&eYEh/;nDc,F{ԾѾٲL
3tgڟC[uߕry'2~w%]AI`+uwѬ}.cTJ";g!퐞'*R&l3N{tM߳+Un;g}޷h+x[&*̕ifJ6<S[?1@XAsOOs]vA	'͆Q* K4=36z
pPdl>u6w	咶
;hۆ;78ȒqQչHXT(ήΩO>+iJ.c,qgWV;˧8V^JZ
ꀸ
:&O'
P,Ҹ3.BƇϴQ(cG/W]r/M;;T":ŶwhK^5Ibk`mϗzhрnڪuZC;-YyD	ܘ9oN5(9r{EgUkq
_@*
y.kܮJeıHJ蔖	9͓0')+ID%67h{нmhTh;83<]U+A/=5=vxK%}w*=hTZp3B;m0Aò9b-V5P#y((a4jLNR&Afp+.iki7E"m&E`	q`^aO4S)yrn{IG8+9ׂEagE9U@hKm[Oq'xc9qi}-99i6vSNN*&qׇ gx&4RgS5eQXrnMnPPݿf/a4l;I]mVlU506<ҮgU.\{}嚓h^ZtVԢm06@yK	6~!
ڄrW޾ٕo-KwQdgWf^OܤP
?׃iƖ{cmߛJ+#
]FjC//C
l9Warpv%m5{gtAi,4>6Ja?_&b7O`o7̶POmiPn򵹎C	:bg?ζ휻+dM>*K?mY܎O{.z;<<(:c˴iTϮ~rێ&Rߒ}'fB:xٔmÌNbػ
?"qml|ɓ6m4k5*kw/mFOImj+'۶{x
<>SA2'	ڨgWXgvvk
$OcH
akW<)ӝ%

tg
-q2*)
s?z[^f/AS_kʪL۞$5۫9+՟Icfw2M&i_Slmoo,V<E"v
ƣ"`#lmV&m­@ҝEnH]O~ rY.,,'-6HԶ]:ѦHgWZpϏەg!x{c9NDWkw*R얣m_u6Mq
iSl{G!{Q\ӸctzmpI1+|LC S9

-cwu@fsvEK;=kzupmY+&NQK6\p%\D.Ÿ|Y2nTaZ-5)dCj4C*ήzNܖFv->v=Zv,ͽ3C5?gC}Srr!m|AhUMݥ{iݫݫZ=AǨv
.|J
a۾JxGm/m8@Slήh\Yvm+N3rרd eroxO0%???&߿I״Z]ή+4xwރ"XKk

	LTOmmlЊ,O.K{WTӼ*6Sn' K^]]9ilXb̴`ǴMAqfR
>QI|'8+ӆpf*"lKiLҼvʼviYDwv
絟i*":Zܧضv~rɎӬ(:K2LHjb3
)Bo3rMv0iW3B9A\UV[{iäb3+FwM{40Ŷg	kilO6^XSlή YwmKϮ&٭X=NB[%Bk\M͒P9%۲К+5^:J]U1}?-+
xǑ
"<抜1!HM]>&w0OhB܈'ńzhhcW}ϮDx#`
s^M.v'?oE@QfȈ	mty1`8жgNJrl>g4csik`/9>"Z4SD:s$v}&\v}fz*y͟εY dNM	:2`ΐQ/{!W` +B*pv-^,nUkq{ٕ0oj0U!?SЯySFbV50o
:O^h`m/0ԷF'Jsܗ`y !)+
	4W[vڕism?'oogž`>r~PR
fc,o"ژL:O;0)YhmJm@'cq/>>uY&P5>ӦF[_m_5ڐo@c#)Կ?"c)>j7aKJ1\G^"nGL
7<GY	IR$Ҿm2#:x0p^7l`)Kl1	mJ[܌n*Nt8,5F]9M\c'Ƕ7.p6(<SήH>ZMDۖiNG@6+BC:ᰀ}(bW:u*@82Y
7+}5{i
b۟ UI=CTkshvd32Vsipf&̰mtv%?Nrғ2tO|W$~(})Ϯdq߁veu
j5$lԚb슊vm?&SJhá
q=&ڶz]
OQ8rQ-~@AgN3i\Zv;
B]{fﵹb)1\GӮm;\릍mJ=n0sߕ]!=֎\+tW̠4n)!`9sM&G[M[ J[&ڶ(n<yUӆ=ϣ-J:'rs🜓h3I&0,mlߩ}pc|e*BixSDmAHg	vW9GH
|cZSl]ZUVqK5rmEgWDRMpѢ~߬nQ!\Է:
̱mAV	:H>a֥D'nxDuAd6blzbShw]^`mGM'erJ;.imgWH6w])e\gWTW{iN=khm˯oRyܵ˄wr-e=6w%~Jk`t"G~&IlP^u6u|7&hh1('pvImήG7}X@zr=+ήl=Q+0ERHϸnCqvݻ<G^HqJ;KFdi]=
B=r[I[9O*¶)mYZ=<ni{oxmGϋO,jgWbN-.GHbY0Lfmdͫ9+0t,C6r<.&=?i<l@)؝;#q"겛``s#<Ў`F\5nHb^Cή4D^ZCShٕWTCAr;Ҡ4m
n4i=Q][j+y'{k
hi1MʌW&gM36U4`W!5BN=BaW!5BN=BaW!5BN=BaW!5BN=BaW!5BN=BaW!5BN=BaW!5BN=BaW!5BN=BaW!5BN=BaW!5BN=BaW!5BN=BaW!5BN=BaW!5BN=BaW!5BN]r4#LimF[@~]PfEkF{m~:鍶N_k6kIouZ^NzLoV=/{-)$E4
L/r:m
Yi>6ڗvlyD]h؟r~9Wi]Z	ax70zuF{탰3s	
m`6h5wF;ǖoNtrgהvs0U?M21K3#gІRgmR2kXAS<.-[flXz;zIJ6ٶ>]I0nqЎS\B\l.#hwюY4{<RsrqW% 'wH:eO~}\7il[bɏeM%z-m{5箊܃vڝGl	v
LK7:}]hO'kydtogcZb/<:IouZ^Nzڥtm.m槓hvi6?F[Kokj o5MoW&@F[)b_` F[)b_` F[)b_` F[)b_` F[)b_` F[)b_` F[)b_` F[)b_` F[)6y4%Ofg䇑p'Cgo=Lz3=Ѹf7f0Ujllinm7Jff`M]
.WN
;]
<#%
hO,'<'/Nvmh<]'nޥxz^\9l{~
ƹX9xt,fvx	zPѮӮf?"ڇ1C혚FYЮц\m0$uNS#F*޼%[W*Idl.n՚07g5O'])Zlw?/.జ|^m,7'/,KSP/l
ZNvSdSʾ'/<v#6ɍxgOzs=;O> NmBzY''@UݸIƶ]G(P(jԋk3ۜT8VihBjF{WihBjF{Wic=2巶J>Z

IENDB``Dd
3
C.E:\vfp\@#5"@5"B#A#! Visual FoxPro16_files\kasem_files\chapter11_files\c1101.htmc1101.gif (2948 bytes)2`Dd
4
C.E:\vfp\@#5"@5"B#A#! Visual FoxPro16_files\kasem_files\chapter11_files\c1102.htmc1102.gif (3386 bytes)3{Dd

5
SA$.E:\vfp\@#5"@5"B#A#! Visual FoxPro16_files\kasem_files\chapter11_files\c1103.gifc1103.gif (6706 bytes)4b
b+WJ29IxOwnb+WJ29IxOPNG


IHDR4PLTE3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3f```̷ "$( *"-$0&2(5BF𠠤5bKGDHcmPPJCmp0712HsfIDATx^]ێ(H;Ү6k+Krt2	EUi=ϗ<~=5\+\qēxw+=J?<?^n@ݐn.?%nj/yp"[#:@w'nb#N^ըm|uCC	(5@Ql9u&47|t~Gܕ5ga$4::b`[hvp}'P7;C
Ks.ա
20Aєmw2\<-s_R74YόΪWKWW\⓾ŜpU3ؕb7?U!v~dԤ۩gz=~fpwҗADd9eLg|lb=Pb)2VveW8!I>~peq^_p%
WLj6}T
p2E.S4?
k(h̾4H8#unݭ"ծMYW."J]^v!H	'8LoPtP0yJ4
zC	I<\v.!F%;|@pς؊;6îsE.RFMDTv,f(QL]Ș=E VrH׫
ڨ(UwU]L_
e3µS?W|
B&^
f3l8w%^ܺ_]p)hhx;x&n<ݷ3Nj']>Py`(uke8dnyWA7ˌF[W$uڪ	<3[h60OJ«BS͂U%_QۗxGvWv.އ#ORs95٧(EDzru|V*
%ם9GD}YH|+-4|orsc2A_?!_p4_4v,/f	BNp]*s(&6!N] 'b"f)jԊͽ	,-d*}+M6=#fVn`vAvCX
.Ya	A=ٕo:EC;1+KQ-"F.]eaY\K
N̙+e0˴dVD@_`—%D w<# +.χ\.œi*♏w"Nibn4[T=>	HiF\&6pS
uڎ/큜X̱YlomTH3۸?	wCo"v?};@\ ϶ٮFQVnc!L[N-]+jv`Si~YL7lJp`AsUnmӲELyf6p'@g3.
xG%EDAt?
+7d.!g齪ԞAqC-KKf<n[d{[
_:E>pH[/Y$32b^1 mp7e1ƓVQ#eQ¤
sp
~f:]i.t&x"d]gn9
,iM٥=h3&7;np}ˬUy&1c
cZ3%l09\w.o6;v9!i*k)v"Ca?f4Yb&LLV'{\s.^kâo؍gu+aWV= v
O'ֆL=p-H>5m"-sіL37Qg(<zMeų77r`bݓCkE
ptnx%/B`5n1/!cpOw{E%5Jw:
cZ
3aK#Dx]	qceDRHKvCFpq`Ǝb`?x]n)g7#צ9Ʒ33E*!׈vvUs0qA|vnޣO
D4mgyX9xs^N(TU#ݿߋ"]kc޿{[{wU'2]
&YduZ[mV`8v-uvC?hZ
#bC.vO{:(%&akq<mkIT34
!%ه%rTYgtF6@SherɁ)JGa$6.ႚ]:Ņ2gߐx$ApEk
E/K=",s݌IdrPp$װw'fn|.*\UHH(59]"W.:KpU:~oD.@BTטRy65W#SBv_Xb'{ig{kdwč϶]hdp}o&7
3%#-|Ln	LnL.-
TݬE=;k{z^ەLkႫ%K7-kqB.[;a~?[{z<$Ζh=ɀ̓kvDFv,;XǾYhdpW[w!ܭ>e̅ww#).>njdcQ(wx׏?]GYZ9(ĭ=#Aeq/GPAa wxvH̲$o+.*EO(ZѰ\'Zv	]h8JAy3b0([._weQ>ʁqmɼik$l0DǻdѨwŻ>
J4zVCZFodQUZ=fYkbCdN#>wxF:3{q~w91.w@*͋yxҜ:C|[;c[A%#:wKpU񮚾@fh(Gvo6V~73D\nعq̼FKo$PFvcKTp'xwc><h4f|ڸQ?.4v4I]cŹ)v'8$ssp'\LN(Z&pw&t\k[bwx7
-yfٖ+۟gTg(wqw1amwŻO0S3`#xwi*͆A-1Ϸw31:w9p'wiR?vhPx15<(W8 EfZgoJeыe'bv'w]+Vtnio7g:|./P+ijҋ_&w6ԼK~w(\K2l3xP?6{ۇw5HwwXi@`c.pgw $Kx˰ģI, nS@sU1W[Si۱aЊe7[p Ma)ޕu"\p^rxWxc;c<a~ %GqÝ<mQV%J,VsݘׂdŻI"x͂?ja|QzX[odq#a.}34#L#\MXp\+oseEWFǻGlftytl+Aү:v5(}+y1`3|4uzBƻDr
.0Asp]Ep=n.خ継]h&3ygޤΕ.yfD$ʕ])`rijK<xXue~{
܋I8/V]Sݻǻ~H[."xJpRܕS`w6iB:{wMP;	5a{ZNPbwNkb$քi];An8w fijO{.h{wM$քi];Aŋ	H8	_Ƌ%DT+IENDB`1Dd(

6
SA%0E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image1.gifImage1.gif (3671 bytes)5b
J>xi?(E

En
J>xi?(E
PNG


IHDRXtqPLTE""")))UUUMMMBBB999|PP֭3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3f3f333f3333f3fff̙fff3f̙3f3f̙fffffffff!___www˲𠠤X"NbKGDHcmPPJCmp0712Hs
IDATx^
s([nrI an-]/l} }o'pwׇ>nz}V
{,?qK&y<BooO	9YL"@5%9uJYDB*6v#sje(G.[\ye{llSe(pC8Hѝ5]N-43ͫt''_8c[yU{\'zn{&P:afAZP3]#Ww``#XkDȭ+0ruFܺb#XkDȭ+0ruF֊7LD
bmZ`o_nxڸo}a='3$tzJ
MGOxx<T{p:m>E:AJq2Yo&]`*	6BĨ@aa_h-װO+̟|SɁ(ǯGJC1bȜ_rdLRlgUX8'a{Ki 5l\rh}dհ]\Px	%&P:K *!s`@ArMI5
':Yw)X&":8VDrXց2.V-ڑ[ejdB'>JݶqlX#,.ʠBj245N[
~M
64M6w^;ь9UaP`,"zhw.,Eu|0X'#l5**vV&6ݖ^G:'jxgTll(JGݔwWȪ3֨z޷]ڇ񉗦K-6)F/=ȆL7J<ccT=c_4)W$j6]K(Ü`[ غZP(6٥*А;]A:,Fp9K}XD4-sz \O4h%9sI\XJYd[gcOO$

|!R0SB7pt	Eǣ*:)V$d'H4D߮$kt^{mS={'\h5<h*=)e3npLtZ%ˣB[+n+Ve(Mrݽ&AO~XPBWP@r;!E)(!uQEuT`8vs2L`֊a%'rK:ʰynNVWYYd=5TXEեX(sֈ[W5"``u:X#Fn]ֈ[W5"`=$~c^o6^c|3`O]uvH1pX]T]5~'T{,.O?,Yvp'}h.]HjX\FElF)a:Y/[ȑ3O72q
tG]Iԓz#=,+B*ϸc7	ĖFWV`΋B\*z@3mCK4Gfcl(&O"9fi
0gq$ؘWqvC?@H؈Cą`"ulX|,
d\+vμb#cY+؃P`Q*(ba条@t93k9ޖ7Qj
_Ԋu3kbPjfKeVXC=e찎g	vnJs{,'`h"-Sؤe`9n(kkࢆy]VjR[;X59C;Km`ը/U3tsVjR[;X59C;Km`ը/U3tsVjR[;X59C;Km`ըE[`_jjܚ]~Rw!`%ʿ9qk]v×)vIlq_v _1mYX6:VV`G4l#b5ҙ1`ǟvC#ңS\FǞ1aQؾ`ñZA(v=(uR1bC/Ыr:8^Cg5Jupzv^eWXAwsŭ{HvFv'B^~!`4A@rIc)hÁ%`/o]NG/_.W׃UcrtDm?{
c9Pw^'\:Up4?GgT@?,paQ
5"t_=	nltf,h3f*,]i-eRp\F'\Ȥbc>]GGuYyJkT0ruFܺb#XkDȭ+0ruFܺb..C%TIENDB`Dd4e
7
SA&0E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image2.gifImage2.gif (5890 bytes)6bw=᜛lrvnjw=᜛lPNG


IHDRK
KtPLTE~}|{zxwvutsrqponmkjihgfedcba`_]\[ZYXWVUTSRPONMLKJIHGFECBA@?>=<;:987543210/.-,+*('&%$#"! 

	𠠤l!bKGDHcmPPJCmp0712HsIDATx^흋r*D]+uݪ\	n&q"poX(pii	00~PcQ/`(OcK0x0Bj7qo60n7Ӌ3wc<Vέ3K$"	Y'2]\mنIl?+2oWa+sca츏›t_Rޖ߲;
305,yTїj&DsOJtuleG`njguF`LKcR;0TtD#p\1HEM3Cg"5E
(j
P80))p`(R@QSPa\ۧv[ug,t3ݔ=vC
{KVU-wJX"pmoOc])wF	!v`" %?Nj[{E:0+(Y:@A&ܦns.0Mс6GwíK4}]>z^8#Hڦq!>bds"rJ&~CWS26Ž~F0қq;0|~a|uF2q)۷|ۼYɑ!wBP(W!T\`DNZotG2/E*pQ>Q:#$S8#Y<Jğ1L'NJRO_cbO+s(چKymƙ-lLm)`(`VQ?`0Z]0V+̨0b.
fV
3XjCEcŒ!ꢀZaFkuQX0Q]I
ŵ~_0nȋ8ԳX%@g`{Rg]s˦fS8CbpdK%\wĶ0*<0d068m<Bj\A
S=Z'7&-܇.`|mS9``^Ԇ☳yg_p`l4ހ3XQ.)qAa`vTogpglCwCkzfM[/7ZoxJ,~$	qp3CiEUa1LFi] ݲDvF_W4[l3TQ@W`Py0^WY.ҳ_F {܆'B
gTdOHORɟ`EMՄ[c15Ψb18܋{|JC$^TW<ʘ҄e0|A0]lV0!uDxrDޗ&J~	F >q"x!^<jPbF*ʰعK`=3*H0BY#]
ǀ.߉7Z9B/<T(#{dOXΞ۠F|.TWy8!0E1Q;>g)j*.'f/A/tgBݡ'e-aƤwk	TΚ
O\ae&'0Qc{WW
FBûc7S<㺹6ep3)9A1AYU,%'#ў&Ӷ}gp)ɥ<}Ue0w)#
	c3Nٚ`ZHA<3(i0٠0(a>ϩ7ʜgP``3:I-kk@$
ZyS24g8.'H8gq~Ktg0qybv[Ar`piaZ0*㕆73B*
C:oi)hcadg`4E!Uog<+ֺʬA8U߻E3P.>3mΠ 3HCWmBFyչV0giP`qBRt@BƷ_3MzSd.L*0>0ǿiS	!wFG_\[$3НgZ08+E {ŠinY3</ŵR53qЅ07]IdwdHеچ8	FGkptNN|Q¨Ƹ3$^R{STFߕ|橠g7OeV81tf
֠AQABO΋-D_s`T}C0Ξ9hד}π``\M?٠I0MQ.B̚:/8JgF?C28`S;8x3'=Ctmvm`#/azZ<L'3 =`FO#s0QkqYX,0zਵ,`,Sb]"\꓀M(5Q(D%ɥ#|uvW'LbDe9	ހ390F}3'1181oLM1ZCq8c3cfiHUBOjY8c\E5 L8I&3|%'I`30Ɛ|s7	G#M0&:R`7y[	tm'C"a%J``!Q
`D"a%DE"a%J``!Q
`D"a%J``!Q
`D`\4a?A"q҄AUJ*W)MBS7nKh}{︍LB0$-چCt36
,`,9j0V)+00V)+00V)+00V)+00V)+00V)+00V)+00V)+00V)+00V)+0ڤeW
cghYjg`(:B0))p`(R@QSPHEM3Cg"5E
(j
P80))p`(R@QSPHEM3Cg"5X3KAfii="~TS3PHEM3CgFSyclg͚;9c{olrku;cRؘc1/iusƔcXFo?<11.skWcygKOn3lbE/3Pk^k;.SVR.Z8Af0N>ڄDBqƉ p~TTMg[Xw,0uAH:[,V+}"_b#T`_7M}oWQ3?<Q 4oAj41X{lx3g8}p03jK7a;W[i!y">dys14.)W
S>g0eGr8#%pwl8rI;xnۜH?/6s`t9#-g*yagDcu!07%8@vC;n07EQ_f	x
sl(0ySe:cҍ-{oنcOo]a{*MlA1m0 }ZC8E
(j
P80))p`(R@QSPgLD5
LDU
tpOIENDB`PDd4e
8
SA'E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image3.gif7b~WeR2T۠~n~WeR2T۠PNG


IHDRK
KtPLTE~}|{zxwvutsrqponmkjihgfedcba`_]\[ZYXWVUTSRPONMLKJIHGFECBA@?>=<;:987543210/.-,+*('&%$#"! 

	𠠤l!bKGDHcmPPJCmp0712HseIDATx^흋rfRۮ:[cfcܑw'ts>~	0v~X*-vo;c|(&Xd!e0Na8Reu^zշoBBfڊqS
ق٣0

pԿFqg	u]52di<|Sxw4a1K,2^׺٥zm]<`\00J`$	Hgx-lQ_"z=s	TBJixpǺ:wA0xǎpj*b*bFU4TWa8]4bFjֶPSTB#^o;kp0Z)c)D
JYU,iYu3f	0uwrԝlPx'n[]GEGk]_j)`,db0Y`2BX)j)`,db0Y`2BX)aHo*c{݀`n`/7.	'??bYF0†R&L7ҤQ(L1Y.{U͜pf
m4`a|¿Ԩ婵,8o'|A
5Snn?I	$r13?FdhàƗx2 vl?,`4|ȏ`bId(L0!D`ɰDhZuT+ފrֳL2i@a6 AwA[H"<kг
7̤QY`HÈ{
I6)A!NQȹΉAw	Z>Gj1ƓT	ua.2r<ݞJS6CL%jjӾ
vk`4ǓZj5ʘkV]mCgKr-#:Wf/i]Y@[\J.{a|ՖNH>eȞ#h'a3;Ņq%7)#]$v˗<{}Z2BaT_KR]X `|5,b~\p*|Kקj\1uAiz	/"*psS67@T1@I'!tQ67,ZEZŘ2NmlC4e6{_ĔqB-NC2֨ÔTglWC4	
a0t09m<IuJBsk00ڈ|}ą
rfFKmi 7*n(cv)/!q3P=06Bm2a0Ľ\Gno%Ն)CC;ȕ(\Meן?Bmʠzԯ6sǤi+?(ǎc׼qyv?iɗIaҥ.J&-)xLUƌPut\MO׫<q&-Ŧc#m~3="Ing;^Q,
7R3*{XVwvt59Jfsa݂)P'O$m6DK?=8Viub(QbFF7umk
MJeplmYUi[,%
/-32,A0HuA1.['ʠnO:fCc3KҊQ
#^]E!߁61PFU`L89
#;Pkqw7(as#2&ңG	&)ħ\`E84M
2:n*\K
[*1SF+i%E"nWѭQkS<@$p<J#Q;:Zs}`9%1+MJ>ʪ,9k6ZCja|$҈/e2!K)n*¡-33N%~h!tC%jiƞZ%
;.k!]C͟_QB0>=䂞isC}ɒ,)XmJm3gσq!hprQZ̭-u[k+{)6Y'<YM7¨\HFAq:肇*fGs%-p;aUIEEI1ĝz:mFN<
2lw#uRoTI!Suz"nTz6Z28]v5Zc2'MHN/QI-q$jd-d0]$?Tж|Np1xZ
SWgI9C	kr5K_p&fD[)j;Hqި	Q2e
p:0~h*ZSцM	vK`1ʔ1qj:B2w*#+ii^zr3ܿx`8oi;48|;.0:`4Ɛ6
e#of[jpIˆknz'(߿^(U61azNg!|r\2 חlY\r]8hEmn֓`ВJ>3`@#75L~J˳;6Uiezj."m|}RSmnQaȣFo8єQ![*sSC9`dk!qJL;%FkQH!B?vM /c?^/MrCnS@m8	p7?RbMqdm]Io`5ڞڂm*a
mߔ`TTHa
yeArQTfߕ|UpUhEFME0
	r0^
C	T(wua0QՅ8虃s.01i	N7iS0>00󕡀ŽtY1n_qզnjESt+;ݒ϶gOG:?
f=p-gUeՅ@*MNGȟ<fb[6!&tR|LJ8aC3"jXMW9G1F~cwQ.*6$	+PcO+\GriORֶO>J6=bTI/vM_
O`,`I\?}@Re,*RT< {˗55iH
y-ӆ%3|0P3C3!p)af2	PgMaJnJ6<%J}DuG)8)=>%?1jѨEeh`(y-mҡRUr!^S"%rͣ8Be'kcq[8d 6#x "0NSyQԩ%t7nWUhHt|˹yapP,O7u~Z_%I:
}d#5׏c$dN=9GsGX
~zS*Yvt$V-9*;C,
Mg!FK~2NkCŬi+_c
\0etywxWʾPcFuic~sҳ;MNtJp\0g3LkP)c2Y]=!a7fap1JÔq0,2Sh_dD,fhcRģnh0cvPaa1`8T|5LfOЎpsS^-Ac<ܔMí
wM͛g˨QK艛2U[=&f>_BOS'Fs$+`\lw1i3yь;1Z#zøes ㊘e"|m{1@zq2t,]Su9Dw榆U,및ȥ
v_#4a̲2eP!l>'Y*Kc<cip.C;2
شv&k0&ZRXiR1ВjJITc0$V`L2!Ҥ4c%&1-`H4)dhI5CbIi$CK1+MJc0&ZRXiR1ВjJITc0$V`L2:1U!iPrD6Ԫ0$-x6Uh0Ԧ`D6cM%g4m.`M7>oSuCm
xK4jӍh0T]Pn|F1ަ
t36Uh0Ԧ`D6cM%g4m.`M7>oSuCm
xK4jӍh0T]Pn|*bEX²
c}/V8M6
t36Uh0Ԧ`D6cM%g4m.q5xvtkJ~uר~ﱾφ1e0^(Xʭ?(f7ƈ.q_ctM2Ftep7*ik*ç-QFe2j}}ZM3<4Qd	D
oqS!G\_FPhl5hCTN3+ڈ>>=Tzkw&Q= k3Lh";qAS^⋤wrk<_`l0Z~J#6JC`ƌ;cF\HU1KapM?FA0f!ݯ|齺c(x%󥣌FlmJl3pmORMItVmqT^gfl~Δ1]`QE~f6$jd4_Gp䟏Na,iroegdX|r4²VFVSF_?,X0Y`2BX)j)`,dbXưuH+BZQ-dFIENDB`Dd4e
9
SA(E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image4.gif8b+J'N֕4YanY+J'N֕4YPNG


IHDRK
KtPLTE~}|{zxwvutsrqponmkjihgfedcba`_]\[ZYXWVUTSRPONMLKJIHGFECBA@?>=<;:987543210/.-,+*('&%$#"! 

	𠠤l!bKGDHcmPPJCmp0712HsIDATx^흁r(3m}Lπ€-08}l/,x<f	20~qLacqU|<1	WÒz>͟aՔset{)aM130\hEYUWř30F֖08X"%c	?VI}pF~$wng{+rZlpkRaV	{8ܛ:F	{_bc"
Ace40HS]eȋ׋!hea{-Q3CnH$L?"!@7x\G`7kJ9AҘ@;ݨvښ5}536xJ@nJ4f!$
Yۉp)	Ot
`LdeD+P`LdeD+P`LdeD+P`LdeD+P0Hק?vU?]s_+X$0CV^z*y_KpGQxVFo\EV0W[FaA"vYw,%޽ȷ]yoHXetj~@
vS[[0YϽG7B5'-Gغ\}ԪC4A.̤AA)O8zJgUt
@oC
]|5pnܒA|XdZo£?ݻx#^'-wSWO
7k>V#0N3b}(+l{zӍ6ꄀ1ʲ
#`/sTy/Gg]Qʶ2xUO;vGFk\\.0|I̦C*6^lO
Ҥ	\hX婎λ-١`ԓWXN/d#|;y]s+CfiYdYC5p(c2W!\;]u™(TM
uS93!2*+^FR(Ür~r[@Qa
hU;?w,lQѨb10d	%NeƒyCjN*]haB䘑:E˓0im &fHcv*'`guE
RYe'5|
F	v؎STw|͗(}a(J<ø1=_;3o|~})(etAذ4`9
&7{c~\0p)P	cLUFF|K6+GlzZԗ5Ⱥ~6.z].݆a
hAnjwͱxqhc^Z$3e<G(#e
DI͍tM;MO.;#0~{Bh#P΍gҹ,=Ni$62'<ΞfZey7G+	3'ţ[XPgQ{7(CXIL-k
sm`ًPJApk@ZKPF9M(ö>SߎpSnJ)g~7H
K]ntzex\LmH]Ux+qHpoDD4|V740^͜a~=>&1ςal--8t^1$wҶmDצ{Y2e,#)(	«SKL.! ȭk
䮨<$Y
{||J%@nʧN^@"l~[ÍyvnjqB(%lQKDcp*Uk2؞U%aG
p[$L㆙Lk#Rm	K; b;sW3’ÂxXpI!OrVOKj+L8|	&ΊO[$[=[$ldH)a5ueߖH!z dK\/9nW"'6r`+M9'aߧCc02[޳tl3m|N,6tY2ZP=PBZe6do[ %]q2'A
DN
0up x;9Bƾ27꫼??CMʣc`p{uȾ2rDS9)M)t%\9@0*&Gs蕡ЅqP>%!9ql4rIm`w﹩d)u7TwC*":~N*m<#`-Ez5z첛7WQ
Ta>j$0Xgp[FSjnͩ8WaؕF'LU.$N0fP2XgZӹ0J*1k#3سЉ0w['emx<D24Co%`6<{5Č=g?JrDF#vy-)BJ߉Ǎ.b!`W>(2:4s5b_۽8vH`tD,k{GG)`dP`X'-1rɋ8lٛũmTp٢Y]d`-
nCl*qGV{;dRH: 10(|Jާ:F!^p	e|TZ}mJ=줯-?{JϺ׷\MsڥyNBn*g7ۼrNK0E1	]u&܀@`dQnTilEx֌L9`a(6*&
g,2cU+ymU.!w}n^B{1a&>}U'%n*>&EÛ/ly9[VO]:"*\4`$
g?GQPp7kljx+zPdM	Cl|zܦzbb';=#^\:"(¸J^M	e@F hϴFޛMnm
-.)sf=`_8ȡ;!v!!\~`/MF7Ke4u=iiڻ20tyM˽2I0&10
W7!'r;y2<bÍ;="S<Iy{W|oCvgc3š+W&SO:MMk5Tk<}Wa\QM
=)Wi#܅KkDw(W{_eL
ç(W!~ceֆBd_2؋17U90XgiþМugvKXP)ct{8Pswa.C(CY0&Am@fwO^y{뀣^0*rP:`<A[̾TPF/eqAmحf
(/2Y_ъ0Z-7^r7CVnA80Xs]l#u9dؖf[``biEP"-00D0Yhڠ:1Ȱ-Ͷ<Ҋ:0YEZ``1`2lK-00h`(tV8ҊHg,8`(tV8ҊHg,8OEQjU06V
/cϼZhFթtWTXVص(` ,TFUQmh06
`lC`QUce,.`4mTeنvh(6
FU0FY]h0ڨ*1ʲ
FFUQmh06
`lC`QU0voyv0{mT70Fn[0&B0&D]2c"L(0&D]2c"L(0&D]2c"L(0&D]2c"L(0&D]2c"L(0&D]2c"L(0&D]2c"L(cv_QOzY/s4D fL0c"L(0&D]2c"L(07ǮiEEw;v01l]s<#`d6XZ`t
.`6#I{?<c</׶ZC(0
(	QrD%eUKLDGs|ۆ~jiooŌo}jT0H4ؑ{o0K<jBK{M'}l'pp?)[kz>U*ci632BKFSl(4aV`ջܔvUMڨSFD@(8
ej]/^R;Wƌ#vScFb8`c-.lb[4_QϼS^4#
F>nxɒ
3pZS)6uZUQT7R7
~:TŌzHI
8lD3:=آMd!:`Yu5gKFmp&1(4w83`LdeD+P`LdeL[
@,$:lg1&@IENDB`Dd4e
:
SA)0E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image5.gifImage5.gif (9215 bytes)9b=kY3,%߃nkY3,%߃PNG


IHDRK
KtPLTE~}|{zxwvutsrqponmkjihgfedcba`_]\[ZYXWVUTSRPONMLKJIHGFECBA@?>=<;:987543210/.-,+*('&%$#"! 

	𠠤l!bKGDHcmPPJCmp0712HsIDATx^]rIMojoUA$aƎ;IH 0c^Ujbx;2X ˎ62``d\E"___F"d5P3Yyݥy鴺ߤp	FTrDmoiKS9GzqgJ(L2z9i2`@20q):'@sS41*tfwg 
|
YRk{uÛ}pڰk4NT_#3?2пw%9Od
pLIO+Cyհ
v͌O{uzSwprRR3%:Joqx;={L'da-pV׏
C:D`YHV	_
FB,TSUŔad,BU1e!PULFB,TSUŔad,BU1e!PULo6ǯ@ƿ+##Rub2wAfU;oUvUT%^Y<21|>Ggt^ZV&ÃA%d,&>C߷eA܂ $&	<e$넌+#~ē^*Kem$ k Q$!1@3:*S3|c[Tbt8}@kq$0961^
Ƌeɂ҄
e*Zcߌ&22@X	m'#RhcH{5"]\@JPdDO0:Bt܋YOM\gٹgJ
K@,CKzml,NF!i{>w;A
8pg2p^5yX.8nCFmHcNnCelP027A,Mq!n''TC?p}5`GPYR#0i,YxRGe-5BYd?8,W5x'2x(T&
6B2F4h/ad'SG9Up&H#C)mL9!TqH++on(z*,0Fpdћ8\,"^xZPnց#ILprDP,3)@jt|ExGef߁N12BK+c)Xdetm= Oy}	aqPJ}Q+yC?9BQr2ԘD980='Uc2h)IЊitF5;un
c98!
<BB<[m"Zʜ4Lāǿ0%4u
tOp@d%+UGo@Q[f#!+ה2BЗӅp\MbFMl"#GȐAI	sS #	*	,g3- oo6>H:"![(ATjdȘPud*覽Ls*#Vi/p2D!#__3rܾQG>{Z)awL}Ո(W:pzBkEDL4RBAG?6i>13)m$O>pg22I2661g]>E=d8][n{y~jÔ]='*;R\cve~mW6)zc
;c##/s&c2}̠/|t,aF8(
$? ~AGXn*A]Uj4GhWy:|6+lW-])
BB99GkXJ_yN|F-pM9e?I2D7ˆRul6@D@DŽu<p#\7鎯&!eȐF}3e2Hw	p*"ES~OF)SF9c&I,{6929r;ʐ'x[f0AA?F~m;p4Odu$WzQ@hU2xb	Kq,/ԵGρ͞8@z12j뤍r%)tQ2(zɨdzR^n09Mҽ[wF5hpF	lQj @cG~0e4Dm.&#3h<<ܜUMm24!5*2S%q,|r]mEߛ昚ԭ2#C >DY
se\j1ƀJdȖnwEaG>8J&j'ÅKARہ302	HfߌRXH?> Tդm6jKB{["k))X%+"G[dh8(KZ!Ѳ7A<|%Щ2⫡JWd+A(a>3*#.dŠD2t/ Q'#X2kOLeDf0ktulYd@
3ƔAd쯵
!<cȆpr(AhB*݆Pmw>
q|dGM]fommʐdl;vfܧ'uu2œ_!+у@!2t/edtQF)PF߿?piÔ
j齉[ڐ}tRІ)I0&w^`l^ڔFbƻFF_jÔѠhڮr^'Bц)Ya('>AFF^6->NF.#c*KPU7Lc02>%Un2X__3k';CedR6
Sd#v?2*?#d^>22VJo!?cWҠ_'񙓟3ڴҙId"Zz|zE&HolǯUVYSsDk!V"_1Gpv)!#,^1ZfoGbd\g|-ʹdWYKc"*cFKdz,ds3z-5UAkv^#p=oyR(g.OT3 XlYLnKN+ɗ&c[|sV2fk1d٬IJx2-sWʐ 'tmbo*LePVo[Lm4SdxAe)کL_$2BWkdadٚ-G!>܎zFt[ȀwtuK(2<vjz}
wEBFNh!(7
dd02\*1F(}.k8DFmAYFdtad|]4qW~7dF2J]{OU7#cU?N&cGMxq812Je”qnojv/߰|TE:4]kҿ㌙ 	j-)KQ\|_ÆҪ4c`@tdߠ`ۛ)tLCT!	^20@.	+|ۓ)Sph#oiz HűsfR"j`epwƮS8Wܷ0S*MShsa!rc.R4F!v.J*\g+C︙fՑ<32 {&}mh$չfmFB12b@B8Nʝ1
3o9f(7VhdF(7d̍6>mQYΜϸ-ʍ83Ctd}dPV3nrcōFH60e4mM)#z&*c}0eSgȰ;{L}He{Nd$w!䔭3ġ2>`V:&},:TͿ΍^>׿ڽLTiYan;m5qG.wYZݺb0lha=NѺ!L3S'!}Fz;ޔ
[w*xW?m
FZwVZvH[szYBǩX;4ozA7>J;K>XZI
bDc2AJ.fEʵL%,<71ۤȀ@>ة`8/aO0F?npyaIoky2eCU!|(cnX2*U
Y-hO)nbdtJ2Ng(q{dc+7k2z8C6H]#PU*~2g\Ѹw(4f<<aC/
C[	b#cCq{D]HlK>g2%{3O|dЎvaK5:^|H:nH`Noqvm>?5}Vy (wnq%`JzB:O;0U9J,;)2+O#6nȳî^.k~Ix8cCF851C! fg_31JO7u0v٫ColAţȨŤp!%VFȈt">6ԸFc j?v`[dVZd>//*a2x'+:&a6 qlp*{S1:f1B20'|PˀilHYT\
I_Co
@qLX~+
+$3}Cͽ#S2ԷH2"
VE+P䔠&t~(|2}_7'I;L2xrcIO-׊٢XoIJ$S$j&^-3`jl%mcHsE."c6Ʀ:pJp2p2Ʀ:pJHgSס¨Y{2^(H4@Л1}F_631qTVplY'@pC0&>1V
qhSqlT&UKD٤nGR=S=Q[E%!CȨDmsf9
E9טsg2?aHe4X5<Qk"])y)La])ЙןΨ-3z4ú8/ܑ
<s(.ޑ7|?@FYH0.c"C9|t`-T&5#GZXd}d>dԘ!K܄,#Ev:1ǔ1DF
ˮ!]Q@}bAA
3^8GFCԖ̑_mO])#PDP{	35z-tҟOڞفesdTܡ"P2Rg2؊DmC"brTg2e-v'QػT
ˮ?!fjF,P1'=\T5@ϟPc/\k7[u8+^?̃/07M]5}&FͯgtQgd!PULFB,TSUŔad,BU1e!PULFB,TSU%F%&ylkY2>6h24Z~*62X*#c!)X2GM`K9ǜ"R޲T(|=2&ydl%)2Uʘ2ed%>3c|]-edBM0e0LH+2|.դL*}ցOFz{c}z6Q8wMF*"EJZQڳ!2`73/92(Gȍ]<U
JfFx7N2~|zd?syשP_<U>DžL1BD.(,sv+CջQfJ]٪Q}p1𒌂PF랢4;}F C>#5MZ%) 37
=s%#X36JT:g=k#Т,a_rFcTK1if
>Vq7Q %~Z,0Y+5Vw7mʘ%c=;2U0QӼNGPs98$畻<s(i))0Ω1)S`S1)S`S1)S`S1)S`S1)S`S#cZ
: twm[,IENDB`Dd4e
;
SA*E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image6.gif:b^q'5$;$xjFn^q'5$;$xjPNG


IHDRK
KtPLTE~}|{zxwvutsrqponmkjihgfedcba`_]\[ZYXWVUTSRPONMLKJIHGFECBA@?>=<;:987543210/.-,+*('&%$#"! 

	𠠤l!bKGDHcmPPJCmp0712HsIDATx^흋r(E]U;UYAHMr˹ڝ<l@n@RECKOЏMM߀`E"'`(`(n׶5ŷFv(^Z;hvX_|Tp1FUR08d3
ޟihؐ5F8FXkwjg:,W063FZ'	~|ʟnܱsFڈq-';
'bQs;Yo<a$ל&ඔWh1/=O(8QM;#4rL+X.%w<4G9cg?"ĸ`ƅx>Y,hμ.B-?Odj	<	Nf3ql2oh1o=-S%,Z1AYM
kScf醅B`v
;*.:PHE]3Cg"uE
(
P80)+p`(R@QW0H?v[u;_twlQ{(x;֞1_z}qGN,w*(wDVIzAH3i>VKვZ	F)ݣr/+^qwB!Ly{abm”=|)#د~yN%|Plf#z=B}p{H߻̝w%+1q'"GbN_ۥ
,Ǟ1jR0x&jJMҨ>F0ћptӸ)]N'lu<A
RyXIv%y
\w栓U9#b)л^4	)+r,SI>H&GwHei1Ѹ8RjeR/O&g3!f3QCsn[	0
1_'*E!xfgHaLT
0™.y	!ۭ&sdESl?SmkD@2	iLRmx'Nd]]Ս~Et"쌝UÈqm5[=ڭ-YWBvCy(,%_*duȟm.I
5kK~0ˆ	]}0BJ!CA?H_kݦb0wzYFTzٴpMc~֧ wE:q\
Kaէ`_I_Y,EȾQ-Ge>Bk0tO0j;Nqྲྀ_7`z^`Mf^3тawHAGۦb6]8Cb !RI;C<m
2/6>H5A`
S o0\aV0D0(jC{{<=gx_h0gt90g`3
8mgu vg&߼bz`;0:qYQ3~b+q>k>JVk`(:_M׫,{WuW<F0*9@d0\* ٶE/nolw런D`d+RRlͮ,aUEccF?R
73o96ܯ?'6(je]=Ai!q@"'vE
ï	'f(n?0/V6ѭM&P<=9F++OKMqaI Pϥ](>;w+34̵,ʷ"ƬcM;F{0MC~w	8c	+부1f~g|\B8R_zؑݰ6k3N20KKq:hr +]㺏yϞv<s[>yy0y`TdY/|2tZ0<0y*`/('ÈJLoC%2鸱`X3| g o_m3]z6NRҜsCgi|{ȇpHW
Jug
+<c&oͧvXlq,b}ݒ)Bz/|zh,߿Wqa2oNb켅8*L8AAϟvhʏwRw!wFʥc-S_!
_\g\	<s%JEoun0n&o_we0(kwS;E`|Lr@L+}tYN\h}`w,(u])9;
1t\}^0?ʹTrꌞeY9֢H\%pnHrԗc	x#}wj8
0Z-/{X -WG93qЅ oSIhKدm/AǮ*vcw#c<FVޥLc_0jk12c)*u>WAuD?LѢZb].'`<40*(CX+*H2}Q`8}/00:|h0m3ʎeVf]N[\4%3t`
XpdL%cFCےZDVYa='(ڮFG;=YǤoBtC:rrg?P-_\rCKo0:¤o	xS=j-.i0zZ\0bX]pꋀCX(P(%t7zuN>a&}>䢒1
8c3CdDgl47yE0'7yUgt`ychc
53f90\ajOsF\2zU+gr`
(ja0lBΐ80jԓh7	ga!V8H)"*`,U$`H[POC HEJr"a%DEucf%00(ͨ*"y":HXIgHfHWf0"]U0R`tUJi~!UE*h2Lb!mIc$Cڢ:=0D{G%<`ebY)h*e@UUcvC ڪ*JYA!mUX]
`RV.`D[U0V)+h0VUU
h*e@UUcvC ڪ*u'P.{{Qޤ*eb5|Vu
cPHE]3Cg"uE
(
P80)+p`(R@QWPHE]3Cg"uE
(
P8C;GTY
TN]˜=LIsa(r
r"܀P80)+p`(R@QWh*0oT59cڱx=VZ
cR005X*`pU-vR		"ْJS
~OB#ggj}[0lVz99ҳnA
cg%6.v\,h<V+aՈ]kaD懳	}A\-zAVc'kl0	<ȝ8k	Xg.FhLuXv0cDp/yZo0aaj8g1bKzro1l8rQɏQ$pA6\ ZQpna+c
b=FZZ'6u:}GSgkV֘x:Ol:c֓A35X*@ۭ:n[cb*S]kS-hsƍ:`k8&xC1c
ƸZiR7Nk0I9`k8&xCƴuH44UH45:g!IENDB`*Dd<"
<
SA+0E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image7.gifImage7.gif (3024 bytes);b	9lӬ1ַ	Cn	9lӬ1ַPNG


IHDRPLTEUUUfff3fff3ffffffff___ff333fff3ffMMMff3f3ff3ffff3f3fPPf̙ff̙BBBf̙fffff3f3f33̙3ffff3̙333f33f̙fff3fffffffffff3fff33333f33333f33f3wwwf3333̙f3ff̙f3333f33ff3f3ƙfff3f|f333333ff3f3f33f33f333f3f3f33333)))̙f33f̙̙ffffff3333333333̙̙ffffffff33̙33333"""ץ!̙333399933333333𠠤7bKGDHcmPPJCmp0712HsIDATx^ے E`UoS5/4(l3f4

&>X{B^
2eB‏9!Dj%n+i <Nn=1_O"&%8𢠟
Ǻ}q!6T^
Ґ'P	>A`
^	A	dK1t&9sC˔	V9a1
EA	%pp'@4[@8 pMr"O<Ut[Y>Eg
wL1ӕ~p:ۭEud%IM$+bCRsp/S-!6v!E
4ͽd7޼#3Y
9sl!l$hʍ>a8DG+(2`LѴ#ă"G5!%Ϸ
!g1st>޼B5Vo%@	8(u8k2W%ҫݶ)oG&P	@X
J~cYJJ|$%%R	t[c(I }!*%},~ցN`?(ꕰgCI	
I[M2:0͗z&
E%FDpx?#FG#*!?f@#;P!Qj @	t;;$g|R	sN$$  ԏAO"(+\u`A8+:C	{;hv$,TH=ZCo7KtN"*;='
%@	U	I]u{= ML-d)zB¤]DEc4E/C%2Iu^,>:anhJ<䋔8Fa"iJ<FU}BGFVP!(_+A!j§xx!	2q8&-R#VQh:k) #rdCVE)BhW	@!'X_)ev[K<ʕ%rE&]޿~"J'!P>apR/_ו	Tp_	JJ#>Jlgו
c,o w~u!+Shw;Z3zSx<`O'	Ic1awZ|5ntw[az:3Xzz4b,7B8]Pf)? L(4@\	V1ܑ{ӊM$iw;DF{BSBݏ!o\&ޅUX[
ut҇'|m}-[|fr~:T_*7	RB/ia?"}cEPqDxB˞Pq2 {w3՘;;s&
_FCvmg5x#@W;)PZfV("<<$dcDeዕIENDB`RDd(
=
SA,E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image8.gif<bD-nT}m nD-nT}PNG


IHDRX[BPLTEfUUUff3f33fffwwwf3fff33fff3f3ff3̙3___ffff33ffff33̙ff3ff33ff3fff̙ffffff333333ff333f333f33f33fffffff̙ffff3f333̙3ffff3̙ff̙f333333333333f̙3f3ff3f3f33f3f3f3ff33ffff̙ffffBBBfff333333|fff3fMMM3333̙̙f3̙ffffffff3333333333̙3f3ffff̲fff3!3333"""33fי̙)))33PP̙9993̙3333333𠠤7[y>bKGDHcmPPJCmp0712HsgIDATx^흋v2+kw߭]Zn !AinXvzj(Ր*%)5nGVgrIjy|ZW|H}t\xn;PL},rkUnC.WBat
/{D/M@djbeo-oXpKG%@(>m$Aߧ^fyEnx}܀$#D7	7GjGpx=r	0hyƋe-$݉
&zJBk1
5}z>[zz*7D7#AV`9n<Pn+Ni|4vssvy>r.f5>G=mͫA-mUzm/YPnmMj՛r[kZV)5=fUomMjKp>gWOSMI=M'WM9PnRa mrzl{6i+cs+98H[ܤ^AڊIms4KW<$IqtˍwOqG%eGJZ6Y2Tnv`YX0^~?kI	Xb@x91I8v|F%-ꎃ-+_"RL+/PD3F|{ĈZ6+ЩJvA@K!Sg&Pa=`K,$5&2[?>$fR/Ќ2JÕn!z}vn
8b@Z(zMHJɴvy#nߖ[6 Q\#typĽ`,f4$-_Ћ_RI|#C٥}퇦;K}TMZ^F5iܒͧ}fjd];ݭ39^&qK:lNEOJqP%y6AS83QB.SiJӸ%W6y/nTczSn
=Voewgqr7b~񶟦ӹdgYp2ʇ9t0og@q"LܷEٶ;c0y,H-_U0J^stcOZ-g<|
|6-@탹pzK'q>ϖ~J^$E
}ZdD\o(y<ἩuSt`^|Zf>yUnt7>S{:7/%h\,!pzЋ8|S^ܠ+acWW!)yI"07
7T-in XވpAi;_RPlaʪ8ƺMη72'¶lہY"ۯy\c#)7~*I<ǥ m0ql۶wQN@3Eo$9].ߤ7|դ+QƐ^, FIҽUnDAx0׻\U&:yp#4gooiv&EZ&Ppəz>.f?vWn	,o~;)ڊߦ;[o3ɯ_MzqKp.x1n8Qn9sێ69GѩhxZ췷oIrC\dPnNtنg^RnwqPR.Ppp"Zx
qA8i.NLsdz]\pۏWL`6m-9{nn 8."N}7M'pby8M_;-,;HmloPuC'c^oURR{HwB_
Wl778-fo BYGZV1n3x&q7ҍo1nχ|51f] )cnnmKgvzf6OaHÞ7pxbNOÁnUOi3{DQUf&Wjr+MU?!Qz祒Wd4{L=R"n( K$	'k0*1[ng$WY9pۖp=cTyDoY-[m?NbMٹx+JŮR.qc,0?KM:%öɭ7n',Z'|pZ5!$ܜzCaˡuupwt]
[]sOoMqls%CqAtJ*Ap{<:͹zkv%96˵΢m%"YX	.ҿs8ocv
{ԥAe܌ޭ@NuRi0YL(ðs8^n@:-܌hRǪQd'`&`c!p0@b	=h~vXř>*(iڶ*l
 Y~'LVINl
ۈ~̏d 	[%tJ3Zwr',%lRb'10EJ^j}a=,9(&+T{YJ,|^;fGn
IdwÕ2:l!;v*h$Gz;&-`Q37Už pv
Y_$|؂kQin7#ϓJ)>q:ػ|}̲'R:гA37OPHȜ]Au/֧o(,&+Q
8['mVrsO'uJ;.Rc7-#6Ǎ&)Um_Tp/hTVpn
%^bH7tm3~7<p@ЕczنCj1	
"9DwGo>`e
fd! (21~=hd
ǂ3*udH=̘ts8C-/	[dö +%;Xɱ}p'"
bɮa]v)5*}CJ5ձ퀳j#\\u1gvl`nc]\!.yԐKwJz}*`r#ٌ[;_yI޳xl_*R33<2Q7)]n;ؾ엥8yat|=xkؾ(N&%T㶇܏ܰZZU)1l-;vD!w7(Gp˰,T>-H8lrl/KveILWƁdܚlm1m	7>6íHI+Iac@-NH:	7f 7)تL2z/fvyMʤǾƍ	@r#IgUo=MVe֟sf1ꄉr;
i%ovo0{c	7rc7V3b+8u[f'o-nBa$$"鍻nx37M,ڒ[1VF֟̌W3^GI[tfp	ތjFgF0@ܝKtݎX7F_(Ԭ€͏rk3=\7?;F_[,%}p#
֞Bݎ
n4}ziFYGNW"L^嘨7'q{OX"=;Rvsl6y:%g
 M}pFŹqWȌq"2n3ON)Wޑ /l`>sYZ[1_)ܰ"Ddo2vd@o:k7׿qWɍM3I:,7^@WBd	J	N=[>Ɍ`Xz>`#z[vFuō,7Fnb-glUnb@Lܸs	!آMsLGM=[RAr
4Vx~[9aXeǹ6tq0)
Bt1حM-,TqcBvd7) 8 0&)aحK&"Uvoh*b
_νi&E]VLAj:f+%Rlnnfgy7)8䶙}Ko:Bc78Gޚ (798fܝa4|>.(79q.n.idUBoRpLܚʯj^"3>,ZbޤD8ItI#W7I9Hyn1,ڤK;5NJdi@R=l4NJ6MA?ܷr8hmwW&8՛_fagkE]*7)	}
-{ꯉd[m[OIQyjUwPM]pF7&u){f~Qm+L}	zBq3Qط~s<&Rn-:YR*07$fgn,r;kĥ%.u.+#:totg&m7;Pue[*7)n>;ukZj緸^pn`hq7kuTqo|rg%Lջ߲Np^^ގƁۿAv6ܤ@:w1GosAjǍu>p'-D\$ϕH$+j5oThE}nmpz\
pm07ovI{"rR/H<ܤ7d#վ_iunzsܾޅb>(5NJѝffo*SJynYr>
Nց*1;?ŸQnR*mTomRn.=Mi?Ip&`73;!8Dnn|kDJln5r	|n\Rj/w@2Unq$f'"RrSnRizSnIգzzl{6i+cs+98H[ܤ^A
&mV(7WnspBI=6rM9PnRa mrzl{6i+cs+98H[ܤ^A
&mV(7WnspBI=6rM9PnRa mrzl{6i+cs+98H[ܤ^A
&mV(7Wnsp"v{C췷ϸ?Vqr[TNV)5=fUomMj՛r[kZV)5=fUomMj՛r[kZs]1MI{[{8xVքܔۚXժ7嶦lM5[zSnkz`VޔۚXժ7[>/qj+m|m۩F%[͗[˕|}(܆a)z)|XeaF,{o28{P䓕jowO?_V\H5(vpk\o
>zsV:8n,^n|y_nɽ!\I,KcQnkbuE"N_Q|7X 7ՅJz߁[pћFwJ
'N
m$Us
X(Ebbw[P-8yJ+C{pqA{1q8lv'ɛ%|;vWjgE:GoBDʼ|=7Λy>ϡK#Wod0}/ȚRJ?x
Ϡ>r
MJ((۠>r
MJ((۠>u6=7ҏB-IENDB`Dd|d
>
SA-E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image9.gif=bI7	FA2uo=nI7	FA2uoPNG


IHDR\a>PLTEfUUUff3f33fffwwwf3fff33fff3f3ff3̙3___ffff33ffff33̙ff3ff33ff3fff̙ffffff333333ff333f333f33f33fffffff̙ffff3f333̙3ffff3̙ff̙f333333333333f̙3f3ff3f3f33f3f3f3ff33ffff̙ffffBBBfff333333|fff3fMMM3333̙̙f3̙ffffffff3333333333̙3f3ffff̲fff3!3333"""33fי̙)))33PP̙9993̙3333333𠠤7[y>bKGDHcmPPJCmp0712HsIDATx^흋r*E=[wڙ\@c؉EϜq tfx	q6%Ѐ6w􁗞C\XSv$?y9ߎ|[Ƚa[RawJξLLucVq$n__WWCO@<y8M'?=֤ğ5u'6 nPbv*+mA6#)<@8zJ
1\rH]XJ|ARcA1 FbHڑ+;UcUS?		uBtX@~~i&z09mdžĊߒg|'A)xD+NMSQDgNM4iTENdNN%Dysb2ṱz <DjR>цwN~ñI
j:U˱&̫IF*J_-DGmgkHx;2<煲=c8ut:mǢ?;V퉍}VKܑ}lnfe%Ay'bD(|- f%z}~,MN4Ѹ	p-h%㓖%^Xo/ĠuQb)D,k厃^jYќR%pw=W#)(֒]H=gLS=2&4vC[-~H:ͲO*Lֺ%Y#d[O[9w\Q4D=4v2Ķ%d	Zi@)9؈E9aDfኵx^h86]-ؠ>\A SǓ><N$~nUb?GszѢeuX@]t 桌d8PJ}׌vssm)+։KvRéb/ʡčOʺ9A<2 nlX_Rtue_H%%eyÜn|jTktwÒߞ" n'!I
@sߤ\0R˯	:3 DA"J P{φ9=Db 
bkz~EM83*U'^\)|&s5=+e⯣jbLIKJ(5u2'@|Da5eieuJ! ;xM@	ԫ0TQ_:rt5`^Qu_dr>U녣N??R_TV~O}vF
sJzӎ?ooO?@N'B ̤wB[JObfK_ږNfR" Ū=F$n[}iߣ&aNdf	o~jMȡ(pM_ߩ_wKi*)
1^N'1' ,+e1庩(5ۏN,B="
rA;t$|[Yqj,*keku5خ)@5W@p?>{V*\WMHz#Eku	_wK77̲Hē퇷q3C/VI
q!n/.MOˎ/' 6LznuD:EѱVNx__<[צƔ-S_?zC[!بg;*+{J+yP~.M%!fT7-Veg%6[q^6ۀ/Քu"CSS?̀Z&X02 Id:QlEǐ]0IC"Uǡ6qvα֜E, b1 ʗqMqΧJ5g9U"	cjN7z7(YN̕PbK-FӼN,!"K6
"{"N%˂i%ɽDb=5L< {<Dׄk9plW!.:o{ha5vݓ2:3"t@TʵąJT$S`S@<J3fpXF=~@ror8h@4Pp(8H(8@(qOtnD ouz]> ^z]>A/~PۚOG2-Bl)#-t)o?O7D/rY:"׿eg~HZ!*<%,?e{m`HSA7@^1w,|G3
efRPm`k^ȕ#UC	'poEX0=JT^	)W+r'Br]Rⱒ\Pc31-?"D'zX4NO"Ȕ;kŶ|ԉ.&Ǝ^ܝuL@|W{7GJ|O@CC<B96{gb5&}I8h\g&{ܜpă*Kқ{US魜 >*	*xHG\ۭylPXkc)/ԄxrNOVƑ$8Tj0`H1!aT=g]6!JjQA'+)
)׽@_5)QhnN!rNnKk;]WD=3;ܭ
rݢ8Sx%_Vt%{}Ox1=9|v_in#؆x?G<b,T_+<tgyuepHSN	;!,oG?yX]Cuq8Q'F9B%C*ҁ~M(Y-~O]f4|!W<TCoHoR2~&89e=ċid<|BMAaWQ)q&rߑMB;D/A7o[!7YixrU<
qi<Q폘9
< CoPbޖ<;d0aH$NG䨪$(zJ'soNg?=Nk/[qryr KJ&Kx`*szʓWKwz>zC'0^bd"4-NmG{uSw&׈*
ؔycbuPTŬḇTC?dUQn)-i3`|v
s
)GیyL#ș0FEwn<Ob[ˆ':6&4t99Xη1N-b9~D5Zs|1[:~Ahbt8#@aKfrR;:6<[lbj\dӽU'}X/`1A4%^1ċjM9mClMl'jw%y8Tj!ɯW96*x7.drwZ`.vMG㘁w@+YP'\ P>$ O8 P>yځȾ05ĝp-ϦӼZ|+qD>q׷'%VˁJ7wQ0 iM
1=3Yo9mK8k0NAϪQ#qBTHFvq}GE4_!yF6iV5&9$_{T!L~4q?Đs
S6Alk3u-il@
E%Jt,cCMьTxsksے[ړ^~f
+3:&ÀTQŁcB	5E ? Nl0o-cNǔ[bj[e'7
q=eXM0;_n?!.ǨgibKh'x=_^FOG~^FOG~^FOG~!`)_/{)Cf`S,h7
W.ȹC@4))1RDߩվZ" ZuwAccw
paNmCTԉVDR#KTPe%o%B0/F0̙B?
[q.pfz@-0k9% u`ylԉK%BWx+PxLCl߻~kۓc$m>F10aD|eB&`u敘a&44l7%ub~_PcsB	
5IAHL=EU%NwJx	 Zȕ" 56NLD{JIDJ$NmOFIl'yn
D=@) DJt`IL+ӽ60
3qJ# D@|!sazD@|Q9Ҝo
gRZU+3hb" " nH:qLgMO_SxfEٛ!b%P4 J(ѶJ40={l`N/idP'mb|
mWJ$
ԢwTG@D.)hb:Ѥw-15ۯK)a3/3Fvkh? *C mh741@,>.)k߄~lfHƾ>JSK" Ziv@A&E@Ob8|CՐɿ7dHaNSc3wEEzh"gH)Pk6:%zh޹wjm0u>MgkwOu2@4:ԛpl)iP'Zncd#\e@~=^*2a;}~5wq8cq*qפֿ`tW[rKȟw~_B0܏H>8C[-DlKmAO(<F(<B86zCHmN}wIf߀pRAbx9X{HJ9^  ^51l@d*zXZ<q/3,D_&SI}nPU'&!.xgaQ'櫕kCb.?/xc_1,Uu" ^H& ^NEf;QؤQފjC
Ǧ܏Lf3yeMq_	?W0Չ2\(ޒP>@r"Ow]"mHIENDB`qDdJ
?
SA.E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image11.gif>b+1ɂ`e+9hyiWn1ɂ`e+9hyiPNG


IHDR\rPLTE&XPtRNSSbKGDHcmPPJCmp0712HssIDAT(S_6H*D4ӍpW)E7Q/LB
ӄ;?02;b<ɴ[2ȩ-$6۹sיw|
ޣ_L}AIENDB`Dd
@
SA/E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image10.gif?bKsW=Xqy]nqKsW=XqPNG


IHDRWPLTE""")))UUUMMMBBB999|PP֭3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3f3f333f3333f3fff̙fff3f̙3f3f̙fffffffff!___www˲𠠤X"NbKGDHcmPPJCmp0712HsIDATx^r`.RmS5ؒW/9		n?}~|~-00~-ό.8.W|x}}11~{&J{ju砷oald-Z{gQ]~nm0'Ƃ:4#ݔgZײsbC|瞆AfPuj~+x`uJ(=c]EoD~|3pof\wK7޻a}\
_۽T=y=L7֍ǢnŚ'l^܆8{O~UEÌ}}1Z'}0}t4/hF3^.~o4%Z+hK%V½ьhK{/XUo-/WoϷZ`cPS*t^Uf8e-8냟֗[g8|NxzA7Vֹv
^4f;y
уj'd[wLOq2A/KX{߇zf4%Z+hK%V7.G_vZ1>^-5~zkp]3f<]w*z!x1*f͋0vgoos
2\47c8[~?#
k.齱to9HWnwmS
W8lOc
g3yK?3թ0NE蠟s36%5.Z3^3ژzc3Oݚ94g͸zg03WC=̠];|<}xB00ޯߝ7	TiM{	/<t-0ũ$nkR?q{O/>zbČ˳	TqknɯDx #@F_vW7LY,r>솱tAшMWuPŐgx	̿37*T}D#؞5>yy};:Oa9J-]us&Z5U	hw%#ܻ:f.㼝_iտs{WtwݏӜz~zDU(tNd=-8]ќxge<dT%cOo}WlwJG>ղmQm8fqk܌D3"z>񶧺72>Nq|k#g163fq3۰:`>~
2{
~t%Zg
;ۍ{G8ƻj~ƝDo<DZu||MoM=Dom3G{|ic"֣nqǼLJ8HD4ũe3]8@顫Iϸ}c:bC"NcdܘfG8>w̟kJ7n
Gsduo}x8v1Mjj,hްUp9nNԏlpZ:rq&>
Qz)6#=o3^a1g5p>G8VwxZdƸq1wϣ(ep0_#Q:gО,,اc J<nFO]%br>|;8ͧO.8X,jjЇ1k 1fj݇,iFDp$3L݇,ɸ)Ud#~cWoxK>dI3Rk8h\݇,wj_A+{xY*>k7M}Jzu}Ȓ1Ƈ7|%1Xxsx^olЛӠȒxg??wl2۱-p
㱫ھ;7oKNa)@Ř{Zo4#	$Z˟ݏCp`=7#/Q55V`{Ɠ{㚱,8?8K^_ik_o4"]oXٽLSz4o5[zc4L}cN2ȣzo4JtHC#YҌy$\̈	݇,i<cfC4c	@b13b|B!K1k 11B>%͘G5ž!}Ȓf#H=fFO>dI3p
$3#F'tHC#YҌy$\̈	݇,i<cfC4c	@b13b|B!K1k 11B>%͘G5ž!}Ȓf#H=fFO>dI3p
$3#F'tHC#YҌy$\̈	݇,i<cfC4c	@b13b|B!K1k 11B>%͘G5ž!}Ȓf#H=fFO>dI3p
$3#F'tHC#YҌy$\̈	݇,i<cfC4c	@b13b|B!K1k 11B>%͘G5ž!}Ȓf#H=fFO>dI3p
$3#F'tHC#YҌy$\̈	݇,i<cfC4c	@b13b|B!K1k 11B>%͘G5ž!}Ȓf#H=fFO>dI3p
$3#F'tHC#YҌy$\̈	݇,i<cfC4c	@b13b|B!K1k 11B>%͘G5ž!}Ȓf#H=fFO>dI3p
$3#F'tHC#YҌy$\̈	݇,i<cfC4c	@b13b|B!K1k 11B>%͘G5ž!}Ȓf#H=fFO>dI3p
$3#F'tHC#YҌy$\̈	݇,i<cfC4c	@b13b|B!K1k 11B>%͘G5ž!}Ȓf#H=fFO>dI3p
$3#F'tHC#YҌy$\̈	݇,i<cfC4c	@b13b|B!K1k 11B>%Wev
 1#
^Y,X_-`ƾ<ĥ1p}3c_ҘQl/qi(6\_ؗ4fbfC\3
W13!.ņ뫘w<nvfc<oSTϷfnϾ5c#gY3ъzfۮfC_3mQI3v/
`*+yL58̓vFlnj@eW;R76$#Pd!f,q1BKFKqff|Si2zPme=f(Hn7C0',8ǵ5?x\[XOlڌǵ5~\iA,'8Ȱl{d=Sv5c43c͚[Ȃ1Zf-Mdinf&`fVY3vKY03FZ}(8(IENDB`aDd
A
SA0E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image12.gif@b&1M	Uac;qn&1M	Uac;PNG


IHDRDPLTE&XPtRNSSbKGDHcmPPJCmp0712HscIDAT8O͒A \ZꥉixYpLfAW4B%HNPf]DYyG))	
yaͻ\-.P%w;uVIENDB`{Dd
B
SA1E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image14.gifAb5(הhRzOcvn	(הhRzOPNG


IHDR!FqPLTEtRNSbKGDHcmPPJCmp0712Hs|IDAT8OQ C`!c[u611yD%5Ȋ9~f2}̳`ucL
8:>HhfzY'&/e%]͵/zZϫbXOy}V3cNмgQKnvEF
ԶT_IENDB`
Dd
C
SA2E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image13.gifBbi	~?};yE	{n=	~?};yPNG


IHDRuh9PLTE""")))UUUMMMBBB999|PP֭3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3f3f333f3333f3fff̙fff3f̙3f3f̙fffffffff!___www˲𠠤X"NbKGDHcmPPJCmp0712HsIDATx^r sљ}]6ƀme	I|qƱz@c-?xzj@3ɩo~Qz,%{Z]lRny1Է-luB:O6O)/DGꚆ8!tc*p w'H0爪ⓌgxֺDyh
Z'Ƕ*ҝ}q[l]3HN]޳Z&AQ=YM6.e:muvsN/8Mc<LxZ~[_ޞ0QWyҗajiL$qdo/'w'uJUko5ҡwW7s{:̒x~-s+#u	jZ_3=:<|BA'<|BA'
ûMءM#R^baVeRҨT;ҪZ;w԰ﲪ8ꦸ9v`5ꗰJamL12)>O;:Lh	/衶,:2jݐ?ډmhoa125A}eFNR!9azN5mji8U1#+AP<;n>)jsVpq[&wi^euTJ#j	"kRW7AچbUb,fhP/Y"2gߢ^8<nRYuÁijZL,e\i]J0c4=8uБNR߽[-JUJq0Pn[;9XD䷂qD]&]zmkRtWat-};yeQlJZiZ.8,OY%7aPR@5".FD"mBf 6nN	/^QRQIm%}kL{z:2VɩvΝr2r0#uP Zu>uP Zu>uP Zu>uP Zu>k=-2 Z~{Ϣ$β@rK'eSB	`|/|noܲ	!3u	>@ԡ@zq?ZY[8N"G1|=HIuֿJ:|P`4tк~fwszff:SOSo$PzhFUg>NOX-GҸ#EԻZێyi5iYW_x^4tyc5]O>ƵЖ*O~㺺\~m:Qք@|&6'
^ZsWFZugCCC2:Vi|^ܮJxa=A݃Oh=xA݃Oh=xA݃Oh݇ڨ:_HKIENDB`ODdk`	
D
SA3E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image15.gifCb	
3Љ_ԛ+~n3Љ_ԛ+~PNG


IHDR;PLTE""")))UUUMMMBBB999|PP֭3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3f3f333f3333f3fff̙fff3f̙3f3f̙fffffffff!___www˲𠠤X"NbKGDHcmPPJCmp0712Hs	bIDATx^흍*n?rTyfTb&4Q8
afY=ʃ#_@Ay=pNg`0ډq,ߛǼ.e)=;oxܶmGγi3nݦ̰9ʯ%ns:oOJmugPنıDڥ(/#~Jg[lߏQߥ%Q
LG]\R؅aGSϊ/ġ]yS>˲^ʼnyD*eR=-xsP~eˮRnrEļ-EoEl^S-Kc̋8sxzRWeo|;[_IkJX$7egO["6	rzWSvz"_M-3m9t;Xn;xYUEGS8R᭘HoU:>
Ǘ(U8);(͗rʠ<f#3x`<Bˠ<f#3x`<BsR̼S
1Z)LY=y
(K1S}&U!nM}ݤ;sYB@lgՍ4QvifR	?◱.zʶ}k(lZftJ\IR#Kh|${Ut)$ש9p%/ֆ>h#+v^da^͂s^QI`$y>Dlay$ILCP;#o
e[:)GzU4I# \V(ўۓ>tZ*1Ae뗗܅Wn|Iʁ\91(2f5iϛ0pSOElKlZw81]{vEs+[.L&|=7[25ky3;xrHI*dQH#aJddʹBH¦<fd\y&+B2XFq2()ClY<05~qjօz4\V˒X(% ޲G2x3,k5V$vqZtͩczy^oi͹L9pcϗ%Vߧ\J#5̵1-ZR&/{S[Ox	_7<,ekuEױ(9vs-2-gy@,`ˮfj2;텏C~#DV̜6OPR2Oeh8ZHڌo{>x>gʀ;UF_.Ors=Jٮ5Fs=b8',H&E佪}cLZr\D.h3,\XEiDA8<Jyi9sqLGJD:wZ>n쇱>J9J5P&ZEv䙀3%bl^m:~94Wlˇ2bgEƒ>w
ߙԙ/+Cx|3N*<JBh\=@,@(g}?Pߕ'}6QIi"_4-e7(:,uNǼOĵƄ"L;	xRpp^<i(?^2ui@FxSӣ2eC$̠< el1GIyaPr1?(f\ic6nCW)CѲmlhy(`8+فg\zy(2bw8/k|4h?(@AkЌQ18Ł(2ZGsb$3e<^wEtcGK7kKAZ^(:cJ]W"w8ﺵkZNf/hDΰ4}ehPNjyK3B˝1oΉihcJFi\]!k0Ln^'h]%9ѲUZ
Y1U-rv<&ci\h]%j͐-w{_-78$oi\h+d
TfȅU[~rWKwE!k0Znp$/ɣ:W֗r5[1NJ;R1Nj@b.1NJ5c,epܰi=3peP1chysʠהBOJwYxen򸔍VAAyXf'ͺ
e圫drh8ZVNByJFK9䊖Ͷp֗vUfu2!˔PaCY7i^^c:ne/LJ;+/i?b?(_s@Y;+(c);㤔k2
㤚Kkq^mv7]@Y6kAoR.^mւrte]ڬuAYvFDIENDB`qDd
E
SA4E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image16.gifDb+NRLL׵ܔnNRLL׵PNG


IHDR!FqPLTEtRNSKFbKGDHcmPPJCmp0712HsqIDAT8OK0Nol?Iz<h!'$7rNz+_s,8S)ڠ>G~v0tГY5’?ߝi._ȕcK\%IENDB`yDd
F
SA5E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image17.gifEb3-j$Mn-j$PNG


IHDR3.tRNSCbKGD#2cmPPJCmp0712`IDAT8OŒa qX )k}<Me,'y^}r毌vX%5cDDr]ﳊ:&"]ҡ?+sxb[OX=7<LIENDB`}Dd
G
SA6E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image18.gifFb7m;@fx	"Ɯnm;@fx	"PNG


IHDRDPLTE
tRNSbKGDHcmPPJCmp0712Hs~IDAT8OŒQ CK,*gɲ^
Eıjd"d!%d4x2]	@Ulͦ`)!]FiIͰ΅qgWxnC]&2$Ӎ<쯶;g{ЅtjgdIENDB`jDdJ
H
SA7E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image19.gifGb$).fp5sw}NCn).fp5sw}NPNG


IHDR\rPLTEs]`tRNSbKGDHcmPPJCmp0712HskIDAT(SQ
 CkS`m@gZUʨީM
@=et]T~5Umv>8$CĕUs{є\|k;	Y8IENDB`sDdhY
I
SA8E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image21.gifHb-Hm>%}Kse	nHm>%}KsePNG


IHDR&PLTE
tRNSbKGDHcmPPJCmp0712HstIDAT(SQI K2%!%BpNj 
`萢Y0h|PA-)]隅֚'07Sm׵;xfE>}sBN>	8IENDB`aDd7z

J
SA9E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image20.gifIb
<Lin_Aɗ: n<Lin_Aɗ:PNG


IHDRYHPLTE""")))UUUMMMBBB999|PP֭3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3f3f333f3333f3fff̙fff3f̙3f3f̙fffffffff!___www˲𠠤X"NbKGDHcmPPJCmp0712Hs	tIDATx^v oLpPT0Iv:T~lT(]|A,DD?f!HUd]5+˿$ {fs_ZжfPڼ4d/\:8K",d?fol	#܁yɗFM^	
W#+AܳnhgۅߒC­Y{H6όW 3ptZueǞ)t#M~0tXK(Ek}OdlX
ՌP!ٝȓx+o[u!kjM~ԂͻW)g'Sך(wHU7[siSO6Dfڍu*cT8$K((]zdQP,ɢtYE@ҳ$"ҥgG6?f}: ̡"x"@(쒕er4{gY/S-;_>w<[ͬC_x'EZ[Ͼ%?{Ƙ]O:w+l[>?\[6duGQ#Id0׆y4 kH\$3oŀ&DC҅-pBv=s;[#!ٹu#ى@c_d'"z
j+z4B\*|_֡wdg__1-Tf5l9$atJ%݂NǍ<%, 3U㬌~`-QsL;Y_J6TҾ Sf}"	E/^ېdYCZyVHbש@<w8/@b4^ XC4FkKz6Yײu53J3fq	gtr[yְթ,vgV)LI9\94~ރYzkGA,IDd<MUjT}jMGv;<F^xnFI_&;xճ)$1|jxdg];HtxҘ;vJv8*G~Q8%Y.=K((]zdQP,ɢt=+=_HUҷlƒ!_d6Fϴ_U7vcٮWYmw)擬3ʒ 8^gv'F[-w(o-TF`r솺8BW]yh[
)}8ّ?"'9Y!e~^Y'R&lYd8++?:m
KTv
I=$Ʉ,Ȏ`fU=elksJ|
%[f	d
QRXp,d-q
+YW8_]3{,D[kI'gi=+d=͕jn0FP!*<"ke $mj%%/ynjf5g圬מ
ͯeYA*ɞ7ՍS+Aj%$zw~̜-g t
$;}PEyi*.DmqX+&Qұ(kKYHufdɖbzHiV^<W.*;=z-7XD3j穄e;Lwxs8vsJ6E8ɒ,J%Y.=K((]zdQP,ɢtYE@ҳ$"ҥgIEKϒ,J%Y.=K((]zdQP,ɢtYE@ҳ$"ҥgIEKϒ,J%Y.=K((]zdQP,ɢtYE@ҳ$"ҥgIEKϒ,J%Y.=K((]zdQP,ɢtYE@ҳ$"ҥgIEKϒ,J%Y.=K((]zdQP,ɢtYE@ҳ$"ҥgIEKϒ,J%Y.=K((]zdQPo'jGڈ>t! fo$Y<;)"|)$HvqIv
`lҳ($T.p9pւKZ7׹C"C/#w\^=i)_dқ~V8N$mE~l4[THgޒH1Y'YM|ɶZN9WWl
#[Z'CUq6XkV4n~
ͷ`gԂIu!&luo:Ia'$C+$;h>7֝dQ
&$A`ɗm΋`iҐ?KUS&;OGŻkL.dQ
&$A`I`B֝dQ
&$A`I`B֝dQ
&sdO/OAy9Ie/^-3}UoVIENDB`gDd
K
SA:E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image22.gifJb!
Iu'YW]	n	Iu'YW]PNG


IHDR-YNPLTE""")))UUUMMMBBB999|PP֭3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3f3f333f3333f3fff̙fff3f̙3f3f̙fffffffff!___www˲𠠤X"NbKGDHcmPPJCmp0712HszIDATx^흋n0EYRoSR֯yx(mbpaGӍ8i(KOncn5*MCoZtMZwC0hZHSiIRaz]m^i&nLK@j
,375!m~<JkT*i-6I[TBhE^AZ	
1I
w).=g3yH+{|dXV&2[߷VQ֌%YBh˴IkN[!Zӻjkoc⢶ހVWDb"j[̭*DT[ZdDHFWӚŖ7G_㮶oJ_8d? -7- IʵH NIkP w"r0TyMOz!W?7iOuZ*yW-O;:!Y_yDZq;h"t %籄`
<wy#UWM2R	#P"&>u*EH\
R=ں'iee$R&h5L+c˗Z*Tuf@=2戚UB%j`}͕L)KsWmim5ԅz1H\cn8FMŭV.hu~ZyϹ Tl=%Y6A<)fV<h$]N%&kUc͓b0-pOZ*[y-0K{Mcj+:u\=Ģ/c6;UNsF	0HL
>vF|
AMC߅)wUvHpVk*2˧/5=Wl֮EZʥkY3$&2SLY\3s+ڪu:%X=lLX]FLxc-h@82t3VtN[ԗwxF]{ldZ"-M#Ambf;hd	yVm5Vetpmo6:Ȩmկ5hxlwT[≺\
aՂ:N^9Ë[-ȾE;wF,1,;7iTB9)T}\WW3)V^Wx'
%9Otࢶ]~ˡ.-,]\Z)L"ɘEm9`1&ŘȘcY-j(vo9`1-|ڢ"h]o1r	1,\̷-j(vo9`1-|ڢ"h]o1r	1,\̷-j(O;;򛰖/YHsI<<e-'{DЂ=ޖO0`v+ڂC'-$(yyyde[k֩j+ࣧ[Z;+'9_޽Sv-Fc|e(~.J0G
ZhQ[Ɇ`Umo~+BUY2f	Z"-[T5Dڪ23m{y]u&'23m{)mu+["a5*(w3]IENDB`>
Dd
L
SA;E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image23.gifKb%mPNIHBn%mPNIHBPNG


IHDR-YNPLTE""")))UUUMMMBBB999|PP֭3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3f3f333f3333f3fff̙fff3f̙3f3f̙fffffffff!___www˲𠠤X"NbKGDHcmPPJCmp0712HsQIDATx^흍n0$mZ8CB<ZaSWA	Sf,PDΎ713h(Md̡\&]oQ鞴Ekq$-%z|NӓQI=pӱ_)-hMkz8RF^D%eڊ:||i
ӊZlH[!</'-%iIЦĵ}
Z~;巭K
D6~<{ImEemd$3M+|~MZ[
R9DKb}KMljB\WoD\o%3`*;m"+FibW7xuˤ]"^^֛NIL#6/̴0<LJ`֠@#%j0-@uǁByS/w.yVqqThrHOfD+3Й"Iʟ5Z«--$ZzB[z@5-oHP1䩵EJ[m;{\VGu&g\зooDDJ<J]թ(`X
IZ9!n:*z]jW.
₶AW[ѯ;lX+WuDbA0-ӿ3߆vGR4TZwxxD$FNt22<:Ӣ;6v+NCKg]b4i)0YmctEZbDbZQI)+9[^oWOhz8u"ZNoktGr*oWmbcd"$hRAҁ;-iKk+x4zYBzSw<\8@?Thm`btL{,-mm`#6-IIu0|me6,]|-[XC[-cMc\ހ2j%2}-.hu_I@`$D.hm!Xh&6]0[m8PozI@h߅m8PozI@1}պb~]Xr-вB[e!`s7痷4U旿31Pob.OAZ. ɺꤧU$;2_xr{>2;`)ҺJ9Vy֤|Jg捒1\|fQ9)EF|h{t[ryXB[N!hGZPS[+k*|-V[FD3Ia
т2,-w'Qr	V-֫V5`L2LQP܌dIENDB`3	Dd)
M
SA<E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image24.gifLbǓUWb8&nǓUWb8PNG


IHDRG\nJPLTE@@@@@@@X@VV\HVV@Ve eeeVeVveV3V2Ve›1VmIgaePVVe킌e(elV`V‚Vl(V@V8M0eM,VV,@?V?V&$@2VVZ@Z_u` ȁ\@`SkoB, J&
ޅOBJzz'Jpe򿆨WgJ?3W?J߅4W?LvWdB߅6W436*?W3vdd?WZ	^d:6,OMHtOnNʆ_'>;&߆42W442v`^	OMHpZ&;&v9
""")))UUUMMMBBB999|PP֭3f333f3333f3ffff𠠤JbKGDHcmPPJCmp0712HsFIDATx^[
o G(!yoMk Ǝv
lY$ۖE $ۖl	Znl[2%hMmK}|yZz^A#`"y<c_1Y"Nz8d8yM"ç!Ky" uS1Z,MȂF(rjrz==,b݄,VO=DN^LnՀ{.=0$dH:\pG
NG٦T\p )NG&mLU
26'[p26'[p26'[pC-{0G0:0qp{Hx_	L26 Lo-nzK#kIf~	t{|ک@@[M&iԝ3<!9I͉Ⱦ]"-gfX^'Yn]rg"x%&E֗4v׹IjFvSe@ud37_qeE]***)/T@L s4L}'-b1>߳emlҬJlGIq}p[?֚>D@NEe5j3&6h[BV^mGeI3+͉P57zvlyt~:L*QI濛m3=Κ[ҜkM'-ݵw#h`ZVLH$#'1gLa\8@b-< O ΐ-=T IƇDEw꡾yd^_iٮaZv@E4]r*·*[T&)ZK&YH6p>*8!8nI*Na5@65Ip>jop ^npmop ^npmop ^npޛfqbb3Pb N$dz,NNIA£Q35M]O烈q?-dy^#0~KCC	 [T>ɶeuH6ɶ%[$ۖl	ZnR_xEH=<IENDB`;Dd3	
N
SA=E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image25.gifMb
vsοpn-=
Yn
vsοpn-=PNG


IHDRl8PLTE""")))UUUMMMBBB999|PP֭3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3f3f333f3333f3fff̙fff3f̙3f3f̙fffffffff!___www˲𠠤X"NbKGDHcmPPJCmp0712HsNIDATx^ے }3A 61H	m1D: Ħ.צtIT%U#r3гo[n[yxԯݴ_VRWn~Uzwl76Qg$
~_6PȤGas)N~(es[2wgBRe юq[x#;?N
LWH/vïKkB.PC_P` v>K@~!J@Q'ǹ/$a{?pDGPZ{)PQ`W퐷HWȮ|UZ<p;e&	mR
Mgm'}xZmp@%]z9mOҨGGZ`\/.EZiK(uΕ\PPa Xf`:V.DTa?}TP*k*PjKwb)S zc<Y8,Jl/!B
]pBAXh*A&;ԅS
HQPzzdDCxj&Y.E!
OXFfc+
t!-R0MRR@ERE*9(_.HQW~B
q$)kT}wRRtC.rkF*B&3S>T0kde=y$E
T(<(Pt2

B,1]IF4W*sr,Hm9ׅ<v8k|Q3Q8aKWh#t^'zt"K;W<⌱D͓rKg0g$~!(]HyclJGNCwK_8zM+D.d>TNb(FYkp(\@!`0tÀu@9t|avgVmy$0@@8LoN@L`ɩ0w]X_KcB`|֙.L/'}/L/"T9Ձxg+܃UkX_s^gT=GGJρ.uЅkM80AWM@$4sgŘg:!kVdӍ~ު__Ӝj~_|HGӂHB{ֵ).N#m߱#9=Q~~w殜*5BTyuad}14<&S5.IR.0H4B1w.<[0pS_(_yp9wN˲v4bwpCU"KfгE=Z$cE)R0V_XХ#rUE)[g{Q
##M!tGNam`/,JX(	0@@&!7`_Pl~T/~.@@Adb$#`_P;b$bGT /~OOZOV"j$*hk
*QPP}0(	Xtma
H*PHv#A5!RuA0;O}pQܚy|
7H@K۝
Rcp0@eַ][(0.,\Bßg5<ۻ-ޙrKЅQ&gQ›^J1ta))8'taHA~a7/eSpE
t#Ј|ChS6F|ofk_(R|pJ's~HޅoYeQOH~A4p4_uu~kN:0X>[IENDB`dDd
O
SA>E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image26.gifNbtnq&G2Fntnq&G2FPNG


IHDRDPLTE*`@tRNSSbKGDHcmPPJCmp0712HsfIDAT8OՒ
 Cck+æ;vX@}DR"
cP"_¼Ă;K.
]b%
2l)[_,Lrd;tP	0MWIENDB`Ddq
P
SA?E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image27.gifObwe'	'SnKe'	'PNG


IHDRuPLTE""")))UUUMMMBBB999|PP֭3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3f3f333f3333f3fff̙fff3f̙3f3f̙fffffffff!___www˲𠠤X"NbKGDHcmPPJCmp0712HsIDATx^v*{1ku'qAl韽:	|u=Du1?.%_ʛ
lͤ_ϥQ^Q??/оԟ%v[d91-NDcuG'mR>x~MNcu?IQ/d;%f VUhkⷋ_Ial1Mf&
M%O`<%+]kt}N:Ay\i]$)YHցƓq>"QzʽR]:«RK)_ޥu38P6iAdft7.Rי7YSu^W+GO[ݶ;Fo@ݍtz=M+؇Y2yU߿
&zHW@bQ_ZsSZ;_Z9u{ڼCR&`3O׳nևfÅ##	d/Rh(qs{e;NBZOrкO'QԳ4g'v|:-jHkxzodg3?a(~\)enFBb3-7G6>B}:u{驣N#iKMF=o!p%v0Cֹ[dxlZꌳL:?J~[a'uV5֡elPꢱ-ÌWђFGZldfZ܍֥??z#U5^d0Tpa@c?MK߰ՍϦSOrf?
^neo{IΧC
LA}_Y86_zGr&/g2PP(P;Q&wLh pG:A2uPeBK]?ENN]gOO衿}ΜU04W<g4{M#C,M6wJzJKKF.'.iP9V(KH3-S>=yzIrk&Q01U45Vz!WTD*ɉcq.Y.ۚ?hdOª?d jws;gꚗ:g
9T@M5A?Rarň*ɲ!P,E&wqu3Tztg}O$cFy5D|D)^1ICy[z]ɭv6ZQR׭'W?7գkVZz1MDM[jּ>pf7*H^i20RuQ+(()g{ťlZ2t3>n9ig6f֓oa,m3L9S1Xa@grCЂߏJl?WߣWz6P=+uv-b*-%YUx{i"|k@g)
OsW3;;W^3
?#M[MzNJ}u9MhFݧΩw|
&wx]Zg؈meh4-7jT[ՐUŞ1)$UޝѼ~!py+eV|I^nLm̭4TdSmITLs:u}u*p7p{fPruSM3N+xn
vz{RB7eC[j+aԋLJyMKmtHK`^`CY\iW*Zhn\bi]:%C]UPk6*ա-Z^ae$ѺMمK%}C> {/BCP2A_ƌ0빷BZBs,ʼ4¾B}gJ/?AԓpM0J M` Xi+eYPn*NS.,fz,CXpPdEBtYl+[u-;VWF
W_cRֻȕKR&E("sLm޻o"Juۓ"iH)[咸:$8'՗[!.gJ˽Z0f}5Z/[Le]clf\7m$&Lef4#lYi(#afIN%"mH*kÔz
'^& J< [+p/Զ~G6-t#b.u#(2խ@;Ժ-UtjPĻ0e]2kiT6ffܳ!yd#_2+EBM&%UBc<XQ03.l"!(_Պ0cB\0~)CZה)_w`=Z9]u	g)͒!Ce.\ӂVk.ZHԯhΤB>`PMo^fTJW++iۏodl
1
T%r'MOwj5?,~n{O5aPNo΋Էafv9ny4v6ܝ"Z	)P":O:
	SD'	P!A}P?4$O`'@)	ې+Է6z޿?i=_IAZ]^V2&-Ĩ?H1!./=}kО}c'M1K봄iG}кW-fr$ЏL
8%=5-I潴yĞ{~o#x݃B/[΅4SC}{tt½;FZ'{ڹYjXAЊ;f9+JxK6tZ_g^0mNĖHMZO.sf=Ps=z:['˜;2̡ yĸ/z<?XL\!=]fˮ9}~t'_%LsC0py]?@ϕsrԙbNjڞp~XwZNnRsKn][QgS;0L++k[~gitoz'kngm_̦-@=<"[z>yB=UdƼd^5_!.{:EZVlZ֡us-`\VxXDALG-+6nk=O740S59ak(#Q3G9|Pg:x@}tq^	+ר?i(GFNsWl_7Eog%k)ZY|L/vh}͐hIi;kv;P.<9)߅ch}}?GWGE>'pAwYu7^~8qu^AAT?hZu|oHK+G" $6.*`ęlZ֓UZcLrh6j
Cɪ
C1q&{945֡dE֡8BzjcvAzL^FMuh=YpQ;uh=&d/f:X~:gCQShZOVm,\T?hZ3ˡ٨)'6.*`ęlZ֓UZcLrh6j
Cɪ
C1q&{945֡dE֡8BzjcvAzL^FMuh=YpQ;uh=&d/f:X~:gCQShZOVm,\T?hZ3ˡ٨)'6.*`ęlZ֓UZcLrh6j
Cɪ
C1q&{945֡dE֡8BzjcvAzL^FMuh=YpQ;uh=&d/f:X~:gCQShZOVm,\T?hZ3ˡ٨)'6.*`ęlZ֓UZcLrh6j
Cɪ
C1q&{945֡dE֡8BzjcvAzL^FMuh=YpQ;uh=&d/f:X~:gCQShZOVm,\T?hZ3ˡ٨)'6.*`ߊc^zQ_Qh0]#kr@=Z4P_k<ע\+P
8Zz.ϵh)
syE5NVs-qʵRd_܋_??^&D; `NP@ pG:A2?P뉋n.N?}_!D{DAYԿf|8JXv<^-{V-gu,zQ-v9Ύ,x
x|^7[izFORWP?<}_ۑx^63@=g67dqA+Uy=2L!`k0M_Q2,P_F5KZ˨@݃*vZJaCsSIk<y><cXegB(LA=
#;`zJG PwJ3}PO@e8H>IENDB`v
Ddi<
Q
SA@E:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image28.gifPb0Ww	}t,nWw	}t,PNG


IHDR;PLTE""")))UUUMMMBBB999|PP֭3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3f3f333f3333f3fff̙fff3f̙3f3f̙fffffffff!___www˲𠠤X"NbKGDHcmPPJCmp0712HsIDATx^]ٖ(9[OI.$;*ڂ[")Tdž0l|q(N"Iߍ ߿b#t
%VFl^r1A(A,	{lF8|;)Œ`} Bγ,k%>K%t2i5,nytrEQVpO㨟x9Y󾻄8s|  p>C(.`E}-m;*ZY2c8lK}W*Zm6.ч}NǥrD_qpn9k%浃>s*ɲJqZiE6(WZ)IY]ʥKZa_zpb"|ZxjPG͌.,7K)gҵ3󂅤~:Mp+BZ688C4<Ɔai(QgYP=xXLx;l׆G78`+b1ZFlvg1"u^y&t+54k干hPK,"I>f9jIV}pOwbmzz`p'dRM..`>f|57Bl(74&PGIOcY0R`
lm<>P0%2,w	I뤑8@u:j5!pFA`q~l,%ߔkDQ̫CiпQq5p8H68k<>vEɶ;ŏ_ZUaNnh88I߮ė&Mچ8'؇۟rK)8.H_&*X)nS{.;[Yu=۰n/ap'<‡	{svdMcݿ$g}|I$t:	NL
_Oٴ0ЪJFTi65ozqT~bt;m&3ȍg[.?:\qp!?_H|^{;;.
)MݝFH5QMmK?Ԏt<r1An;]l\}.h4m{E
>a≟C	-@T!<t%jq	T`w27Ab?)w=6ӝ+:{d;Sg^3[{]pA`|.vvFw;wsf15|-Q_CQF~J1p-~9x?LWw)]B3Kݔ	6c,gp𚠹
C9z7SjoAI=3q(w-:LgpX4yw>Ç!Q3VTiCRg׌a]z%>@C=NB'I$t/nM[to&/g 8\%8pb*=%%j|6ӘZͺK9v؉ޝ_y5;qpQ\ݸ/]8,IKE*Zǒ[D Ǔ|e>R0(Ga>#%yI/JD&7_͖uuw<D8r&>X7v]:_f;8κ]C>2Y穡<
=s+z7ֻލnwcǿ______<_ĻWxOpU،_>pC;܎CGE|L`{6~ {\].$-j`\Տy:}ix8fϞF>heVZl'vj6JQz]%|3qhI">I:dCqhчC<poq`>hZ}iԤ٠1Nv-+҂҇w_|X2g<1QJb4u޾W8ܿqGzd9|!j"a-SW?/1IENDB`Ddq
R
SAAE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image29.gifQb0N.^~N$|a:+n0N.^~N$|a:PNG


IHDRuPLTE""")))UUUMMMBBB999|PP֭3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3f3f333f3333f3fff̙fff3f̙3f3f̙fffffffff!___www˲𠠤X"NbKGDHcmPPJCmp0712Hs"IDATx^ے:ECNDL',od#r=]ߓ?.p\J_;#ukAw	KoGIx<ݻ<?~}ծ~-ќ؞<}ފן%^&ԽAue?#̋bYl!!ôA=6UtX&,>]1l#9̞D["z\<cOtE *>ׂԉQؾ@Cq]|RzxH03)//#YOR{=ZlQohd(^R]v*
/ڭh2e駴.a|a!F寧09gk4URO#goq/Gӻh}ä9]>͘iFI'J>TX^离OQ2yUԧȩf<u. D~=wjz毤~=wR9`NH}`z}'BZ\s9^]l:^;$ٝ1MA}n>gSެ!mgYPd?Lf
Y <І)3Xf
kԽdGWp%>ߛz-Y*F-s㾳O٪;D{IA1{5I.&F/h˷ʰJ7Mcѫ6Դk ׎ٙzDmKg> g\H*VRF9cG`rOFuF=Dh!ocODQM#T뫛R;"h4Uso9;hG
kZ'u{&tn&QnmFD5	ZFޠ>eΣ"Ƃ\GO,Iݎ%R׳$u;H]ΒX["u=+;KRco,Iݎ%R׳$u;H]ΒX[QWOw-QƊB3|xR՜ԳGhnYQƈuPQcXG. _
L}_*"eO=DbfF-U?l"tF%~-sQ(عn*e%)b!Bz8<hw+z,c-U.*EpArscضC8&~5؇Sy0ȣGRߔSj}k
s+i"KSn+wM
`5imw
ECPN:;:'N
č'v7lNa4ݼ[6iMEG4C
WpEÞ'!zmIaep&x4q1+Nɛ}߶%WQkE6h6&Zh=Ϳ%9LbD?wV/_Ӗ5@+oU.%
t^pt\g4~Ot}SX:GrDNZe@lԸã*G}:	^dz.OަGRsP~Y"b4Աm:Dx2gn'Rvؐz3(^6Q4fCQ꽜cCl2-KQ˜@W"W^=K$әYZQDTYGAݬHeF/ò91lcnXRʌv6.Ȼr}~24s>MS$Zαh9QxQ
;=҅37hjW%-7Q2>
UIu;m-sSM=$Ŭ6ej}_V	0X	G>Hf9@9G<Eڽz1.*uJ5<%8;c"vB	2}qW7("8	wh&jcڠn5c3\GsC.ЄY~\^^s1M_W7pII(SÐԎ~szOcvc4=7XѱYkԪAgs1>1RwWOe2#+]=>+7fp?]˝3K?_of\ٯYaj)\?o5_̨_Q_~on4yݐ]2bTM]$}\lVۓu}k|{	T~ϲa:ԟZwѯʯ4ffu;0MXc3o(-ԟ	ԏ#B.hbJ=rko:Z&0np^k.kMcۖ5ԯg{q(ݠ.R	<ZFjzZ8éo:zO1qdֻOGZgMg40i]Qεf+1/MΘa׏.ĤY#
gB!i=z5lgXLRJԇN0PQwwȸuW ;#OK=ܐJzG=u?Ƈ'{O6Q^ېcdOrH݄z?}P/߲AoQ95fZt0l>>qw'uR@P뤎 )_Gԍj9C9=8OYw9-eQ~gV֩uj=1~%\ߑJj+ߟ	ԙv=0CD'	PM	~a>Dtudf-|9s$!t:O7JY}|@o~׾q}OUGK޽[H4nE=@:unA=R"tROoP4ZؒqtAǩ׬Hԇ9:§:+/LԗAs<>i:]w:7L~]x@ꤎ I:'N:# |R뤎 I:'N:# |R뤎 I:'N:# |R뤎 I:'N:# |R뤎 I:'N:# |R뤎 I:'N:# |R뤎 I:'N:# |R뤎 I:'N:# |R뤎 I:'N:# |R뤎 I:'N:# |R뤎 I:'N:# |R뤎 I:'N:# |R뤎 I:'N:# |R_L@khz
lŷ	{x%PGN:# |R뤎 I:'N:# |R뤎 I:'N:# |R뤎 I/C*_?\N'0Qq8'#:IAZ'uOjMN&U9K2ycH6=[af	V2uM(|WZ{[RG3lI݊L;>CvD5nGq=X?N_<q8/ogP퐺#0zއ]z-Q`Rw矏ZOU NCq=y3{}]:fhBR>0#LM2֌Ra21_ua85>QϒMϠ2eu-)1u	Fw9vvݸf@AIAZ'uOjD
	Gtbii#IENDB`Dd
j
S
SABE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image30.gifRbPj]Ȍ+
,:%n$j]Ȍ+
PNG


IHDR^PLTE""")))UUUMMMBBB999|PP֭3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3f3f333f3333f3fff̙fff3f̙3f3f̙fffffffff!___www˲𠠤X"NbKGDHcmPPJCmp0712HsIDATx^]] }G@HjB.߇YP~wVt
P_/7:OZV.^$Cq^
>I
VQ=,zDmoú~`@GXMYzw.a?ղ`sqݱP-=s'ZDf7.ݟq'|
ruB߄U)u5 YX.0Re.G?Aa* Mދ_?-Z
E~.5սݤ^67^ա[J5ji8ݥ@pZ0QP'Rޢ㸦؎E.AĖÉVW#UԓqbF}Q^bLBzjc	IAgSqJkؗ΁1QbeMuK(譼<Ֆ͖<ZbgݯiڗyRΥ7VYVej2DdlZV
V%ĝZ}X%h
`qq~``s$Fq.vV9U8YxW#jӶ*Yj7T=ׁ{C5WKZ?Rny렊`CgV܋wVJl,)I`-͟m)TfubafZv# VZ5m {	|[2´z#@80™#'#^D
,>uVzԎ+v,.J'.iCޯVyRYQ{OGZIެȼf̱'#t1:0oi-DZM/NX>zP6-&m*ջcuOƝ
5i[	7quj#R碽YڣkK
QfF)`TmB,iז2;qĘCU{a=0N4x6Xݼ*vʴz `pZ#ͅ@;(z['"_bZ
Qzj>mI)[y껥tg%A(	$*Ǹz˹sRT~TOET7˫V7qUnbH֪BDWVђBR:wyeVnSYUM\gCL̎TW4˪U][ о)rx9moVh.D[p@ެ٨RXs!qgva׼>iӸz1A֯udsPaN*@=2Ç>"Nԫ<!FsUr._M:nެRQ6Dڛ6m#f_%_}hնq/ӎ:4]LYWhK +}.D
fV#r*p	TL^@*][ެ٨=p'πU_Ę;%UZ\P-@	T$)Ն\8%i5^qb5&Gwd6xr!mk*R	ݒ8-Z+ãTΏ:kdj.B0fXz\{}{O{*:0{6>"ksuMdžfMF^@pHoT{4YmQ{`U<Ҟ_ĘK	lr!PjGqZ w֣gs>B#0#$yRum'BwOkll׏T'W@mkq7qlm~?֞7Xs!4;k4vXqxlye"+ucBuU#V!3Wq
F<~\|XZ\<NLTǼߑqzUq<WeUW;֘fo<gIENDB`.Ddo	
T
SACE:\vfp\@#5"@5"B#A#! Visual FoxPro17_files\kasem_files\classdate_files\th1.jpgSR,P~)/[v'}}<,1F,P~)/[v'}}<JFIFC

	


")$+*($''-2@7-0=0''8L9=CEHIH+6OUNFT@GHEC

!!E.'.EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"	
}!1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz	
w!1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?͟-5Nb29!#fOL"fly+}I4>3եl^3GQ[\\-ܥ1;rNQqBNXX*Jɫ[O_]S^dGgNxQi_HpB  Z/q_Ow&0(*Tj:Q|FD̘7'"5sC|1OtC%ֵƧg)#*k#',FIr\TTWs̭%ɢO(|'WY=
IY
d,a6]OO)|LQ5IyLX6tK䌵gXlIFi.A;C>8Ǻeד7?drDwcypGzbjK/SU&)b+ F0k[KJ5b<@I"E*!8|+ߑ0M~bO(|'WLA^;ä%tQvۂ6QDfޡOBr솊'
H#o*]£	0|`2bҷs'//G,O^_?¹+RU"nΛ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//G,O^_?¹(}.Λ'//]w^vWQ֑L; H^O^凗i0JT	34zW21M8E-{"-<:sE8%>Z5A'8koyʤL=p:gh{Dcg(Glϒ&?B9t#|kZ+ekWYԬiH9@$guK?59l\
[\33zuV2<kۧCh֩FNݏ>_Q_QhorϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:?W_%:(rϿW_%:R4<Gr0(8h*_>Tp_u|S`v5ԨI1 9k7[4ՓMi EVC
+'P[96bC.<dasY:XjwQiZG`G7	.(p:@5i5BSw1%I_wt<;@Hè!mRPh=,vs!۳O>ObҸ-/EcO$8R,i(<<tdC4!!t_p\cM?R81YN'IPQ@bUDoRNMPYGR:1oB7T!d6*4}QN-n+/m-\ܲ"~o9\,g
p.??p?b˨jٮ-iawyđxFrvKg6IMB+}D[#}XnDsG?X8V??nB7Ckk-n-b[𑫻df+a6>pˋjZjm,
PAFs!'8P
B7G!??n( Yt??p(_Ag@}먢9B7G!??n( Yt??p(_Ag@}먢9B7G!??n( Yt??p(_Ag@}먢9B7G!'!nuVUY1$[\n>j+K]BE6f{u$\\dyVlu9F )P?]Qc˯ʹESɱn6?ܺ_>hfϴXqg<.&.|"2%eOpp	ɱn6?ܺP?]ViZ{LI!7*C?J꫖~xwq:k7[4Ҭo<hJ(.[q;ʁ>=4Ӭ4E25*UNUqjEVN }qN[HeUi;<H=[{jz(.k\v1@p115et='yfy*'@;fRo	V!\}}{ƶıTP1?J(K<mĺt\# gFa`B$9pOv-$5'|O@WZv|vu£;(8)c##O'ɣhh}<ޛ~^}+[7^oz[M. K{12@ S0=M?Ҷ̾]ۅ+(ژĆ{5kFO@O_أv/W-OG?ou?kbx\?o{}>o=rkFS(]kFO@O_أv/W-OG?ou?kbx\?o{}>o=rkFS(]kFO@O_أv/W-OG?ou?kbx\?o{}>o=rkFS(]kFԞW;,<r{M(]Gqs,q&X2IAy€7~o=E=2"M10~6_[PԎ^M~PcduEOZj	%D>}0-Z]E}ƸNws-˻y9'<Un~"kX_sO*@|9@'@d;/-wy{<yH#Ӗ5@X <l$t8@|9@'G >wG
ߵ_أv+;#Q?wv+ty.E|jqgi՟@|9@'R['@
Ѽzf#ZUǚAiQERR8󌒆eXyI(80r$Ѥ:n+)`z}+Z[#X&S-rZ"pONk;Rek=9
(_xF
Upd9먮fjlס\+T޻Py!76cn8Eڌ~dEɻ0geojP3Iq8{ͅ;Y]
2*pAt X"D6,m2lΟtn's8
7ȸ"7p[;ّZ61mp#*9F
ttVnY5ydx'h=H9ȭ*(mY~6P%Ӧ`Ʈε!jOHeP>l=;[885OIMbZ6=vr@>pǭ3?K8ª_hӢKK_#Iom*9nV4W_c4y˼
n<|uc~=j"4#Ɇbʮ1Rvt@mB-M=ct=pN<g?K8±R;W{REu<"(bu"UEr	b?~kc#<{oc?6hw?K8D=@/
ע2?t(O?z(#?K8D=@/
ע2?t(O?z(#?K8D=@/
ע2?t(O?z(#?K8D=@/
ע2?t(O?z(#?K8D=@/
ע2?t(O?z(#?K8ªWi-Pg
ǰj?@j4/i*[kEm6qr}j߂4}5I"i-J#8|#.$
{O/[O/1HݕFPHE[d?Vݿim$glsY+[SvTEPhU<lCjz>_ߥ
.֯sOTT/_ߥ
>݋/TUğVz$5Ip3eXQ~P1t _ߥ
>݋/W3gds}TYp#̈
xfj;[%HA7
fF9o_ߥ
>݋/W%ilH!DEtV(Ss%Kv/Y^ ;KQ,~e1DU%L3Vc=lFlVni]5YytQ@.>A%卵Ām
,*LӓS[i
mpĹڑU=Z(((((+}XjFG,
n`+X*?_[cMAk uEkl:???d@ΏgY4P_cMAk uEkl:???d@ΏgY4P_cMAk uEkl:???d@ΏgY4P_cMAꖫ1-D
̶COj(7ì05>j+Ʉ@c
P*7fO,ؘ$Ho]O(WS~!ꖱ>vi\O c<8륢
(%Z?QVeLJnySH$at?utY:`I]@FTbUF	#WcLƙۯ
hVp3̤0yn$1?>`XXY\	71b\p1U?ut1vfĺ%1e8d2W8V HǞMhV?#gn6o.F4l]lV?jƙۯ
'AѺﺕ9y57[4Ҭo<hJ(
nzޞaŽ
>h+sw<ӾsԖ6ydn:ҶhdY
)APTrOoCH#$
$*}V/w
A@y=F\wK1wR2Oh v58U
PAO#ӵ:;xavxU$>-Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@f#ZUǚAiQEQEQEQEQEQEQYMOŧiZn󖹑Ong'_FOEATn
t=O熍R?|U<4o
T>*7KWѿ*_7@Pdxh/'_FOEATn
t=O熍R?|U<4o
T>*7KWѿ*_7@Pdxh/'_FOEATn
t=O熍R?|U<4o
T>*7KWѿ*_7@Pdxh/'_FOEATn
t=O熍RtzvoRM#
O׿~--
u`.ߚ>݋/PTTi~+/xkRX[w^:ހ/EQEQEQEQEQEVni]5YytQ@z7Xgk?!knܿ(GY;hvij3K#")*ޫ\F
>\g=~tӁǨGBIH#n%W
9ʜ',wm\r
#HʍĉWs׽'SP{9-<JB脑x#x="?ctc+XRXAe$,1Ĝ:r}MaYki6ŭm.'yJm%$v<3\Up1A1UH[g)-՗{sz3sךb5*$ŏ'=sӷA@((
'G7mJ	xç\^+bU
b*KF?g
'G76񢶇ɴ!2LQyorr^Z]\C$+R$6!g(Xm7a[x
J:/1X'KI
ug8sm<)hM^Is)E2lbr9^$1tRW̲4.WpNܐ~U*OjnqηS$Yc2u
A\k-;yO}q2/:=4h(((((((((((MG@
@Vt_QTt_UKł*JSϡ(?oZ~By&wXݽ3cLך_ڟ{
(
(
(
(
(
(
?F7[4Ң((((((И
$q=Yї"?U(2Gї"?U(2Gї"?U(2Gї"?U(2Gї"?U(2Gї"?U(2Gї"?U(2Gї"?U(2Gї"?U(2Gї"?U(2Gї"?U(2Gї"?U(2Gї"?U(2Gї"?U(2GGR
G,}]˹pQ>?uuEc1vfºTܲSy1z}٢
(
(
(
(
(
(
?F7[4¢(((((((((((((((((((((((((((((()
i<@<NormalCJ^J_HaJmH	sH	tH	R@R	Heading 1$<@&5CJ KH OJQJ\^JaJ%T@T	Heading 2$<@& 56CJOJQJ\]^JaJ N@N	Heading 3$<@&5CJOJQJ\^JaJB@B	Heading 4$<@&5CJ\aJ F@F	Heading 5
<@&56CJ\]aJ<A@<Default Paragraph Font6B@6	Body TextCJ OJQJaJ .U@.	Hyperlink>*B*ph"W@"Strong5\&X@!&Emphasis6],@2,Header

9r &)@A&Page Number, @R,Footer

9r 8`8
TOC 1h5;OJQJ\^J(`(
TOC 25\&`&
TOC 3
^&`&
TOC 4
^&`&
TOC 5
^&`&
TOC 6
^&`&
TOC 7
^&`&
TOC 8
^&`&
TOC 9
^2
`2
Index 1^`2`2
Index 2 ^`2`2
Index 3!^`2
`2
Index 4"^`2`2
Index 5#^`2`2
Index 6$^`2`2
Index 7%^`2`2
Index 8&^`2`2
Index 9'p^p`.!`.
Index Heading(b 

`ab		
Ghr!W`yz	2:ST]tUx)NOWr,-7!+19:DLop{
<Z[Wm@z,Ds3E|*Y
U"t""#%%I&())***+!+++,q,,,,------%-.-/-3-?-@-D-X-Y-]-~---------....%.0.1.8.D.O.P.S.Z.e.f.m.w..../n0\1223566W88A DEnF<GK5NZZ_R`[`c`k`q`r`y`~```````````````a
aaa a&a+a-a.a6a<aFaHaIaPaUa_aaababbbbbccc&c3c4c<cIcJcTcdceckcccccccdd"d1d2d>dDdEdKdldmdvdddggghXiiijmEo<pp3qgqqqr r%r1r2r;r^r_rkrrrsumwxz {'|O|||%~b"ZvĂ߂$4<CGNOV`ru|ƒɃʃ"=>EOcjkr}҄ ,34=IPQ|օׅ߅$*+29=EFdy†Ɇφ׆܆	
 ()W]Zq@d֣Ҥ٥٦,_§çf@> !&2ȭҮG
t>#27]nozX$ELWid_{h#i%G^#*
6?RC!#()-..://11E33417,9@\'^`cchkmnnqss|||pxiˊ4@ǛӝHƥ&1h`(IVĵuչ_xպ#*,-6>OPYa{|IPWYZ_gstz{|"#Mm-ek:{&'./5=UVhu8
wxmnk!J'(b)*++,--
.34455q89;<?A)CjE)F*FQI\^ars}u||o݌-{1OPڡ_0`ݱͲ׵# ٿrPmj`
$&/19:@GIKRS(+np`	
/

@\!!%!9!@!A!G!s!!!!!!!!"""""### #5#6#C#`#####Q$R$^${$$$$$%%%%%s0)1115Y78=>s?ACDDEWEFFF/GG~HI=JJKKL2L-MUPPPQR/RRDSmS,TLTtTU{UV(VVVWOWWWX5XYZZ&\t\\\\E]a]]B^^^~_abbbce0egRgg
hhj|l0mp~qqqr	ru	vvRwTwwy"zzz{	|#|||}~~~\^PXfɉ؉VAEk9:<Uڎ_jL_Ց-nZnі4{ʜB&џ4w?lˤC#ާzӬ̭>U(ڱi ?ܹ9ƻ2uEjƿܿ';arBSg	U	y-@BP]_`hp#23;JKRhip+,;GV#PQahrbcrz)U(r#>*/VOtzz	RC9bnGea&M,2e2YfCd~UB C E F Q ^ _ c @0@0@0@0@0@0@0@0@0@0@00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000@@0@0
0$/=4JQXZeF$D5JBptxĻld':O]kw&LT|n*^<EVR^hlqp{|4fHx&F'x0R:D(M[iwpbȱN4(<$
5T@KX0e:wҰvHX&8DP_kzʈB$\pTXN&-:"KYwؖx* !&()*+,4689KMNRTUWXYZ[]^_`bcdefghijlmnopqrstvwxz{|~!"l#H$%&@'(*2+b/&IWXxY0Zn^r" x½hvlzd\79@l0$JDQSTLXLf2d^,`t:XAa~
Nr 1GHJJTMN$P<Sb~*"#$%'-./012357:;<=>?@ABCDEFGHIJLOPQSV\akuy}(
 
.
x



\P&&&&-'e'o''''@(n(x(((34349444l mOm`mmm#Ui*
[
n
D<$ >!@!C!!!4"""h$$$:/n//0 1"1ERFTF&ZZZ=\p\\^S_U_]hhhlllq*rBrsssލ\^@giBD	]_8:x)+
nHJ46giABBQQQ[E\G\:anayae;f=fPjjjJS 4A13giEGv


5 !!%O&Q&W'''A(((*++8///CD	DGzH|Hb]c_cifjhj7nnnrrr	vJvvvwPwyz zE|||~~~AC7U֎؎ڎ[]_fhjjl)&I˞͞02wգWYv
<>(iVعڹ#%@»ĻqsAC	$ @ b X4X4X4X4X4X4X4X4X4XXXXX4X4C4C4C4C4C4C4C4X4C4C4C4X4C4C4C4X4C4C4C4X4X4C4C4C4C4C4C4C4XCXCCCXXCXCCXCCX4C4C4C4CXCCCCCCCCCCCCCXXCCCCXCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCtXt!!tl,b$B"N08?մ`>
1
@z(	
B

sA.E:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7007.gifc7007.gif (3947 bytes)#"B
S	?0b {T_f*/"&(.?GKVcgrv4<PY19Yg		W]
	
zOS^cOXT]{<LOXy%%.lxW[im'1z
/7DI 
 K"T"f"n"""""""""n#r###$$5&>&
**(*,*L*P*y*~***]+b+p+u+++++,,,,..C/H/////00/030+141-68666667789-9193999J9R9n9z9~9999996:>:B:O::::::::::::;C;;;<<2=;===y>>>>>>>>>>!?/?a?q?u??????#@7@d@x@@@@@AAAABBDD3E>EEEEEEEEF	HHHHNHTHXH^HaHgHHHHHIIPIWIIIIIIIJJ!J'J?JEJZJyJJJJJKKKK0K3KKKKKmLpLLLMMNN6O?OXOaOsOvOxO~OPPP!P%P2PAPMPtPwPyPPPPTTWWKWNWPWVW	ZZoZvZZZn[r[[[[[\\\\\\]]]]^^0^2^-_2_:_<___R`Z`[`b`c`j`~````````````````aa
aa<aEaaaaaaabbbb>eIeeeeeee2f?fff(g0gSgZg^gkggghh1h9hhhhhui~iiiii7j9jPjXjajfjjjjjkkkkllblhl$o&oWorooo
ppLpdppppprrssKtRtttttttu"uFuZupuuuv-vMvavvvvv*wBwxxxxy,yyyyyz
zczezzzzz{{D{F{{{{{;|K|}}}}}}NVvz/2nq*1^aɆ͆VX׊܊ߋ%OYŌ͌&/=ENVnv{ٍ"FMelqxՎގ
07<C^i|֙EO/6R^ɡ̣֡գ@IgoxȥΥ	
V^HLPSu˨cn8DGW`glwˮή+139#nsðʰ԰-6IVZd±бձUZhp	CPT^ܳs{	FKڶ߶?DWjor|Իֻ
27:HKUprмҼ׼ؼ-12AC_afglmstŽٽ
:<WYuw|}ľҾؾ߾6=W^jtѿؿ18Qkw-28DTm$=Iah	3GKO\u'.HO[h	")B\h},3MT`l%-FMRSXYi}&-<@AFGMSZtyzy
*-8ELQ\19ENin=@.4=C7I^dW_gm#MWQZkuiru"+.9dpr{uztv #JO!.tLWaj|	"&16AFRWbgsx	6=IY+1K[jzIY G[`f#3Sglr-{STwx+,WX|}		!	"	;	<	U	V	o	p	_
d


	"7;ns

	LQ\drw	!&*37MQSWXctyz~%6;<ACL4A{INOV]_bijpy{~OSCLtLS	+4'19OU06TZu  ""%)%%&b&m&&&&&&&'''(*	***1+=+++l,w,{,,,,,-"-%-`1e1q1~11111#2.202<2H2S2_2i2u2222222222223!3(32333;3=3D3m3t333444444444425;5n5y5555555555666!6-6A6N6Z6g6k6w6666666667
7777'7)707S7Z7^7e777777777-848g8r8|88888888888888999"9#9*999K;U;;;9<E<H<S<U<_<`<i<j<t<u<{<I=U=]=h=o=y=========J>O>>>??%?*?>?D???????????"@)@8@?@G@N@T@[@@@@@@@@@@@AA*A2A9AQA_AgAAAAAAAAAAAABBBB'B-BMBSByBBBBBBBBBBBBBBBBCC
CFCICJCRC^CpCuCCCCCCCCCCCCCCCDD D&D)D*D2D>DODTDhDiDpDFFFFFG G%GNG[GGGGG/H:H?HKH[HeH}HHHHHHHHHHHHHHIII%I5I>IBIKISI`IlIvIIIIIIIIIIIIIIIIJ
JJJJ!J-J4J9JJJJJJJaKiKKKKKKK&L.LSLXLaLjLLLLLMM&M/MNMSMMMMMMMNNsN{NNNNNNN7O?OdOiOrO{OOOOP(P-P6P?P^PcPPPPPPQ"Q'QQQQQQQQQIRQRRRRRRRS S0S:SOSTS]SdSSSSSSTTT&T-TLTQTTTTTTTTTUU{UUUUUUUUUUEVMV]VcVsVxVVVVVWWEWJWSWZWyW~WWWWX+X0X9X@X_XdXXXXXYYA[F[[[^^`	```````LaXaZacanavaaaacfcyc~c\dbdddddddddeeBeJeeeeeeeeeffCfJffffffffg	ggHgNgwggggggggghiiiiiijjjjjjjjjjkk
kkkkkkll(m-mDmImmmnnssu
u,u1u;uCuwwwwwwLxTxxxy0yzz;{E{{{,}/},~/~v|€W]~Ȃ|u{}Z\چ
Ue-4ZhipˆɈ &-24XgDHpwy24lvmo052Dce 56Kntyƒ"')3zߓitx~-16ȕ
[`HS`it~	.3ڞ-24DGJvǟן#3Q^
Zbߦox#(@F7ĵе׵ 'cht{׶ܶfmķϷշ	,2ٸ޸&+|[`$AAACCDDDDDDDDDDE EEEJEEEEEFFFFFFFFIGNGaGfGGG#H+HHHHH	IIII)I.IuIIIIIIIIIJJ"J9JBJJJKKKK2L<LMMNNNNNN0O4O\ObOeOmOpOxOOOOOOOOOOOEPMPQPWPYPoPxPPPPPQQQRRRRRRSSOSTSSSSSSSTTTT?UDUUUUU%V*VbVfVW"W+W0W6W:W_WdWWWWWWWWWWWWW,X4XXXXXXY'Y1Y7Y;YYYZZZZ^[c[[[\\\\\	]"]2]M]\]]]]]]]]^!^)^N^W^Z^k^^^^^/_:_``f`o`3a9aqbtb2c<cNdXddddd?fDffffffffgWgnggggggghh;hFhUhnhyh~hhhhi
ii0i5iiijjkk!k8kDk]kdkikkkkkkkll+m5mnmxmmmQnVnnnnnnnnnooo%o&o+oDoIoJoOo\oaooooooooopprpyppppppppppp)q!'+,35@FJKSYagvǒ͒ޒ"3?T`u(1{ǔה"4Ugm~•ӕߕ)0KP_h
'*58BEPbu89%9g9q9999999::;; ;%;;;;;;;<RghhhhiiLiQi`ieiiiiijj+k0kMkVkINty|dh}֭ڭ[_ejjoR\5GXds*8Kcw)6GSiu
 68K);I[sv 8hy1:>as-z 24<>Daf#,>CLT	&+en%*<BIOIRo3=(1@HXcku~F ] ^ ` c 	_b				

FGghqr~ !VX_axz	139:RT\]stTUwx()MOVWqr+7 !*+018:CDKLnpz{	;<Y[VWlm?@yz+6CHrs
2;DM{)*FGX[
!*!T"Y"s"x"""##i#j#%%%%H&&(())V)W)))))*(***++ +)+++,,p,y,,,,,,,,-
------$-%---/-2-3->-@-C-D-W-Y-\-]-}--------------......$.%.0.1.7.9.C.D.O.P.R.S.Y.Z.e.f.l.m.v.w.....//m0n0[1\122222222332535666677V8W88888AAD DEEmFrF;G<GwKyKKK4N5NZZZZ^ҮXY/0ĵt}Թչ^_wxԺպA(C)CiEjE(F*FJJQQ#U$UUUVVXXpYqYhZiZsZtZZZ>[?[H\I\Z\[\f\g\\\]]^^__aaKhThk kkkn&'EFz{09=Rggg	h
hohҬӬ˭̭=>TU'(NOstyzyz	QR}~TU% A F ] ^ ` c !z	T]OW:Dp{,----%-/-3-@-D-Y-]-----..1.9.P.S.f.m...r`y```````a a.a6aIaPac&c4c<cJcTceckccccc2d>dEdKdmdvd r%r2r;r_rkrOV>Ekrׅ߅+2†Ɇ
LC~F ` c SERVERjC:\Documents and Settings\ADMIN\Application Data\Microsoft\Word\2#162#9I7-1B!14- @-*2#1.asdSERVER0F:\OFFICEWORK\WORD\@#4H!I1 Visual Foxpro.docSERVER|C:\Documents and Settings\ADMIN\Application Data\Microsoft\Word\2#162#9I7-1B!14- @#4H!I1 Visual Foxpro.asdSERVER0F:\OFFICEWORK\WORD\@#4H!I1 Visual Foxpro.docNAKHARINC:\Documents and Settings\NAKHARIN\Application Data\Microsoft\Word\2#162#9I7-1B!14- @#4H!I1 Visual Foxpro.asdNAKHARIN0F:\OFFICEWORK\WORD\@#4H!I1 Visual Foxpro.docNAKHARIN0F:\OFFICEWORK\WORD\@#4H!I1 Visual Foxpro.doc"n6
t
+,f ~Mu/*e2J0[|E4G=(GDjiSfSPXjW@!cjVMhX=
lRDnu, zV^`.^`.pp^p`.@@^@`.^`.^`.^`.^`.PP^P`.^`.^`.pp^p`.@@^@`.^`.^`.^`.^`.PP^P`.^`.^`.pp^p`.@@^@`.^`.^`.^`.^`.PP^P`.^`.^`.pp^p`.@@^@`.^`.^`.^`.^`.PP^P`.^`.^`.pp^p`.@@^@`.^`.^`.^`.^`.PP^P`.^`.^`.pp^p`.@@^@`.^`.^`.^`.^`.PP^P`.^`.^`.pp^p`.@@^@`.^`.^`.^`.^`.PP^P`.^`.^`.pp^p`.@@^@`.^`.^`.^`.^`.PP^P`.^`.^`.pp^p`.@@^@`.^`.^`.^`.^`.PP^P`.^`.^`.pp^p`.@@^@`.^`.^`.^`.^`.PP^P`.^`.^`.pp^p`.@@^@`.^`.^`.^`.^`.PP^P`.^`.^`.pp^p`.@@^@`.^`.^`.^`.^`.PP^P`.^`.^`.pp^p`.@@^@`.^`.^`.^`.^`.PP^P`.^`.^`.pp^p`.@@^@`.^`.^`.^`.^`.PP^P`.iS2J0zt,fG=Dnu!c~Mu/XjW|E4VMh"n6

l
0b
>9H?Gdն'8\SE?@DL:툨tp㠅̰lh%Qګ,GbzZrۦx̉2ƀ2@o,X
b<޶X3uRxvblJ8)֋Tvv,sk:X]"֪kƐmZCp@R3
@Ɵ5Hּ\J͖vއE$',vHnl&`,gH`*vl)64¢|`br~U*F L |	Q4pzD*3
tSuIG"H漫X,hDXvd.V|(*n)V\·	f0Ӵ"+u0,2
41NR\T9,tj|r/6pZ\v>J~A"S\̉L4r>*l2^`ahr!W`yz	2:ST]tx)NOWr,-7!+19:DLop{
<Z[,------%-.-/-3-?-@-D-X-Y-]-~--------....%.0.1.8.D.O.P.S.Z.e.f.m.w...R`[`c`k`q`r`y`~```````````````a
aaa a&a+a-a.a6a<aFaHaIaPaUa_aaababbbbccc&c3c4c<cIcJcTcdceckcccccccdd"d1d2d>dDdEdKdldmdvdddqqr r%r1r2r;r^r_rkrrrvĂ߂$4<CGNOV`ru|ƒɃʃ"=>EOcjkr}҄ ,34=IPQ|օׅ߅$*+29=EFdy†Ɇφ׆܆	
 ()q٦,_§ç> !-..`cc|||@&#*,-6>OPYa{|IPWYZ_gstz{|"#-&'./5=UVwxmn*++,--jE)F*F}u||o
$&/19:@GIKRSn!!%!9!@!A!G!s!!!!!!!!"""""### #5#6#C#`#####Q$R$^${$$$$$%%%%%)111p~qqqr	rk9:@BP]_`hp#23;JKRhip+,;GV#PQahrbcrzc @
77777777 7"7(7*7+7.707172747677W8W9W;W<W=W>W?WAWEWFWGWHKMQRSTUVXZ^`aceghijlnopqrsvwyz{|ZZZZ֣֥֮֨֩֬P
P
 !&')+,-/0124589:=?@ACDFHFJFKFNFOFPFRFUFVFXF\F^F_F`FaFbFcFdFeFfFgFiFjFlFoFvFwFyFzF{FFFFFFFFFFFFFFFFFFFFFFFFTTTTTTTTTTTTTTTTTTTTTTqqqqqqqqqqqqqqqqqqqqqqq q!q'q+q0q6q<q?qBqDqFqGqHqIqKqLqMqNqOqPqRqTqUqVqWqXqZq^q_q`qaqdqeqgqhqkqlqnqpqqqsquqwqzq{q|q}q~qqqqqq88==========nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnSSSSSSSSSSSSdddd'd)d+d-d/d4d9d<d=>CJKMNOTV\]^_biklnrtu|}PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPOOnn11111xx[[[[[[[	[
[[[
[[[[[[b PPP$@PPPP PD@P$PL@P(P*P,P2P4P<P>P@PBPNPRPTPZP^P`PbPfPjP@PnP@PrPtPvPxP@P|PPPP@PPPPPPPPPPPPPPP@PPPPPPPPPPPPPPPPPPPPPP @PP(@PP(P.P`@P2P6P<P>PDP@PbPhPnPrPtPvPzP~PPPPPPPPPPPPPPPPPPPPPPP@PP@PPPPPPPPPPPPP
PPPPP P"P&P(P*P,P0P2P8P:P<PBP@PHP@PLPNPRP@PXPZP`PbPdPhPnPpPtP|PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP"P$P&PP@P*P.P2P4P:PBPFPHPRPTPVPXP\P`PfPhPjPnPxPzP|P@PP@PPPPPPPPPPPPPPPPPPPPPPPPPPP"P.P:P@PFPJPNPPPRPTPXPZP\P^P`PbPfPjPlPnPpPrPvP~PPPPPPPPPPPPPP	@PPPPPPPPPPPPP	@PP	@PP	@PP	@PPPPPPPPPP
@PPPPPPPPP"P*Pd
@P4P>PFPLPPPRPVPZP^P`PdPhPpPrPvPxPzP~PPPPPPPPPPPPPPPP@PPPPPPPPPP@PP@PPPPPPPPPP(P.P`@P2P<PJPLPPPRPTP^PbPnPpPrPtPzPPPPPPPPPPh
@PPt
@PPPPPPPPPPPPPPPP
PPPPPPP P$P&P*P.P0P2P8P>PFPHPJPLPNPRPTP@P\P`P@PlP@PrP@PvPxPzP~P@PP@PPP$@PP8@PPPPPPPPPPPPPPPPP@PPPPPPPPPPPUnknownGz Times New Roman5Symbol3&z Arial?Angsana New=&Cordia New"1h)#f--`̘fB!0d-2@#4H!I1 Visual Foxpro SERVERNAKHARINOh+'0	(
DP\
ht|j鹡Ѻ Visual Foxpro SERVERERVERVNormal	NAKHARINѺ 4KHMicrosoft Word 9.0F@@:i
@BQ@
kP@=Q̘f՜.+,D՜.+,Lhp|
jpB-	鹡Ѻ Visual Foxpro ͧV 8@_PID_HLINKSjAV-kV$http://kasem.sstplus.com/thdate.zip@http://msdn.microsoft.com/workshop/author/htmlhelp/htmlhelp.exeHL'http://kasem.sstplus.com/chapter11.htmstory2HO'http://kasem.sstplus.com/chapter11.htmstory1&http://kasem.sstplus.com/chapter9.htmO3(http://kasem.sstplus.com/chapter9-4.htm3*1H SELECT - SQLQ%http://kasem.sstplus.com/invoice.zip&http://kasem.sstplus.com/custgrd1.zipQ%http://kasem.sstplus.com/custgrd.zipJ%http://kasem.sstplus.com/custinq.zip&http://kasem.sstplus.com/chapter7.htm&http://kasem.sstplus.com/chapter9.htm86i(http://kasem.sstplus.com/chapter9-2.htm	SHORTCUT&+f(http://kasem.sstplus.com/chapter9-2.htmMENUHZ&http://kasem.sstplus.com/eventest.zipIN%http://kasem.sstplus.com/toolbar.zip]B&http://kasem.sstplus.com/calcultr.zipi**#http://kasem.sstplus.com/ithai.zipno'$http://kasem.sstplus.com/num2ch.zip#.$&http://kasem.sstplus.com/chapter3.htm 2#-I26A*1!1L (Relative=Z!&http://kasem.sstplus.com/chapter3.htm2#-I26A*!9#L (Absolute9
&http://kasem.sstplus.com/chapter2.htm3*1H5HC+I32I3F1a&http://kasem.sstplus.com/chapter2.htm3*1H5H@5H"'12#*-L	http://kasem.sstplus.com/&B-@-@#@-#L1'@%(Numeric Operators)dYhttp://kasem.sstplus.com/#B-@-@#@-#L@#5"@5"(Relational[http://kasem.sstplus.com/%B-@-@#@-#L##0(Logical Operators)xkhttp://kasem.sstplus.com/)B-@-@#@-#L'15HA%0@'%2 (Date and Date3http://kasem.sstplus.com/ B-@-@#@-#L1'-1)# (CharacterQ	http://kasem.sstplus.com/2#*#I24L (Buildingyhttp://kasem.sstplus.com/B-@-@#@-#L (Operators)`http://kasem.sstplus.com/2#@GI-!9% (Storing Data)N-http://kasem.sstplus.com/)#0@ -I-!9%A%04%L (Data and Field :]SE:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7001.jpg:^SE:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7002.jpg:_dSE:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7003.jpg:XSE:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7004.jpg:Y	SE:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7005.jpg:ZSE:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7006.jpg:YSE:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7005.jpg:Y`(	SE:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7005.jpg:_P
SE:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7003.jpg:_xSE:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7003.jpg:YSE:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7005.jpg#X,
SE:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7008.gif:_SE:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7003.jpg4RSE:\vfp\@#5"@5"B#A#! Visual FoxPro7_files\kasem_files\chapter8_files\c8001.jpg-].SE:\vfp\@#5"@5"B#A#! Visual FoxPro7_files\kasem_files\chapter8_files\c8002.gif4PSE:\vfp\@#5"@5"B#A#! Visual FoxPro7_files\kasem_files\chapter8_files\c8003.jpg@l(HUE:\vfp\@#5"@5"B#A#! Visual FoxPro9_files\kasem_files\chapter9-2_files\c9202.gifmiUE:\vfp\@#5"@5"B#A#! Visual FoxPro9_files\kasem_files\chapter9-2_files\c9203.gifjhqUE:\vfp\@#5"@5"B#A#! Visual FoxPro9_files\kasem_files\chapter9-2_files\c9204.gifkzUE:\vfp\@#5"@5"B#A#! Visual FoxPro9_files\kasem_files\chapter9-2_files\c9205.gifhĄUE:\vfp\@#5"@5"B#A#! Visual FoxPro9_files\kasem_files\chapter9-2_files\c9206.gifiUE:\vfp\@#5"@5"B#A#! Visual FoxPro9_files\kasem_files\chapter9-2_files\c9207.gifirUE:\vfp\@#5"@5"B#A#! Visual FoxPro9_files\kasem_files\chapter9-2_files\c9207.gif?ZVE:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c7003.jpg?VE:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c7003.jpg?VE:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c7003.jpg(VE:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c9301.gif(yVE:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c9302.gif(VE:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c9303.gif(–VE:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c9304.gif(2 VE:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c9305.gif(\!VE:\vfp\@#5"@5"B#A#! Visual FoxPro10_files\kasem_files\chapter9-3_files\c9306.gif)#VE:\vfp\@#5"@5"B#A#! Visual FoxPro11_files\kasem_files\chapter9-4_files\c9402.gif)$VE:\vfp\@#5"@5"B#A#! Visual FoxPro11_files\kasem_files\chapter9-4_files\c9403.gif*J%VE:\vfp\@#5"@5"B#A#! Visual FoxPro12_files\kasem_files\chapter9-5_files\c9501.gif*&VE:\vfp\@#5"@5"B#A#! Visual FoxPro12_files\kasem_files\chapter9-5_files\c9503.gif*t'VE:\vfp\@#5"@5"B#A#! Visual FoxPro12_files\kasem_files\chapter9-5_files\c9504.gif*(VE:\vfp\@#5"@5"B#A#! Visual FoxPro12_files\kasem_files\chapter9-5_files\c9505.gif*<-VE:\vfp\@#5"@5"B#A#! Visual FoxPro12_files\kasem_files\chapter9-5_files\c9508.gif*E.VE:\vfp\@#5"@5"B#A#! Visual FoxPro12_files\kasem_files\chapter9-5_files\c9509.gifj{/UE:\vfp\@#5"@5"B#A#! Visual FoxPro14_files\kasem_files\chapter10_files\c9001.gif:H0XE:\vfp\@#5"@5"B#A#! Visual FoxPro14_files\kasem_files\chapter10_files\Checkmrk.jpg6YB1WE:\vfp\@#5"@5"B#A#! Visual FoxPro14_files\kasem_files\chapter10_files\c10-002.gif6Z2WE:\vfp\@#5"@5"B#A#! Visual FoxPro14_files\kasem_files\chapter10_files\c10-001.gifj5UE:\vfp\@#5"@5"B#A#! Visual FoxPro16_files\kasem_files\chapter11_files\c1103.gif'6VE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image1.gif'7VE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image2.gif'8VE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image3.gif'"9VE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image4.gif'.:VE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image5.gif'8;VE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image6.gif'6<VE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image7.gif'=VE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image8.gif	'>VE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image9.gif!Pp?WE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image11.gif!Q@WE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image10.gif!SAWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image12.gif!UrBWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image14.gif!RCWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image13.gif!TTDWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image15.gif!WEWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image16.gif!VRFWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image17.gif!YxGWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image18.gif!XHWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image19.gif"PIWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image21.gif"QJWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image20.gif"SKWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image22.gif"R8LWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image23.gif"UMWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image24.gif"T#NWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image25.gif"W%OWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image26.gif"V&PWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image27.gif"YD*QWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image28.gif"X+RWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image29.gif#Q.SWE:\vfp\@#5"@5"B#A#! Visual FoxPro13_files\kasem_files\chapter13_files\Image30.gif(vTSE:\vfp\@#5"@5"B#A#! Visual FoxPro17_files\kasem_files\classdate_files\th1.jpg#WSE:\vfp\@#5"@5"B#A#! Visual FoxPro6_files\kasem_files\chapter7_files\c7007.gif	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^`abcdefhijklmnopqrstuvwxyz{|}~Root Entry	F0AQData
_1TablebDWordDocument
SummaryInformation(_DocumentSummaryInformation8g$XCompObjhObjectPool0AQ0AQ
	F͡ Microsoft Word
MSWordDocWord.Document.89q

Youez - 2016 - github.com/yon3zu
LinuXploit