97
Visual Foxpro Visual Foxpro 第第第 第第第第第第 第第第 第第第第第第 第第第第第第第第 第第第第第第第第 第第第第第第第第 第第第第第第第第

Visual Foxpro 第八章 程序设计基础

  • Upload
    kin

  • View
    125

  • Download
    5

Embed Size (px)

DESCRIPTION

Visual Foxpro 第八章 程序设计基础. 面向过程程序设计 面向对象程序设计. 学习要点:. 8.1 过程化程序设计和面向对象程序设计的基本概念及设计方法; 8.2 过程化程序设计的语言基础,程序设计基本结构; 8.3 可视化程序设计的基本方法、类。. 重点与难点:. 8.1 过程化程序设计和面向对象程序设计的基本概念及设计方法; 8.2 过程化程序设计的语言基础,程序设计基本结构;. 8.1 面向过程程序设计. 8.1.1 程序文件的建立和执行 1 .建立和修改程序文件 - PowerPoint PPT Presentation

Citation preview

Page 1: Visual Foxpro  第八章 程序设计基础

Visual Foxpro Visual Foxpro

第八章 程序设计基础第八章 程序设计基础

面向过程程序设计面向过程程序设计面向对象程序设计面向对象程序设计

Page 2: Visual Foxpro  第八章 程序设计基础

学习要点:学习要点:8.1 8.1 过程化程序设计和面向对象程序设计的基本过程化程序设计和面向对象程序设计的基本

概念及设计方法;概念及设计方法;8.2 8.2 过程化程序设计的语言基础,程序设计基本过程化程序设计的语言基础,程序设计基本

结构;结构;8.3 8.3 可视化程序设计的基本方法、类。可视化程序设计的基本方法、类。

Page 3: Visual Foxpro  第八章 程序设计基础

重点与难点:重点与难点: 8.1 8.1 过程化程序设计和面向对象程序设计的基过程化程序设计和面向对象程序设计的基

本概念及设计方法;本概念及设计方法; 8.2 8.2 过程化程序设计的语言基础,程序设计基过程化程序设计的语言基础,程序设计基

本结构;本结构;

Page 4: Visual Foxpro  第八章 程序设计基础

8.1 8.1 面向过程程序设计面向过程程序设计8.1.1 8.1.1 程序文件的建立和执行程序文件的建立和执行11 .建立和修改程序文件.建立和修改程序文件

Visual FoxPro 程序文件,是一个以( .PR.PRGG )为扩展名的文本文件。

在 Visual FoxPro 系统环境下,建立和编辑程序文件主要命令方式和菜单方式。

Page 5: Visual Foxpro  第八章 程序设计基础

(( 11 )命令方式)命令方式【格式】

【功能】 打开一个编辑器窗口,用于建立或修改程序文件。

MODIFY COMMAND < 程序文件名 >MODIFY COMMAND < 程序文件名 >

【例【例 8-18-1 】用命令方式建立文件】用命令方式建立文件 P1.PRGP1.PRG 。。MODIFY COMMAND P1.PRGMODIFY COMMAND P1.PRG

Page 6: Visual Foxpro  第八章 程序设计基础

(( 22 )菜单方式)菜单方式 用菜单方式的操作步骤:用菜单方式的操作步骤:

① 新建文件:“文件文件”-“新建新建”。 修改已有的程序文件:“文件文件” -“打开打开” 。② 在程序编辑窗口逐条输入或修改程序语句。③ 输入或修改完成后,在“文件文件”菜单中选择

“保存保存”或“另存为另存为”命令,保存文件。

Page 7: Visual Foxpro  第八章 程序设计基础

22 .执行程序文件.执行程序文件(( 11 )命令方式)命令方式【格式】

【功能】在命令窗口运行以 .PRG 为扩展名的程序文件。

DO < 程序文件名>

DO < 程序文件名>

【例【例 8-18-1 】运行文件】运行文件 P1.PRGP1.PRG 。。DO P1.PRGDO P1.PRG

Page 8: Visual Foxpro  第八章 程序设计基础

(( 22 )菜单方式)菜单方式 在 Visual FoxPro 系统环境下,选择“程序程序”

菜单中的“运行运行”命令选项,在显示的对话框中确定或输入要执行的程序文件名。

Page 9: Visual Foxpro  第八章 程序设计基础

8.1.2 8.1.2 程序中常用的命令程序中常用的命令11 .交互式输入命令.交互式输入命令(( 11 )赋值命令)赋值命令

【格式】

【功能】给内存变量赋值。

STORE < 表达式 > TO < 内存变量名表>

或 < 内存变量名表 > = < 表达式>

STORE < 表达式 > TO < 内存变量名表>

或 < 内存变量名表 > = < 表达式>

【说明】 STORE 命令可以同时给多个内存变量赋值,而 < 内存变量 >=< 表达式 > 命令只能给一个变量赋值。。

Page 10: Visual Foxpro  第八章 程序设计基础

8.1.2 8.1.2 程序中常用的命令程序中常用的命令(( 22 )字符串输入命令)字符串输入命令【格式】

【功能】暂停程序的运行,等待用户从键盘上输入一串字符,存入指定的内存变量中。

ACCEPT [< 提示信息 >] TO < 内存变量>

ACCEPT [< 提示信息 >] TO < 内存变量>

【说明】 < 提示信息 > 用于提示用户进行操作的信息。从键盘接受的字符串,可以加定界符也可以不加定界符,系统都将其作为字符型数据输入到内存变量中。

Page 11: Visual Foxpro  第八章 程序设计基础

8.1.2 8.1.2 程序中常用的命令程序中常用的命令(( 33 )单字符输入命令 )单字符输入命令 【格式】

【功能】暂停程序的运行,等待用户从键盘上输入单个字符后恢复程序的运行。

WAIT [< 提示信息 >] [ TO < 内存变量 >]WAIT [< 提示信息 >] [ TO < 内存变量 >]

【说明】 < 提示信息 > 用于提示用户进行操作的信息, TO < 内存变量 > 是可选项,当选用时,键入的单个字符均作为字符型数据赋给 < 内存变量 > 。如果只有WAIT 命令,没有选项,则系统默认的提示信息是:PRESS ANY KEY TO CONTINUE…PRESS ANY KEY TO CONTINUE…

Page 12: Visual Foxpro  第八章 程序设计基础

8.1.2 8.1.2 程序中常用的命令程序中常用的命令(( 44 )表达式输入命令)表达式输入命令【格式】

【功能】暂停程序的运行,等待用户输入表达式并将其值赋给指定的内存变量。

INPUT [< 提示信息 >] TO < 内存变量 >INPUT [< 提示信息 >] TO < 内存变量 >

