程序设计基础

上传人:工**** 文档编号:568507315 上传时间:2024-07-25 格式:PPT 页数:53 大小:365KB
返回 下载 相关 举报
程序设计基础_第1页
第1页 / 共53页
程序设计基础_第2页
第2页 / 共53页
程序设计基础_第3页
第3页 / 共53页
程序设计基础_第4页
第4页 / 共53页
程序设计基础_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《程序设计基础》由会员分享,可在线阅读,更多相关《程序设计基础(53页珍藏版)》请在金锄头文库上搜索。

1、1 1第五章第五章 程序设计基础程序设计基础程序设计概述程序设计概述结构化程序设计结构化程序设计面向对象的程序设计基础面向对象的程序设计基础2 25.1 程序设计概述程序设计概述本节重点:本节重点:程序设计的概念程序设计的概念程序设计的方法程序设计的方法面向对象程序设计的特性面向对象程序设计的特性3 35.1 程序设计概述程序设计概述 程序设计程序设计:利用系统所提供的设计工具,按照程序设计语言:利用系统所提供的设计工具,按照程序设计语言的规范描述解决问题的算法并进行程序编写的过程。的规范描述解决问题的算法并进行程序编写的过程。 程序设计方法程序设计方法:结构化程序设计(:结构化程序设计(SP

2、)和面向对象的程序设和面向对象的程序设计(计(OOP)。)。 结构化程序设计结构化程序设计遵循四条遵循四条原则原则:自顶向下、逐步求精、模块化和限制使用转移:自顶向下、逐步求精、模块化和限制使用转移语句。语句。程序流程使用三种基本程序流程使用三种基本结构结构来控制:来控制:顺序顺序、分支分支和和循环循环。本质本质:以功能为主进行设计,其方法是自顶向下、功能分解,:以功能为主进行设计,其方法是自顶向下、功能分解,它从外部功能上模拟客观世界,其开发过程通常是从它从外部功能上模拟客观世界,其开发过程通常是从“做什么做什么”到到“如何做如何做”。优点优点:系统结构性强、便于设计和理解。:系统结构性强、

3、便于设计和理解。4 45.1 程序设计概述程序设计概述面向对象的程序设计面向对象的程序设计基本思想基本思想:世界由各种对象组成,任何事物都是对象,是:世界由各种对象组成,任何事物都是对象,是某个对象类的实例,复杂的对象可由较简单的对象组合而某个对象类的实例,复杂的对象可由较简单的对象组合而成。成。基石基石:对象和类。:对象和类。对象对象:是数据及作用于这些数据之上的操作结合在一起所:是数据及作用于这些数据之上的操作结合在一起所构成的独立实体的总称。构成的独立实体的总称。类类:一组具有相同数据结构和相同操作的对象的描述。:一组具有相同数据结构和相同操作的对象的描述。5 55.1 程序设计概述程序

4、设计概述OOP特性:特性:封装性封装性:指对象是数据和处理该数据的方法所构成的整体,:指对象是数据和处理该数据的方法所构成的整体,外界只能看到其外部特性,其内部特性对外不可见。外界只能看到其外部特性,其内部特性对外不可见。继承性继承性:反映的是类和类之间不同的抽象级别,根据继承:反映的是类和类之间不同的抽象级别,根据继承与被继承的关系,类可分为基类和衍生类,基类也称为父与被继承的关系,类可分为基类和衍生类,基类也称为父类,衍生类也称为子类。类,衍生类也称为子类。多态性多态性:在形式上表现为一个方法根据传递给它的参数的:在形式上表现为一个方法根据传递给它的参数的不同,可以调用不同的方法体,实现不

5、同的操作。不同,可以调用不同的方法体,实现不同的操作。6 65.1 程序设计概述程序设计概述OOP优点:优点:再现人类认识事物的思维方式和解决问题的工作方式;再现人类认识事物的思维方式和解决问题的工作方式;能尽量逼真地模拟客观世界及其事物;能尽量逼真地模拟客观世界及其事物;很好地实现了信息隐藏,由此建立在类及其继承性基础上很好地实现了信息隐藏,由此建立在类及其继承性基础上的重用能力可应付复杂的大型软件开发。的重用能力可应付复杂的大型软件开发。7 75.2 结构化程序设计结构化程序设计本节重点:本节重点:顺序结构顺序结构分支结构(分支结构(IFELSEENDIF、DO CASEENDCASE)循

6、环结构(循环结构(FORENDFOR、DO WHILEENDDO、SCANENDSCAN)过程与用户自定义函数过程与用户自定义函数8 85.2 结构化程序设计结构化程序设计 结构化程序设计是指根据不同的情况和条件,控制程结构化程序设计是指根据不同的情况和条件,控制程序去执行相应操作的语句序列。序去执行相应操作的语句序列。 VFP中程序结构主要分为:中程序结构主要分为:顺序结构顺序结构、分支结构分支结构、循循环结构环结构,以及过程,以及过程/函数调用,且这些结构可以相互嵌套,函数调用,且这些结构可以相互嵌套,即一种程序结构中可包含任何的程序结构。一个程序从总即一种程序结构中可包含任何的程序结构。

7、一个程序从总体上来说是一个顺序结构,其中的某个(些)体上来说是一个顺序结构,其中的某个(些)“子部分子部分”则可能是各种结构的组合和嵌套。则可能是各种结构的组合和嵌套。9 95.2.1 创建、修改和运行程序创建、修改和运行程序1.创建和修改程序文件创建和修改程序文件(1)创建程序)创建程序“文件文件/新建新建”“常用常用”工具栏中的工具栏中的“新建新建”利用项目管理器中的利用项目管理器中的“新建新建”命令命令MODIFY COMMAND FileName|?(2)修改程序修改程序“文件文件/打开打开”“常用常用”工具栏中的工具栏中的“打开打开”利用项目管理器中的利用项目管理器中的“修改修改”命

8、令命令MODIFY COMMAND注:注:.bak文件是备份文件,当一已存在的程序对其个修改后保文件是备份文件,当一已存在的程序对其个修改后保存,则修改前和程序以存,则修改前和程序以.bak文件保存。文件保存。10105.2.1 创建、修改和运行程序创建、修改和运行程序2. 运行程序运行程序“常用常用”工具栏的工具栏的“!”项目管理器中项目管理器中“运行运行”按钮按钮DO命令命令 DO 程序文件名程序文件名 WITH 参数参数11115.2.2 顺序结构顺序结构 顺序结构顺序结构,是指程序运行时,是指程序运行时按照语句排列的先后顺序按照语句排列的先后顺序,一条接一条地依次一条接一条地依次执行执

9、行,程序的执行流程如图,程序的执行流程如图5-1所示,先所示,先执行语句执行语句A,然后执行语句然后执行语句B。它是它是程序中最基本的结构,程序中最基本的结构,也是任一程序的主体结构。也是任一程序的主体结构。例例5.1 下列程序的功能是计算圆的面积,其半径为下列程序的功能是计算圆的面积,其半径为4.12。 store 4.12 to p s=p*p*3.14 ?圆面积为:圆面积为:, S例例5.2 下列程序的功能是显示一个字符串在另一个下列程序的功能是显示一个字符串在另一个 字符串中的位置。字符串中的位置。 C=“Visual FoxPro” CC=“Fox” ?AT(CC,C)AB图图5-1

10、 顺序结构顺序结构12125.2.3 分支结构分支结构 分支结构分支结构,是指程序运行过程中,根据条件执行不同,是指程序运行过程中,根据条件执行不同的操作。在的操作。在VFP中,有两种实现分支结构的语句:中,有两种实现分支结构的语句:IFELSEENDIF语句和语句和DO CASEENDCASE语句。语句。1.IFELSEENDIF语句语句(简称简称“IF语句语句”)是根据逻辑表达式的值,有选择地执行一组语句。语法格式:是根据逻辑表达式的值,有选择地执行一组语句。语法格式: IF 逻辑表达式逻辑表达式 命令组命令组1 ELSE 命令组命令组2 ENDIFENDIF语句组语句组1语句组语句组2逻

11、辑表达式逻辑表达式IF.F.T.13135.2.3 分支结构分支结构 IF语句在使用时,其中的语句组语句在使用时,其中的语句组1或语句组或语句组2中,可以包中,可以包含含IF语句,则称为语句,则称为IF语句的结构嵌套。语句的结构嵌套。例例5.3 下列程序的功能是根据变量下列程序的功能是根据变量x的值决定变量的值决定变量y的值(为的值(为1或或-1)。)。 IF x0 y=1 ELSE y=-1 ENDIF14145.2.3 分支结构分支结构例例5.4 下面的程序的功能是解一元二次方程。其中,下面的程序的功能是解一元二次方程。其中,PARAMETERS语句用于接收程序的参数(三个参数语句用于接收

12、程序的参数(三个参数a、b、c分别为对应于一元二次方程的系数)。分别为对应于一元二次方程的系数)。 上述程序在运行时,必须使用具有上述程序在运行时,必须使用具有WITH子句的子句的DO命令。命令。2. DO CASEENDCASE语句语句 IF语句一般是二分支,若判断多于两种可能,有两种方语句一般是二分支,若判断多于两种可能,有两种方法实现法实现: 一是在一是在IFELSEENDIF中嵌套中嵌套,IFELSEENDIF. 二是二是DO CASEENDCASE.15155.2.3 分支结构分支结构其其语法格式:语法格式:DO CASE CASE 逻辑表达式逻辑表达式1 命令组命令组1 CASE

13、逻辑表达式逻辑表达式2 命令组命令组2 CASE 逻辑表达式逻辑表达式n 命令组命令组n OTHERWISE 其他命令组其他命令组ENDCASE例例5.5 用用DO CASE语句实现例语句实现例5.4中程序的功能。中程序的功能。ENDCASEDO CASE语句组语句组1逻辑表达式逻辑表达式1.T.F.语句组语句组2逻辑表达式逻辑表达式2.T.F.F.F.语句组语句组2逻辑表达式逻辑表达式n.T.其他语句组其他语句组16165.2.4 循环结构循环结构 循环就是使得一组语句循环就是使得一组语句重复执行若干次重复执行若干次,可以预先指定,可以预先指定要循环的次数,也可以格局某个条件控制循环。在要循

14、环的次数,也可以格局某个条件控制循环。在VFP中,中,实现循环结构的语句有三种:实现循环结构的语句有三种:FORENDFORDO WHILEENDDOSCANENDSCAN 其中,循环开始的语句称为循环的其中,循环开始的语句称为循环的入口入口,如,如FOR、DO WHILE、SCAN,循环结束语句称为循环的循环结束语句称为循环的出口出口,如,如ENDFOR、ENDDO、ENDSCAN,而入口和出口之间的一而入口和出口之间的一组语句称为循环体。组语句称为循环体。17175.2.4 循环结构循环结构1.FORENDFOR循环结构循环结构 事先事先知道循环的次数知道循环的次数,语法格式:,语法格式:

15、FOR 循环变量循环变量=初值初值 TO 终值终值 STEP 步长步长 循环体循环体ENDFOR | NEXT 循环变量是个计数器,当循环变量是个计数器,当初值初值终值终值时,时,步长步长0,则循,则循环变量为一个环变量为一个递增递增数列;当数列;当初值初值终值终值时,时,步长步长64 AND nc0 p=left(c,1)+p c=substr(c,2)enddo?cc+“的反序为的反序为”+p25255.2.4 循环结构循环结构5.11 下列程序的功能是将由任意字符(包括汉字)组成的字符串下列程序的功能是将由任意字符(包括汉字)组成的字符串反序显示。反序显示。STORE VFP程序设计程序

16、设计 TO c,ccP=SPACE(0)DO WHILE LEN(c)0 X=ASC(LEFT(c,1) IF X127 i=2 ELSE i=1 ENDIF P=LEFT(c,i)+P c=SUBSTR(c,i+1)ENDDO ?cc+“的反序为的反序为”+P26265.2.4 循环结构循环结构5.12 下列程序的功能是统计字符串中大、小写英文字母的个数。下列程序的功能是统计字符串中大、小写英文字母的个数。CLEARC=Visual FoxProcc=cNmax=0Nmin=0DO WHILE C DO CASE CASE ASC(LEFT(C,1)64 AND ASC(LEFT(C,1)9

17、6 AND ASC(LEFT(C,1)123 Nmin=Nmin+1 ENDCASE C=SUBS(C,2)ENDDOWAIT WINDOWS “大写字符的个数:大写字符的个数:”+STR(Nmax)+“小写字符的个小写字符的个;数:数:+STR(Nmin)27275.2.4 循环结构循环结构 循环体中可以含有循环体中可以含有EXIT语句,语句, EXIT是是退出退出语句,则当执行语句,则当执行到到EXIT语句时,无论循环结束条件是否满足,都将语句时,无论循环结束条件是否满足,都将退出循环退出循环。例例5.13 下列程序的功能是对表达式下列程序的功能是对表达式1/(123)+1/(234)+1

18、/n(N+1)(n+2)进行求和,并且要求进行求和,并且要求计算结构精度小于计算结构精度小于0.0000001。CLEARnS=0i=1DO WHILE .T. nS=nS+1/(i*(i+1)*(i+2) IF 1/(i*(i+1)*(i+2)0.0000001 EXIT ENDIF i=i+1ENDDO 28285.2.4 循环结构循环结构3. SCANENDSCAN循环语句循环语句 该循环仅用于处理表的记录,即该循环仅用于处理表的记录,即表扫描型循环表扫描型循环。若对表。若对表中中所有记录执行某一操作所有记录执行某一操作,可以使用该语句。随着记录指针,可以使用该语句。随着记录指针的移动,

19、的移动,SCAN循环对每条记录执行相同的命令组。语法格循环对每条记录执行相同的命令组。语法格式:式:SCAN 范围范围 FOR 条件表达式条件表达式 循环体循环体ENDSCAN范围:范围:ALL REST RECORD n NEXT n是否到指定范围的结尾是否到指定范围的结尾循环体循环体ENDSCANSCAN.F.T.29295.2.4 循环结构循环结构例例5.14 下列程序的功能是显示所有籍贯为下列程序的功能是显示所有籍贯为“江苏江苏”的学生姓名的学生姓名和籍贯。和籍贯。CLEARuse jsscan for 江苏江苏$jg ? xm, jgendscan30305.2.5 过程和自定义函数

20、过程和自定义函数 用户可以将经常执行的具有某种功能的一段代码独立出来,用户可以将经常执行的具有某种功能的一段代码独立出来,创建一个过程或用户自定义函数(创建一个过程或用户自定义函数(UDF)。)。过程过程通常用于通常用于实现实现某一处理功能某一处理功能,而,而函数函数用于用于实现某一处理功能实现某一处理功能且有且有返回值返回值。1.过程与自定义函数的定义过程与自定义函数的定义PROCEDURE 过程名过程名 PARAMETERS形参变量形参变量1,形参变量,形参变量2, 命令组命令组 RETURN 表达式表达式ENDPROCFUNCTION 函数名函数名 PARAMETERS形参变量形参变量1

21、,形参变量,形参变量2, 命令组命令组 RETURN 表达式表达式ENDFUNC31315.2.5 过程和自定义函数过程和自定义函数 Parameters语句用于指定自定义函数和过程中的语句用于指定自定义函数和过程中的参数参数,参数最多可有参数最多可有27个,;个,;RETURN语句用于指定过程或自定语句用于指定过程或自定义函数的义函数的返回值返回值,表达式,表达式省略省略时返回值为时返回值为.T.。例例5.15 下列自定义函数下列自定义函数ntoc( )的功能是一个的功能是一个09之间的阿拉伯之间的阿拉伯数字转换为一个数字转换为一个“零零九九”之间的中文字符。例如,之间的中文字符。例如,nt

22、oc(7)的返回值为的返回值为“七七”。FUNCTION ntoc PARAMETERS pDigit LOCAL cString CString=“零一二三四五六七八九零一二三四五六七八九” RETURN SUBSTR(cString,pDigit*2+1,2)ENDFUNC32325.2.5 过程和自定义函数过程和自定义函数2. 过程与自定义函数的调用过程与自定义函数的调用使用函数的调用方式(与系统函数的调用方法相同)使用函数的调用方式(与系统函数的调用方法相同)使用使用DO命令:命令: DO 过程名过程名 IN 过程文件名过程文件名WITH 参数参数自定义函数和过程的调用自定义函数和过程

23、的调用区别区别主要在于使用主要在于使用函数函数方式调用方式调用时时有返回值有返回值。如过程或函数的定义是保存在单独的过程文件中时,也可如过程或函数的定义是保存在单独的过程文件中时,也可以在调用过程或自定义函数前应使用命令:以在调用过程或自定义函数前应使用命令: SET PROCEDURE TO 过程名过程名 33335.2.5 过程和自定义函数过程和自定义函数例例5.16 下列程序可用于计算下列程序可用于计算S=1!+2!+3!+4!+5!。s=0FOR i=1 TO 20 s=s+fjc(i)ENDFORFUNCTION fjc PARAMETER x p=1 FOR n=1 TO x p=

24、p*n ENDFOR RETURN pENDFUNC34345.3 面向对象的程序设计基础面向对象的程序设计基础本节重点:本节重点:什么是对象的属性、事件和方法?什么是对象的属性、事件和方法?VFP基类有哪些?容器类有哪些?基类有哪些?容器类有哪些?基类最小属性集、最小事件集?基类最小属性集、最小事件集?对象的引用方法?事件和方法的调用?对象的引用方法?事件和方法的调用?常用的事件有哪些?常用的事件有哪些?35355.3.1 类和对象概述类和对象概述 类类是是一个具有相同行为的一个具有相同行为的对象的抽象对象的抽象,所有对象的属,所有对象的属性、事件和方法都在类中定义,性、事件和方法都在类中定

25、义,对象对象仅仅是类的一个仅仅是类的一个实例实例。属性:属性:属性是对象的属性是对象的特征特征或某一方面的或某一方面的行为行为,用户可以,用户可以新新建属性建属性。 事件:事件:事件是对象能够事件是对象能够识别识别的一个的一个动作动作,用户可以编写代,用户可以编写代码对此动作进行响应。码对此动作进行响应。 用户用户不不可以可以新建事件新建事件。方法:方法:方法是对象能够方法是对象能够执行执行的一个的一个操作操作。可以理解为是对。可以理解为是对象所具有的功能。象所具有的功能。 用户可以用户可以新建方法新建方法。36365.3.2 基类基类 在在VFP中,类可分为三大类:中,类可分为三大类:基类基

26、类、子类子类和和用户自定义用户自定义类类。基类(基类(Base Class):):VFP系统提供系统提供的内部定义好的类的内部定义好的类(如(如VFP表单、控件等),这些类可以表单、控件等),这些类可以直接使用直接使用,也可以,也可以在此基础之上修改创建出新的类,添加自己需要的功能。在此基础之上修改创建出新的类,添加自己需要的功能。 子子类:以其它类为起点以其它类为起点创建新类创建新类,新类被称为子类(起点,新类被称为子类(起点类被称为父类),子类将类被称为父类),子类将继承继承所有所有父类父类的的特征特征(称为(称为“继继承性承性”)。)。 用用户自自定定义类:是基于一个或多个是基于一个或多

27、个VFP基类,由用户创建基类,由用户创建的类,可以对一个现有的的类,可以对一个现有的VFP类或任何自定义类添加功能。类或任何自定义类添加功能。37375.3.2 基类基类 根据基类是否能根据基类是否能包容其他类包容其他类,基类也分为两种:,基类也分为两种:容器容器类类和和控件类控件类(也成为非容器类)。(也成为非容器类)。容器类:容器类:是可以是可以包含其它类包含其它类的基类。对于容器型对象来说,的基类。对于容器型对象来说,无论在设计时还是在运行时,均可以将容器型对象作为一无论在设计时还是在运行时,均可以将容器型对象作为一个个整体进行操作整体进行操作,也可以,也可以分别对分别对其包容的其包容的

28、对象对象进行进行处理处理。容器类有:容器类有:表单集表单集、表单表单、表格表格、表格列表格列、页框页框、页面页面、命令按钮组命令按钮组、选项按钮组选项按钮组、工具栏工具栏、容器容器等。等。 控件类:控件类:可以包含在容器类中但可以包含在容器类中但不可以包含其它类不可以包含其它类的基类。的基类。除了上述容器类以外的控件都属于控件类。除了上述容器类以外的控件都属于控件类。 此外,根据是否此外,根据是否可视可视(即运行时是否可见),基类又(即运行时是否可见),基类又分为分为可视类可视类和和非可视类非可视类。38385.3.2 基类基类VFP常用基类常用基类 *表示该类是容器类的组成部分,不能基于它们

29、创建子类;斜体字表表示该类是容器类的组成部分,不能基于它们创建子类;斜体字表示该类是示该类是feiCheckBox 复选框复选框 Cloumn 列列 *ComboBox 组合框组合框CommandButton命令按钮命令按钮CommandGroup命令按钮命令按钮Container 容器容器 Control 控件控件EditBox 编辑框编辑框Form 表单表单FormSet 表单表单集集Grid 表格表格Header 列表头列表头 *Hyperlink 超级链接超级链接Image 图像图像Label 标签标签Line 线条线条ListBox 列表框列表框OLE 绑定型控件绑定型控件 OLE

30、容器控件容器控件OptionButton选项按钮选项按钮 *OptionGroup 选项按钮组选项按钮组Page 页页 *PageFrame 页页框框Separator 分隔符分隔符Shape 形状形状Spinner 微调器微调器 TextBox 文本框文本框Timer 计时器计时器ToolBar 工具栏工具栏39395.3.2 基类基类VFP的容器类的容器类容器类容器类能能包含的对象包含的对象容器容器任意控件任意控件工具栏工具栏任意控件、页框、容器任意控件、页框、容器表单集表单集表单、工具栏表单、工具栏表单表单页框、任意控件、容器或自定义对象页框、任意控件、容器或自定义对象表格表格表格列表格

31、列表格列表格列列表头以及除表单、表单集、工具栏、计时器和其他列以外的任列表头以及除表单、表单集、工具栏、计时器和其他列以外的任意对象意对象页框页框页面页面页面页面任意控件、容器和自定义对象任意控件、容器和自定义对象命令按钮组命令按钮组命令按钮命令按钮选项按钮组选项按钮组选项按钮选项按钮40405.3.2 基类基类基类的最小属性集基类的最小属性集属性属性说明说明Class该类该类属于任何类型属于任何类型BaseClass该类由何种基类派生而来该类由何种基类派生而来ClassLibrary该类从属于哪种类库该类从属于哪种类库ParentClass对象所基于的类。若该类直接由对象所基于的类。若该类直

32、接由VFP基类派生而来,基类派生而来,则其属性值与则其属性值与BaseClass属性值相同。属性值相同。41415.3.2 基类基类基类的最小事件集基类的最小事件集事件事件说明说明Init当当对象创建时激活对象创建时激活Destroy当当对象从内存中释放时激活对象从内存中释放时激活Error当类当类中的事件或方法程序中发生错误时激活中的事件或方法程序中发生错误时激活42425.3.2 处理对象处理对象1.引用对象引用对象 要对某个对象(比如一个按钮)进行属性设置,一定要对某个对象(比如一个按钮)进行属性设置,一定要先要先“找到找到”该对象,这就叫该对象,这就叫引用引用。 而而VFPVFP中,控

33、件的摆放有很严格的中,控件的摆放有很严格的“层次层次”关系。关系。在引在引用对象时,首先要弄清该对象相对于容器层次的关系。犹用对象时,首先要弄清该对象相对于容器层次的关系。犹如在引用某个人间时首先要弄清该文件在哪个磁盘的哪个如在引用某个人间时首先要弄清该文件在哪个磁盘的哪个文件夹中(即文件的存取路径)一样。文件夹中(即文件的存取路径)一样。 对象的引用分为对象的引用分为绝对引用绝对引用和和相对引用相对引用。43435.3.2 处理对象处理对象(1)绝对引用)绝对引用 指从容器的最高层次对象开始向下层查找,一直到该指从容器的最高层次对象开始向下层查找,一直到该对象所经过的所有对象的组合,对象名之

34、间用小数点对象所经过的所有对象的组合,对象名之间用小数点“.”间隔。间隔。 (2)相对引用)相对引用 我们用的都是这种方式。相对引用可以从任何容器层我们用的都是这种方式。相对引用可以从任何容器层次开始,只能向上或向下经过若干个对象找到指定对象。次开始,只能向上或向下经过若干个对象找到指定对象。44445.3.2 处理对象处理对象相对引用对象时涉及的关键字:相对引用对象时涉及的关键字:ActiveForm 当前活动表单当前活动表单ActivePage 当前活动表单中的活动页面当前活动表单中的活动页面ActiveControl 当前活动表单中具有焦点的控件当前活动表单中具有焦点的控件PARENT

35、该对象的直接容器该对象的直接容器This 该对象该对象ThisForm 包含该对象的表单包含该对象的表单ThisFormSet 包含该对象的表单集包含该对象的表单集例如:例如:_SCREEN.ActiveForm_SCREEN.ActiveForm.ActiveControl45455.3.2 处理对象处理对象2. 设置对象属性设置对象属性 每个对象都有很多属性。通过设置对象属性,可以定每个对象都有很多属性。通过设置对象属性,可以定义对象的特征或某一方面的行为。对象的大多数属性既可义对象的特征或某一方面的行为。对象的大多数属性既可以在设计时设置也可以在运行时设计,但也有一些属性是以在设计时设置

36、也可以在运行时设计,但也有一些属性是只读只读的(的(斜体字斜体字)。)。在在“属性属性”窗口中设置对象属性(略)窗口中设置对象属性(略)在事件代码或方法程序中(即编程实现)设置:在事件代码或方法程序中(即编程实现)设置: 引用对象引用对象.属性属性=值值例如:例如:ThisForm.Command1.Caption = ”确定确定” 引用对象引用对象 标题属性标题属性 属性内容属性内容46465.3.2 处理对象处理对象 若要为同一个对象设置多个属性,可以采用若要为同一个对象设置多个属性,可以采用 WITH ENDWITH 语句。语句。 例如:例如: WITH thisform.text1 .

37、Value=书山有路勤为径书山有路勤为径 .ForeColor=rgb(255,0,0) .FontSize=18 .FontName=隶书隶书 .FontBold=.T. ENDWITH47475.3.2 处理对象处理对象3. 调用对象的方法程序调用对象的方法程序 方法程序是对象能够执行的一个操作,是和对象相联方法程序是对象能够执行的一个操作,是和对象相联系的过程。调用方法程序的语法如下:系的过程。调用方法程序的语法如下: 引用对象引用对象. 方法程序方法程序例如:例如:thisform.release &关闭表单关闭表单 thisform.text1.setfocus &表单中的文本框获得

38、焦点表单中的文本框获得焦点 48485.3.2 处理对象处理对象4. 对事件的响应对事件的响应 当对象的某个当对象的某个事件发生事件发生时,该事件的处理程序代码将时,该事件的处理程序代码将被执行被执行。如果事件没有与之相关联的处理程序,则事件发。如果事件没有与之相关联的处理程序,则事件发生时不会发生任何操作。生时不会发生任何操作。若新建的方法与某个事件若新建的方法与某个事件重名重名,则当该事件发生时,同名,则当该事件发生时,同名方法被执行方法被执行。事件通常时由用户的操作产生的,或由系统激发产生,用事件通常时由用户的操作产生的,或由系统激发产生,用户通常不能通过编程的方式激发事件的产生,但可以

39、在需户通常不能通过编程的方式激发事件的产生,但可以在需要时要时调用任一事件的处理代码调用任一事件的处理代码。 引用对象引用对象. 事件事件49495.3.4 事件模型事件模型1. 核心事件核心事件事件事件触发时间触发时间Load当表单或表单集被加载时产生当表单或表单集被加载时产生Unload当表单或表单集从内存中释放时产生当表单或表单集从内存中释放时产生Init创建对象时产生创建对象时产生Destroy从内存中释放对象时产生从内存中释放对象时产生Click用户在对象上单击鼠标时产生用户在对象上单击鼠标时产生DblClick用户在对象上双击鼠标时产生用户在对象上双击鼠标时产生RightClick

40、用户在对象上单击鼠标右键时产生用户在对象上单击鼠标右键时产生GetFocus对象得到焦点时产生对象得到焦点时产生LostFocus对象失去焦点时产生对象失去焦点时产生KeyPress用户按键时产生用户按键时产生50505.3.4 事件模型事件模型MouseDown在对象上按下鼠标在对象上按下鼠标MouseUp在对象上松开鼠标在对象上松开鼠标MouseMove在对象上移动鼠标在对象上移动鼠标InteractiveChange.交互式改变对象值交互式改变对象值ProgrammaticChange可编程地改变对象值可编程地改变对象值51515.3.4 事件模型事件模型2. 容器层次与类层次中的事件容

41、器层次与类层次中的事件为对象编写事件的处理代码时,两条原则:为对象编写事件的处理代码时,两条原则:容器不处理与所包含的控件相关联的事件;容器不处理与所包含的控件相关联的事件;如果没有与控件相关联的事件代码,如果没有与控件相关联的事件代码,VFP将在将在类层次的更类层次的更高层上检查是否有与此事件相关联的控件代码。高层上检查是否有与此事件相关联的控件代码。3. 事件激发的顺序事件激发的顺序 Load、Init、Active、.、Destroy、Unload52525.3.4 事件模型事件模型4. 常用的事件常用的事件(1)鼠标事件:)鼠标事件:Click、RightClick、DblClick(

42、2)键盘事件:键盘事件:KeyPress(3)改变控件内容的事件:改变控件内容的事件:InteractiveChange、ProgrammaticChange(4)焦点事件:焦点事件:GotFocus、LostFocus、When、Valid(5)数据环境事件:数据环境事件:BeforeOpenTables、AfterCloseTables(6)其他常用事件:其他常用事件:Init、Destroy、Error53535.3.5 事件驱动和事件循环事件驱动和事件循环 在事件驱动程序设计中,程序设计人员不必设计程序在事件驱动程序设计中,程序设计人员不必设计程序执行的精确顺序,程序的执行是靠事件的发

43、生来控制的。执行的精确顺序,程序的执行是靠事件的发生来控制的。对于驱动的应用程序来说,用户可以通过引发不同的事件对于驱动的应用程序来说,用户可以通过引发不同的事件而安排程序执行的顺序。而安排程序执行的顺序。 事件驱动程序设计是一种强调事件代码的程序设计模事件驱动程序设计是一种强调事件代码的程序设计模型,型,程序的执行是由事件驱动的程序的执行是由事件驱动的,一旦程序启动后就根据,一旦程序启动后就根据发生的事件执行相应的程序,若无事件发生,则程序就空发生的事件执行相应的程序,若无事件发生,则程序就空闲着以等待事件的发生。闲着以等待事件的发生。 利用利用VFP进行应用程序设计时,必须创建事件循环,进行应用程序设计时,必须创建事件循环,事件循环由事件循环由Read Events命令创建命令创建,由,由Clear Events命令终止命令终止。当发出当发出Clear Events命令以后,命令以后,VFP就从就从Read Events后后一条一条命令开始执行。命令开始执行。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号