【说明】 < 提示信息 > 用于提示用户进行操作的信息,命令中 < 内存变量 > 的类型决定于输入数据的类型,但不能为 M 型。如果键入的是表达式,本命令先计算出表达式的值,再将结果赋给 < 内存变量 > ;如果键入的是字符常量、逻辑常量和日期常量时应带定界符,既字符常量加引号,逻辑常量左右加圆点,日期常量要用 CTOD ()函数进行转换。

Page 13: Visual Foxpro  第八章 程序设计基础

(( 55 )定位输入命令)定位输入命令【格式】

【功能】在屏幕指定的行列位置上输入数据。

@< 行,列 > SAY < 提示信息 > GET < 变量 >

READ

@< 行,列 > SAY < 提示信息 > GET < 变量 >

READ

【说明】命令中的各选项说明如下:①① << 行,列行,列 >> 是指屏幕窗口的位置。②② SAY <SAY < 提示信息提示信息 >> 给出提示信息。③③ GET <GET < 变量变量 >> 取得变量的值。其中 < 变量 > 可以是字段

变量或内存变量,如果是字段变量,应先打开表文件,如果是内存变量,应先赋值。

④④ GETGET 子句必须使用命令子句必须使用命令 READREAD 激活激活。在带有多个 GET子句的命令后,必须遇到 READ 命令才能编辑 GET 中的变量。

Page 14: Visual Foxpro  第八章 程序设计基础

22 .输出命令.输出命令(( 11 )非格式输出命令)非格式输出命令【格式】

【功能】显示内存变量、常量或表达式的值。

? < 内存变量名表 >

或 ?? < 内存变量名表 >

? < 内存变量名表 >

或 ?? < 内存变量名表 >

【说明】??是在光标所在行的下一行下一行开始显示????则是在当前当前光标位置开始显示。

Page 15: Visual Foxpro  第八章 程序设计基础

(( 22 )格式输出命令)格式输出命令【格式】

【功能】按指定的坐标位置在屏幕上输出表达式的值。

@ < 行,列 > SAY < 表达式 > @ < 行,列 > SAY < 表达式 >

【说明】输出 < 表达式 > 的位置由 < 行,列 > 指定,< 表达式 > 的内容可以是数值、字符、内存变量和字段变量。

Page 16: Visual Foxpro  第八章 程序设计基础

(( 33 )文本输出命令)文本输出命令【格式】

【功能】将 TEXT 和 ENDTEXT 之间的文本信息照原样输出。

TEXT

< 文本信息 >

ENDTEXT

TEXT

< 文本信息 >

ENDTEXT

【说明】 TEXT 与 ENDTEXT 在程序中必须配对。

Page 17: Visual Foxpro  第八章 程序设计基础

33 .其他程序运行命令.其他程序运行命令(( 11 )清屏命令)清屏命令【格式】【功能】清除屏幕上的内容。

CLEAR CLEAR

(( 22 )返回命令)返回命令

【格式】【功能】结束当前程序的运行。

RETURN RETURN

【说明】 若当前程序无上级程序,该命令用于结束程序的运行,返回到命令窗口返回到命令窗口。如果当前程序是一个子程序,该命令用于结束程序的运行,返回到调用该程序的上级程序中返回到调用该程序的上级程序中。

Page 18: Visual Foxpro  第八章 程序设计基础

(( 33 )终止程序执行命令)终止程序执行命令

【格式】

【功能】清除屏幕上的内容。 CANCEL CANCEL

(( 44 )退出系统命令)退出系统命令

【格式】

【功能】终止程序运行,关闭所有打开的文件,退出退出 Visual FoxPro 系统,返回到 WindowsWindows 环境。

QUIT QUIT

Page 19: Visual Foxpro  第八章 程序设计基础

(( 55 )注释命令)注释命令

【格式】

【功能】用于在程序中加入说明,以注明程序的名称、功能或其他备忘标记。

NOTE < 注释内容 >

或 * < 注释内容 >

或 && < 注释内容 >

NOTE < 注释内容 >

或 * < 注释内容 >

或 && < 注释内容 >

【说明】注释命令为非执行语句非执行语句。其中前两个命令格式作为独立的一行语句,第三条第三条命令放在某一个语句的右边右边。

Page 20: Visual Foxpro  第八章 程序设计基础

44 .环境设置命令.环境设置命令系统提供 SET 命令组用来设置程序运行的环境。(( 11 )关闭对话命令)关闭对话命令【命令】 SET TALK ON|OFFSET TALK ON|OFF【功能】 控制非输出性的执行结果是否在屏幕上显示或

打印出来。【说明】 系统默认值为 ON 。

(( 22 )设置跟踪命令)设置跟踪命令【命令】 SET ECHO ON|OFFSET ECHO ON|OFF【功能】 控制程序文件执行过程中的每条命令是否显示

或打印出来。【说明】 系统默认值为 OFF 。

Page 21: Visual Foxpro  第八章 程序设计基础

(( 33 )设置打印命令)设置打印命令【命令】 SET PRINTER ON|OFFSET PRINTER ON|OFF【功能】 控制程序执行的结果到打印机或屏幕上。【说明】 在命令格式中选择 ON 表示将输出结果送到打印

机,选择 OFF 则将输出结果显示在屏幕上,系统默认值为 OFF 。

(( 44 )设置定向输出命令)设置定向输出命令【命令】 SET DEVICE TO SCREEN | TO PRINTER | TO SET DEVICE TO SCREEN | TO PRINTER | TO

FILE<FILE< 文件名文件名 >>【功能】 控制输出结果到屏幕、打印机或指定的文件。【说明】 在命令格式中选择 SCREEN 表示将输出结果显

示在屏幕上,选择 PRINTER 表示将输出结果送到打印机,选择 FILE < 文件名 > 则将输出结果送到指定文件。

Page 22: Visual Foxpro  第八章 程序设计基础

(( 55 )设置精确比较命令)设置精确比较命令【命令】 SET EXACT TO ON|OFFSET EXACT TO ON|OFF【功能】 在进行字符比较时是否需要精确比较。【说明】 在命令格式中选择 ON 表示需要精确比较,选择

OFF 表示不需要精确比较,系统默认值为 OFF。

(( 66 )设置保护状态命令)设置保护状态命令【命令】 SET SAFETY ON|OFFSET SAFETY ON|OFF【功能】 系统在用户提出对文件重写或删除的要求时给出

警告提示。【说明】 需要提示选择 ON ,否则选择 OFF 。系统默认

为 ON 。

Page 23: Visual Foxpro  第八章 程序设计基础

(( 77 )设置删除记录标志命令)设置删除记录标志命令【命令】 SET DELETED ON|OFFSET DELETED ON|OFF【功能】 屏蔽或处理有删除标记的记录。【说明】 在命令格式中选择 ON 时,命令将不对有删

除标记的记录进行操作,但索引命令除外。系统默认值为 OFF 。

(( 88 )设置屏幕状态命令)设置屏幕状态命令【命令】 SET CONSOLE ON|OFFSET CONSOLE ON|OFF【功能】 发送或暂停输出内容到屏幕上。【说明】 系统默认值为 ON 。

(( 99 )设置缺省目录命令)设置缺省目录命令【命令】 SET DEFAULT TO <SET DEFAULT TO < 默认目录默认目录 >>【功能】 用于设置系统默认的磁盘文件目录。

Page 24: Visual Foxpro  第八章 程序设计基础

【例 8-4 】编写程序 P3.PRG ,其程序功能是在学生表中追加一条记录。

编写程序如图 8-4所示,运行程序 P3.PRG ,在如下输入界面填写数据,显示结果如图 8-5 所示。

图 8-4 程序 P3.PRG的编写窗口

图 8-5 程序 P3.PRG的输出结果

Page 25: Visual Foxpro  第八章 程序设计基础

【例 8-5】 编写程序 P4.PRG ,其程序功能是在学生表中查询某一天出生的学生记录。

编 写 程 序如图 8-6 所示,运行程序 P4.PRG ,在输入了要查询学生的出生日期之后,系统输出查询的结果。

图 8-6 程序 P4.PRG编写窗口

Page 26: Visual Foxpro  第八章 程序设计基础

【例 8-6】 编写程序 P5.PRG,其程序功能是在学生表中删除学生记录。

编写程序如图 8-7 所示,运行程序 P5.PRG,在输入了要查询学生的姓名之后,系统显示要删除学生的记录,并确认删除。

程序运行结果的屏幕显示如下:

图 8-7 程序 P5.PRG编写窗口

Page 27: Visual Foxpro  第八章 程序设计基础

8.1.3 8.1.3 程序的基本结构程序的基本结构 程序的基本结构有三种:顺序结构顺序结构、分支结构分支结构和循环结构循环结构

11 .顺序结构.顺序结构顺序结构是指程序按照语句排列的先后顺序逐条的执行。

2. 2. 分支结构分支结构分支结构是在执行程序时,按照一定的条件选择不同的语句,用来解决选择、转移的问题。分支结构的基本形式有三种。

单向分支单向分支、双向分支双向分支、多向分支多向分支

Page 28: Visual Foxpro  第八章 程序设计基础

(( 11 )单向分支)单向分支

【格式】

【功能】当条件表达式的值为真时,执行 < 命令行序列 > ,否则执行 ENDIF 后面的命令。

IF <IF < 条件表达式条件表达式 >>

< 命令行序列 >

ENDIFENDIF

IF <IF < 条件表达式条件表达式 >>

< 命令行序列 >

ENDIFENDIF

【说明】 < 条件表达式 > 是关系表达式或逻辑表达式, IF 和 ENDIF 必须成对使用成对使用。

< 命令行序列 > 可以由一条语句或多条语句构成。

Page 29: Visual Foxpro  第八章 程序设计基础

【例 8-7】 编写程序 P6.PRG,其程序功能是在教师表中,将陈静教师的职称由讲师改成副教授。

Page 30: Visual Foxpro  第八章 程序设计基础

(( 22 )双向分支)双向分支【格式】 【功能】

执行该命令时,首先判断< 条件表达式 > 的值,若为真,则执行 < 命令行系列 1> ,然后执行 ENDIF后的命令;若为假,则执行 < 命令行序列 2> ,然后执行 ENDIF 后的命令。

IF <IF < 条件表达式条件表达式 >>

< 命令行序列 1>

ELSEELSE

< 命令行序列 2>

ENDIFENDIF

IF <IF < 条件表达式条件表达式 >>

< 命令行序列 1>

ELSEELSE

< 命令行序列 2>

ENDIFENDIF

【说明】 IF…ELSE…ENDIF 语句必须成对使用成对使用。< 命令行序列 1> 和 < 命令行序列 2> 中可可以嵌套以嵌套 IF 命令。

Page 31: Visual Foxpro  第八章 程序设计基础

【例 8-8 】 编写程序 P7.PRG,其程序功能是在教师表中,查询陈静教师的记录,如果找到记录,就显示该记录,否则,显示“查无此人”。

Page 32: Visual Foxpro  第八章 程序设计基础

(( 33 )多向分支)多向分支【格式】 DO CASEDO CASE

CASE <CASE < 条件表达式条件表达式 1>1> < 命令行序列 1>CASE <CASE < 条件表达式条件表达式 2>2> < 命令行序列 2> ... ... CASE <CASE < 条件表达式条件表达式 N> N> < 命令行序列 N>OTHERWISE OTHERWISE < 命令行序列 N+1>

ENDCASEENDCASE

DO CASEDO CASECASE <CASE < 条件表达式条件表达式 1>1> < 命令行序列 1>CASE <CASE < 条件表达式条件表达式 2>2> < 命令行序列 2> ... ... CASE <CASE < 条件表达式条件表达式 N> N> < 命令行序列 N>OTHERWISE OTHERWISE < 命令行序列 N+1>

ENDCASEENDCASE

Page 33: Visual Foxpro  第八章 程序设计基础

【功能】系统从多个条件中依次测试 < 条件表达式 > 的

值,若为真:若为真:即执行相应 < 条件表达式 > 后的 < 命

令行序列 > ;若所有的若所有的 << 条件表达式条件表达式 >> 的值均为假的值均为假:则执行

OTHERWISE 后面的 < 命令行序列> 。

【说明】 DO CASE 和第一个 CASE 子句之间不能插入任何命令。DO CASE 和 ENDCASE 必须配对使用。

Page 34: Visual Foxpro  第八章 程序设计基础

【例 8-9】编写程序 P8.PRG,其程序功能是根据用户的选择,显示不同数据表的内容。

Page 35: Visual Foxpro  第八章 程序设计基础

33 、循环结构、循环结构(( 11 )条件循环)条件循环【格式】

【功能】语句执行时,先判断 <条件表达式 >的值,若为真若为真,则执行循环体内的命令,即 DO 与ENDDO 之间的命令;若为假若为假,则执行 ENDDO 后面的命令。

DO WHILE <DO WHILE < 条件表达式条件表达式 >> < 命令行序列 1> [LOOP][LOOP] < 命令行序列 2> [EXIT][EXIT] < 命令行序列 3>ENDDOENDDO

DO WHILE <DO WHILE < 条件表达式条件表达式 >> < 命令行序列 1> [LOOP][LOOP] < 命令行序列 2> [EXIT][EXIT] < 命令行序列 3>ENDDOENDDO

Page 36: Visual Foxpro  第八章 程序设计基础

【说明】 对循环语句进行以下说明:1) DO WHILE 和 ENDDO 子句要配对使用。2) DO WHILE < 条件表达式 > 是循环语句的入口; E

NDDO 是循环语句的出口;中间 < 命令行序列 > 是重复执行的循环体。

3) LOOP 和 EXIT 只能在循环语句中使用,其中 LOOP 是转到循环的入口语句; EXIT 是强行退出循环的语句。

4) 循环结构允许嵌套,这种嵌套不仅限于循环结构自身的嵌套,而且还可以是和选择结构的相互嵌套。

Page 37: Visual Foxpro  第八章 程序设计基础

【例 8-10】 编写程序 P9.PRG,其程序功能是统计学生表中入校总分在 580 分以上的学生人数。

Page 38: Visual Foxpro  第八章 程序设计基础

【例 8-11】 编写程序 P10.PRG,其程序功能是设计一个对学生表进行管理主控程序,用户通过键盘选择菜单,以实现不同的功能模块的调用或退出程序运行。

Page 39: Visual Foxpro  第八章 程序设计基础

(( 22 )计数循环)计数循环

【格式】

【功能】根据用户设置的循环变量的初值、终值和步长,决定循环体内语句执行次数。

FOR <FOR < 循环变量循环变量 >=<>=< 循环初值循环初值 > TO <> TO < 循环终值循环终值>>

[ STEP<[ STEP<步长步长 >]>] < 命令行序列 1> [LOOP][LOOP] < 命令行序列 2> [EXIT][EXIT] < 命令行序列 3>ENDFOR | NEXTENDFOR | NEXT

FOR <FOR < 循环变量循环变量 >=<>=< 循环初值循环初值 > TO <> TO < 循环终值循环终值>>

[ STEP<[ STEP<步长步长 >]>] < 命令行序列 1> [LOOP][LOOP] < 命令行序列 2> [EXIT][EXIT] < 命令行序列 3>ENDFOR | NEXTENDFOR | NEXT

Page 40: Visual Foxpro  第八章 程序设计基础

【功能】系统执行该命令时:1. 首先将循环初值赋给循环变量循环初值赋给循环变量;2. 然后判断循环变量的值是否超过终值:

i. 若超过则跳出循环,执行 ENDFOR 后面的命令;

ii.否则执行循环体内的命令序列。3. 当遇到 ENDFOR 子句时,返回 FOR 命令,并

将循环变量的值加上步长值再一次加上步长值再一次与循环终值比比较较,如此重复执行,直到循环变量的值超过循环终值。

Page 41: Visual Foxpro  第八章 程序设计基础

【说明】 对循环语句进行以下说明:1.步长值省略时,系统默认步长值为系统默认步长值为 11 。。2. 当初值小于小于终值时,步长值为正值正值。3. 当初值大于大于终值时,步长值为负值负值。4.步长值不能为 0 ,否则造成死循环死循环。5. 在循环体内不要随便改变循环变量的值,否则会引起循环次数发生改变。

6. [LOOP] 和 [EXIT] 命令的功能和用法与条件循环中该命令的用法相同 。

Page 42: Visual Foxpro  第八章 程序设计基础

【例 8-12】 编写程序 P11.PRG,其程序功能是用计数循环统计学生表中入校总分在 580 分以上的学生人数。

Page 43: Visual Foxpro  第八章 程序设计基础

(( 33 )指针循环)指针循环

【格式】

【功能】根据用户设置的当前记录指针,对一组记录进行循环操作。

SCAN [<SCAN [<范围范围 >] [ FOR<>] [ FOR< 条件表达 式条件表达 式 1>] 1>] [ WHILE< [ WHILE< 条件表条件表

达式达式 2>]2>]< 命令行序列 1> [LOOP][LOOP] < 命令行序列 2> [EXIT][EXIT] < 命令行序列 3>

ENDSCANENDSCAN

SCAN [<SCAN [<范围范围 >] [ FOR<>] [ FOR< 条件表达 式条件表达 式 1>] 1>] [ WHILE< [ WHILE< 条件表条件表

达式达式 2>]2>]< 命令行序列 1> [LOOP][LOOP] < 命令行序列 2> [EXIT][EXIT] < 命令行序列 3>

ENDSCANENDSCAN

Page 44: Visual Foxpro  第八章 程序设计基础

【功能】 该语句在指定的范围内,用记录指针来控制循环次数。

执行语句时,首先判断函数 EOF( ) 的值: 若为“真”若为“真”,则结束循环结束循环,执行 ENDSCAN 后

面的语句; 否则,否则,结合 < 条件表达式 1> 或 < 条件表达式 2

> 执行执行 << 命令行序列命令行序列 >> ,记录指针移到指定的范围和条件内的下一条记录,重新判断函数 EOF( ) 的值,直到 EOF( ) 的值为“真”时结束循环。

Page 45: Visual Foxpro  第八章 程序设计基础

【说明】 SCAN…ENDSCAN 循环语句中隐含函数 EOF

( ) 和命令 SKIP 的处理。 无 <范围 > 选项时,则表示对所有记录所有记录进行处理。

[LOOP] 和 [EXIT] 命令的功能和用法与条件循环中该命令的用法相同。

Page 46: Visual Foxpro  第八章 程序设计基础

【例 8-13】 编写程序 P12.PRG,其程序功能是用指针循环统计学生表中入校总分在 580 分以上的学生人数。

Page 47: Visual Foxpro  第八章 程序设计基础

(( 44 )多重循环)多重循环多重循环是指在一个循环语句内又包含另一个循环语句,多重循环也称为循环嵌套。如:

【功能】根据用户设置的当前记录指针,对一组记录进行循环操作。

DO WHILE <DO WHILE < 条件表达式条件表达式 1>1> < 命令行序列 11> DO WHILE < 条件表达式 2> < 命令行序列 21> …… ENDDO < 命令行序列 12>ENDDOENDDO

DO WHILE <DO WHILE < 条件表达式条件表达式 1>1> < 命令行序列 11> DO WHILE < 条件表达式 2> < 命令行序列 21> …… ENDDO < 命令行序列 12>ENDDOENDDO

Page 48: Visual Foxpro  第八章 程序设计基础

【功能】 在多重循环中,首先从外循环进入内循环,执行内循环的语句。当内循环的条件为假时,返回到外循环;当外循环的条件为真时,又进入内循环;否则,退出循环。

【说明】 对循环语句进行以下说明:①①循环嵌套层次不限,循环嵌套层次不限,但内循环的所有语句必须完

全嵌套在外层循环之中。否则,就会出现循环的交叉,造成逻辑上的混乱。

②循环结构和分支结构允许混合嵌套使用允许混合嵌套使用,但不允不允许交叉许交叉。其入口语句和相应的出口语句必须成对出现。

Page 49: Visual Foxpro  第八章 程序设计基础

【例 8-14 】 编写程序 P13.PRG,其程序功能是使用多重循环打印一个九九乘法口诀表。

Page 50: Visual Foxpro  第八章 程序设计基础
Page 51: Visual Foxpro  第八章 程序设计基础

8.1.4 8.1.4 过程及过程调用 过程及过程调用 11 .过程概念.过程概念 在程序设计中,为了有效地解决有些运算或程

序段落重复调用的情况,可设计相对独立并能完成特定功能的程序段,这种程序段称为过程过程或子程序子程序,用于调用程序段的程序称为主程序主程序。

在应用系统的开发中,一般会根据实际的需要将整个系统划分成若干个模块,通常将这些可调用的功能模块也设计成过程或子程序。

Page 52: Visual Foxpro  第八章 程序设计基础

22 .过程的建立与调用.过程的建立与调用建立过程的方法与建立一般程序的方法相同,

所不同的是在每个过程中至少要有一个返回语句。【返回语句】

【功能】返回到调用该子程序的主程序,并执行调用命令下的第一条可执行命令。

RETURN [< 表达式 > | TO < 程序文件名 >

| TO MASTER]

RETURN [< 表达式 > | TO < 程序文件名 >

| TO MASTER]

Page 53: Visual Foxpro  第八章 程序设计基础

【说明】 在返回语句中 :

选择可选项选择可选项 << 表达式表达式 >:>: 将表达式的值返回给调用程序。

选择可选项选择可选项 [TO<[TO< 程序文件名程序文件名 >]:>]: 可直接返回指定的程序文件。

选择可选项选择可选项 [TO MASTER]:[TO MASTER]: 则不论前面有多少级调用而直接返回到第一级主程序。

【调用命令】 DO < 过程名 > DO < 过程名 >

【功能】执行 DO 调用命令时,将指定的过程调入内存并执行。

Page 54: Visual Foxpro  第八章 程序设计基础

【例 8-15】 编写程序 P14.PRG,其程序功能是计算 S=X!+Y!+Z! 。

图 8-20 程序 P14 .PRG主程序和过程编写窗口

Page 55: Visual Foxpro  第八章 程序设计基础

33 .过程文件.过程文件过程是作为一个文件独立地存储在磁盘上,

为减少磁盘文件的打开次数,可以把多个过程写入到一个过程文件中。过程文件的扩展名仍然是 .PR.PRGG。。

(( 11 )建立过程文件)建立过程文件

【功能】建立过程文件。

MODIFY COMMAND < 过程文件名>

MODIFY COMMAND < 过程文件名>

Page 56: Visual Foxpro  第八章 程序设计基础

PROCEDURE <PROCEDURE < 过程名过程名 1>1><< 命令序列命令序列 1>1>

RETURNRETURN

PROCEDURE <PROCEDURE < 过程名过程名 2>2><< 命令序列命令序列 2>2>

RETURNRETURN……PROCEDURE <PROCEDURE < 过程名过程名 N>N>

<< 命令序列命令序列 N>N>RETURNRETURN

PROCEDURE <PROCEDURE < 过程名过程名 1>1><< 命令序列命令序列 1>1>

RETURNRETURN

PROCEDURE <PROCEDURE < 过程名过程名 2>2><< 命令序列命令序列 2>2>

RETURNRETURN……PROCEDURE <PROCEDURE < 过程名过程名 N>N>

<< 命令序列命令序列 N>N>RETURNRETURN

过程文件的基本书写格式:过程文件的基本书写格式:

Page 57: Visual Foxpro  第八章 程序设计基础

(( 22 )打开过程文件)打开过程文件

【功能】打开指定的过程文件,将过程文件中所包含的子程序全部调入内存。

SET PROCEDURE TO < 过程文件名 >SET PROCEDURE TO < 过程文件名 >

【说明】 系统在同一时刻只能打开一个过程文件同一时刻只能打开一个过程文件,打开新过程文件的同时将关闭原来打开的过程文件。若要修改过程文件的内容,一定要先关闭该过程文件。

Page 58: Visual Foxpro  第八章 程序设计基础

(( 33 )执行过程文件中的过程)执行过程文件中的过程

【功能】调用过程文件中的指定过程。

DO < 过程名 >DO < 过程名 >

(( 44 )关闭过程文件)关闭过程文件

【功能】关闭已打开的过程文件。

CLOSE PROCEDURE

或 SET PROCEDURE TO

CLOSE PROCEDURE

或 SET PROCEDURE TO

Page 59: Visual Foxpro  第八章 程序设计基础

【例 8-16】 编写程序 P15.PRG,其程序功能是求 3~100 之间的所有素数。

注意:对一个自然数M(取值在 3~100 之间的奇数)求素数的方法是:将 M依次除以 3到 M的算数平方根之间的所有奇数,若均不能被整除,则M即为素数,否则,M不是素数。

3~100之间的所有素数:3 5 7 11 1317 19 23 29 3137 41 43 47 5359 61 67 71 7379 83 89 97

图 8-21 程序 P15 .PRG主程序和过程文件编写窗口

Page 60: Visual Foxpro  第八章 程序设计基础

8.1 8.1 面向过程程序设计面向过程程序设计8.1.5 8.1.5 变量的作用域和参数调用变量的作用域和参数调用11 .变量的作用域.变量的作用域 在程序设计中,内存变量的这些作用范围称为

内存变量的作用域作用域。 内存变量的作用域根据作用范围可分为全局变全局变

量量和局部变量局部变量。

Page 61: Visual Foxpro  第八章 程序设计基础

(( 11 )全局变量)全局变量全局变量是指在程序的任何嵌套中及在程序

执行期间始终有效的变量。程序执行完毕,它们不会在内存自动释放。

全局变量的定义如下:

【功能】将内存变量名表中的变量说明为全局变量。

PUBLIC < 内存变量表>

PUBLIC < 内存变量表>

【说明】 < 内存变量表 > 中的变量可以是简单变量,也可以是下标变量。

Page 62: Visual Foxpro  第八章 程序设计基础

(( 22 )局部变量)局部变量局部变量是指未经 PUBLIC 命令定义的,只在建

立它的过程及下级过程中有效的内存变量。 建立局部变量的程序执行完毕,局部变量的值将被自动清除。

局部变量的定义方式 :o 隐含定义方式隐含定义方式 :: 凡是过程中未经特殊说明的

内存变量,系统一律认为是局部变量,这种方式称做隐含定义方式。

o 显式定义方式显式定义方式 :: 也可以使用专门命令来定义局部变量,即显式定义方式。

Page 63: Visual Foxpro  第八章 程序设计基础

显式定义方式:显式定义方式:

【功能】定义选定的内存变量为局部变量。

PRIVATE < 内存变量表 >

[ALL [ LINK | EXCEPT<通配符>]]

PRIVATE < 内存变量表 >

[ALL [ LINK | EXCEPT<通配符>]]

【说明】 在同一过程中,用隐式或显式定义的局部变量的

作用域完全相同。 在主程序或上级过程中未经 PRIVATE 语句定义

的局部变量,在下级过程中也未经显式定义,那么它的新值可以带回主程序或上级过程;若在下级过程中进行了显式定义,其新值不能带回主程序或上级过程中使用。

Page 64: Visual Foxpro  第八章 程序设计基础

【例 8-17】编写程序 P16.PRG,其程序功能说明过程中全局变量和局部变量的应用。

输出结果:在主程序中: A=1 B=2在过程中: A=11 B=12 C=13 D=14返回主程序后: A=11 B=2 C=13 D=

图 8-22 程序 P16 .PRG主程序和调用过程编写窗口

Page 65: Visual Foxpro  第八章 程序设计基础

2. 2. 过程的带参调用过程的带参调用 过程的带参调用方法 : 在调用过程的命令和被调用过程的相关语句中,分别设置数量相同数量相同、数据类型一致数据类型一致且排列顺序相互对应排列顺序相互对应的参数表。

调用过程的命令将一系列参数的值传递给被调用过程中的对应参数,被调用过程运行结束时,再将参数的值返回到调用它的上一级过程或主程序中。

这种调用是通过带参过程调用命令和接受参数命令实现的。

Page 66: Visual Foxpro  第八章 程序设计基础

(( 11 )带参调用)带参调用【命令】

【功能】调用一般过程或过程文件中的过程,并为被调用过程提供参数。

DO <子程序名 > WITH <参数表>

DO <子程序名 > WITH <参数表>

【说明】该命令只用在调用过程的程序中。此处 <参数表 >又称为实参表实参表,其中的参数可以是常量、已赋值的变量或数值表达式,参数之间用逗号分开。

Page 67: Visual Foxpro  第八章 程序设计基础

(( 22 )接受参数)接受参数【命令】

【功能】接受调用过程的命令传递过来的参数。

PARAMETERS <参数表>

PARAMETERS <参数表>

【说明】该命令必须位于被调用过程的第一条可执行语句处。此处 <参数表 >又称为形参表形参表,其中的参数一般为内存变量。形参与实参的个数应相等、数据类型和个数要对应相同。

Page 68: Visual Foxpro  第八章 程序设计基础

【例 8-18 】 编写程序 P17.PRG , 其 程 序功能是用带参调用方法计算梯形的面积。

屏幕显示如下的输入界面和输出结果:

图 8-24 程序 P17 .PRG主程序和调用过程编写窗口

Page 69: Visual Foxpro  第八章 程序设计基础

8.1 8.1 面向过程程序设计面向过程程序设计8.1.6 8.1.6 数组应用数组应用数组是一批性质相同的有序变量的集合有序变量的集合。这些

变量的数据类型可以不同。数组中的每个数据则称为该数组的数组元素数组元素,它们在数组中的位置用带有括号括号的下标下标表示,故又称为下标变量下标变量。

一维数组中的各个元素是按线性排列的;二维数组则类似于一个数据表,第一维是行,第二维是列。

数组在使用时应先定义后使用先定义后使用。

Page 70: Visual Foxpro  第八章 程序设计基础

11 .数组的定义.数组的定义【命令】

【功能】定义一个或若干个一维或二维数组。

DIMENSION | DECLARE <数组名 1>( <数值表达式 11>[ , <数值表达式 12> ] ) [ , <数组名 2> ( <数值表达式 21>[ , <数值表达式 22> ] ) ]……

DIMENSION | DECLARE <数组名 1>( <数值表达式 11>[ , <数值表达式 12> ] ) [ , <数组名 2> ( <数值表达式 21>[ , <数值表达式 22> ] ) ]……

Page 71: Visual Foxpro  第八章 程序设计基础

【说明】 对数组的定义进行下列说明: DIMENSION 和 DECLARE 命令的功能和格式完全相同。

< 数值表达式 > 为数组下标,对一维数组来说,指的是数组元素的个数;对二维数组来说,指的是数组的最大行号和最大列号。

数组的下标可以使用圆括号或方括号括起来。在同一个数组中,不同的数组元素数据类型可以不

同。数组一旦定义之后,该数组的每个元素的初值为逻初值为逻

辑“假”值辑“假”值,可以使用有关命令给数组元素赋值。

Page 72: Visual Foxpro  第八章 程序设计基础

与普通内存变量一样,数组变量也有全局和局部之分。

可以用 PUBLIC 命令建立全局性的内存数组变量。

PUBLIC <数组名 > ( <数值表达式 1>[ ,<数值表达式 2> ] )……PUBLIC <数组名 > ( <数值表达式 1>[ ,<数值表达式 2> ] )……

Page 73: Visual Foxpro  第八章 程序设计基础

22 .数组的使用.数组的使用数组变量建立后,数组中的每一个元素只是一

个带有下标的内存变量,其性质和使用方法与普通内存变量是一样的。

由于数组是一批带有下标的有序变量的集合,所以,数组中的每一个元素是一个下标变量,其特点是允许具有可变的下标。变量可以随着下标的变化而变换,从而就可以运用程序语句控制下标的有序变化来对一批变量顺序地赋值、运算和输出。

Page 74: Visual Foxpro  第八章 程序设计基础

【例 8-19】 编写程序 P18.PRG,其程序功能根据表 8-1 学生成绩表的数据计算每个同学的总分。

编写程序如图 8-25 所示,运行程序 P18.PRG,屏幕显示如下的输入界面和输出结果:

学生姓名:刘雨成绩: 90成绩: 85成绩: 95学生姓名:金阳 成绩: 85成绩: 80成绩: 90学生姓名:杨然成绩: 65成绩: 75成绩: 80学生成绩统计 姓名 英语 政治 数学 总分刘雨 90 85 95 270金阳 85 80 90 255杨然 65 75 80 220

Page 75: Visual Foxpro  第八章 程序设计基础

8.2 8.2 面向对象程序设计面向对象程序设计8.2.1 8.2.1 基本概念基本概念11 .对象.对象

对象( Object )是具有某些特性的具体事物的抽象。

凡是我们要处理的事物都可成为处理的对象,包括可见的事物(如人、汽车、电话等)和非可见的事物(如感情、思想等)。

Page 76: Visual Foxpro  第八章 程序设计基础

22 .对象的属性、事件和方法.对象的属性、事件和方法(( 11 )属性()属性( PropertyProperty )) 属性是一组用于描述对象的物理特征的值。 属性值既可以预先定义,也可以在程序运行过程中由程序

定义的修改。(( 22 )事件()事件( EventEvent )) 事件是由对象识别的一个动作,用户可以编写相应代码对此动作进行响应。

在 Visual FoxPro 中,可以激发事件的用户动作包括:单击鼠标( Click )、双击鼠标( DblClick )、按键( Key Press )、移动鼠标( MouseMove )等。

(( 33 )方法()方法( MethodMethod )) 方法是与对象相关联的过程,对象的事件可以具有与之相

关联的方法,

Page 77: Visual Foxpro  第八章 程序设计基础

33 .类.类 类( Class )是具有共同属性、共同操作性质

的对象的集合。 类是对象的抽象描述,对象则是类的实例。类

是抽象的,对象是具体的。 类可以划分为基类基类和子类子类,也叫根类和派生类。子类以其基类为起点,并可继承基类的特征。

Page 78: Visual Foxpro  第八章 程序设计基础

44 .类的特性.类的特性(( 11 )继承性)继承性

子类不但具有父类的全部属性和方法,而且允许用户根据需要对已有的属性和方法进行修改,或添加新的属性和方法,这种特性称为类的继承性。

(( 22 )封装性)封装性 类的封装性是指类的内部信息对用户是隐蔽的。

(( 33 )多态性)多态性 类的多态性是指一些相关联的类包括同名的方法程

序,但方法程序的内容不同。

Page 79: Visual Foxpro  第八章 程序设计基础

8.2.2 8.2.2 面向对象程序设计基本方法面向对象程序设计基本方法 首先要考虑的是如何创建对象,其次考虑对象的功能

和可以进行的操作。 对象和应用程序的关系如下图:

Page 80: Visual Foxpro  第八章 程序设计基础

8.2.3 Visual FoxPro8.2.3 Visual FoxPro 中的类中的类11.基类(.基类( Visual FoxPro Visual FoxPro 预先定义好的类)预先定义好的类)(( 11 )容器类:)容器类:容器类可以容纳别的对象,并允许访问所包含的对象。

(( 22 )控件类:)控件类:不能容纳其他对象,只能作为容器类中的一员,通过容器类创造的对象进行修改或访问。

22.子类(以某个类(父类)为起点创建的新类).子类(以某个类(父类)为起点创建的新类)子类将继承父类的全部特征。

33.用户自定义类.用户自定义类用户从基类派生出子类,并修改或添加子类属性、方法,这样的子类称为用户自定义类。

44 .类 库.类 库类库可用来存储以可视化方式设计的类,其扩展名为 .VCX ,一个类库可包含多个子类,且这些子类可以是由不同的基类派生的。

Page 81: Visual Foxpro  第八章 程序设计基础

8.2.4 8.2.4 属 性属 性 属性是对象的特征,是对象某一方面的行为参数。属性是对象的特征,是对象某一方面的行为参数。 在在 Visual FoxProVisual FoxPro 中,对象的属性可以通过属性窗口设中,对象的属性可以通过属性窗口设

置,也可以通过代码在运行时设置。置,也可以通过代码在运行时设置。 Visual FoxProVisual FoxPro 中对象的属性根据其特点可划分为:中对象的属性根据其特点可划分为:

( 1 )与操作方式、功能、效果有关的属性。 ( 2 )与对象的引用有关的属性。 ( 3 )与运行、操作条件有关的属性。 ( 4 )与对象可视性有关的属性。 ( 5 )与数据、信息有关的属性。

Page 82: Visual Foxpro  第八章 程序设计基础

8.2.5 8.2.5 事 件事 件 事件是对象可以识别和响应的行为和动作。事件是对象可以识别和响应的行为和动作。 事件是预先定义的动作,由用户或系统激活。当事件事件是预先定义的动作,由用户或系统激活。当事件

发生时,与之相对应的方法程序代码将被执行。发生时,与之相对应的方法程序代码将被执行。 在在 Visual FoxProVisual FoxPro 中,对象可以响应中,对象可以响应 5050多种事件,主多种事件,主

要事件种类有:要事件种类有: ( 1 )与鼠标操作有关的事件。 ( 2 )与键盘操作有关的事件。 ( 3 )与对象内容改变有关的事件。 ( 4 )与表单有关的事件。 ( 5 )其他事件。

Page 83: Visual Foxpro  第八章 程序设计基础

8.2.6 8.2.6 方法程序方法程序方法是对象所能执行的操作,是与对象相关

的过程,方法程序是对象能够执行的、完成相应任务的操作命令代码的集合。

方法可以独立于事件而存在,此时,应显式进行调用,如: thisform . release 。

Page 84: Visual Foxpro  第八章 程序设计基础

8.2.7 8.2.7 数据环境数据环境数据环境是数据库中一个具体对象生存、运

行相关的数据结构和数据信息集合。在数据环境中给出了创建或修改一个对象时

需要打开的全部表、视图和关系。

Page 85: Visual Foxpro  第八章 程序设计基础

8.2.8 8.2.8 对象的操作对象的操作11 .引用容器类对象.引用容器类对象

Visual FoxPro 有两种对象引用方式,即绝对引用和相对引用。

(( 11 )绝对引用)绝对引用绝对引用某一对象时,必须指明与该对象关联的所

有容器类对象, 例如,使表单 myform1 中的命令按钮 COMMAND1

的 CAPTION 变为“隐藏”: MYFORM1.COMMAND1. CAPTION="隐藏 "

Page 86: Visual Foxpro  第八章 程序设计基础

(( 22 )相对引用)相对引用对上述例子的另一种引用方式为:THISFORM.COMMAND1.CAPTION=“隐藏”

当编辑的正是对象 COMMAND1 的方法程序时,甚至可以直接写为: THIS. CAPTION =“隐藏”

相对引用方式下,需要使用一些关键字来标识出操作对象。

Page 87: Visual Foxpro  第八章 程序设计基础
Page 88: Visual Foxpro  第八章 程序设计基础

22 .设置对象的属性值.设置对象的属性值在 Visual FoxPro 中,一个对象的属性可以在设计时通过属

性窗口设置,也可以在运行中设置或修改,为了引用一个属性,需使用如下格式:

【命令】 PARENT.OBJECT.PROPERTY=VALUE

【功能】 对指定容器中的指定对象的指定属性设置属性值。

【说明】 父对象父对象 .. 对象对象 ..属性属性 == 值值例如:例如:

THISFORM. LABEL1.VISIBLE=.T. THISFORM. LABEL1.VISIBLE=.T. && 当前表单中标

签控件 LABEL1 是可视的

THISFORM.COMMAND1.CAPTION=“THISFORM.COMMAND1.CAPTION=“ 隐藏” 隐藏”

&& 当前表单中命令按钮

COMMAND1 的标题为“隐藏”

Page 89: Visual Foxpro  第八章 程序设计基础

3. 3. 调用对象方法调用对象方法对象创建之后,就可以从应用程序的任何位置调用该对

象中的方法,调用对象中的方法的格式如下:【命令】 PARENT.OBJECT.METHOD

【功能】 对指定容器中的指定对象调用指定的方法,在大多数情况下需要编写方法程序代码。

【说明】 父对象父对象 .. 对象对象 .. 方法方法同样可以使用相对引用的方法。

例如:例如:

MYFORM1.SHOW MYFORM1.SHOW && 显示表单 MYFORM11

MYFORM1.COMMAND1.SETFOCUS MYFORM1.COMMAND1.SETFOCUS

&& 为命令按钮 COMMAND1 设置焦点

THISFORM.RELEASE THISFORM.RELEASE && 释放当前表

Page 90: Visual Foxpro  第八章 程序设计基础

8.2.9 8.2.9 设计类与对象设计类与对象 Visual FoxPro允许用户直接编码创建类,也可使用

类设计器新建类。 11 .使用类设计器创建类.使用类设计器创建类

在类设计器中,新类的属性、事件和方法主要通过属性窗口进行设计、定义和修改。新建的子类继承父类所有的属性、方法,子类又可以对父类的属性和方法进行修改、扩充,使之具有与父类不同的特殊性。

有三种方法可以进入“新建类”对话框:有三种方法可以进入“新建类”对话框: ① 项目管理器中新建类; ②从文件菜单中新建类; ③直接在命令窗口键入 CREATE CLASS 命令。

Page 91: Visual Foxpro  第八章 程序设计基础

【例 8-20】 创建一个带有确认功能的“退出” 命令按钮自定义类。操作步骤如下:① 选定“文件”菜单中的“新建”选项,在弹出的“新建”对话框中选定“

类”单选项,然后选定新建文件按钮,屏幕上出现“新建类”对话框,如图 8-27所示。

② 在“新建类”对话框中需要指定新建类的类名(本例为:退出按钮);在“派生于”文本框中指定派生子类的基类(本例为: CommandButton);在“存储于”文本框中指定新类库名或已有类的名字(本例为:自定义类),这时将在当前目录下创建一个文件:自定义类 .VCX ,然后单击确定按钮,进入类设计器,见图 8-28所示。

图 8-27 “ 新建类”对话框 图 8-28 “ 类设计器”窗口

Page 92: Visual Foxpro  第八章 程序设计基础

③ 在类设计器中,首先在属性设置框为新建类设置属性( Caption:退出),然后为新建类设置鼠标单击事件 Click命令代码(也称为方法程序),设置过程如图 8-29 所示。

注意:自定义类退出按钮的 Click事件包含的方法程序的作用是:弹出一个信息框,信息框包含是和否按钮,图标为惊叹号,按是按钮返回值 6,释放表单。

④确定自定义类出现在工具栏上时的图标,方法是:单击选系统菜单的“类”→选“类信息”,弹出“类信息”对话框→在“工具栏图标”编辑框右侧单击按钮搜寻图标文件→选取“ C:\Program Files\Microsoft \office \Office\ forms\2052\oofl.ico”(其图标图形为: ,也可以查找其他的 ico图标文件,此处只是一个示例 )→单击确定按钮。

⑤保存修改,退出类设计器。至此,一个简单的控件自定义类退出按钮就创建好了,并以自定义类 .VCX 存放于磁盘上。

Page 93: Visual Foxpro  第八章 程序设计基础

图 8-28 “ 类设计器”窗口

图 8-29 “ 退出”按钮属性和方法程序设置窗口

图 8-27 “ 新建类”对话框

Page 94: Visual Foxpro  第八章 程序设计基础

22 .在表单设计器中使用自定义类创建对.在表单设计器中使用自定义类创建对象象

在表单设计器中创建对象的方法是:选取表单控件工具栏上的控件按钮,在表

单的适当位置上单击,具体操作见第九章。使用自定义类创建对象时,需要先将自定义

类以图标的形式添加到表单控件工具栏中,使自定义类可以像表单控件工具栏中的其他按钮一样使用。

Page 95: Visual Foxpro  第八章 程序设计基础

3. 编程方式创建类及对象通过编程的方式也可以在代码运行中创建类,其命令格式为:【命令】 DEFINE CLASSDEFINE CLASS CLASSNAME1 AS PARENTCLASS [[OBJECT.] PROPERTYNAME=EXPRESSION……][ADD OBJECT OBJECTNAME AS CLASSNAME2 ][[WITH PROPERTYLIST]……][PROCEDURE NAME STATEMENT ENDPROCEDURE]ENDDEFINE【功能】 由指定父类产生新类。 【说明】 CLASSNAME1——是新建类的名字。PARENTCLASS——是新建类的父类的名字,既可以是 Visual FoxPro 的基

类,也可以是自定义类。OBJECT. PROPERTYNAME=EXPRESSION——对属性进行赋值。ADD OBJECT OBJECTNAME AS CLASSNAME2——向类添加对象。 CLASS

NAME2指定对象的父类名。WITH PROPERTYLIST——为添加的对象指定属性及给属性赋值。PROCEDURE NAME STATEMENT ENDPROCEDURE——为类或子类指定事

件或方法的程序代码。

Page 96: Visual Foxpro  第八章 程序设计基础

8.3 8.3 调试程序调试程序程序设计完成之后,除了比较简单的程序,很少有一次运行成功的,在编译运行时,会发现它有很多错误,或不能像预期那样工作。

通常程序中可能出现三种类型的错误:编译错误、运行错误和逻辑错误。

打开“工具”菜单,选择“调试器”,进入“调试器”窗口即可调试程序。

Page 97: Visual Foxpro  第八章 程序设计基础

Visual FoxProVisual FoxPro 调试器调试器