VFP第六章
vfp第六章
6.3
(1)分析问题 ) (2)确定算法 ) (3)画出流程框图 ) (4)编写程序 ) 5) (5)调试程序
结构化程序设计
一、程序设计的概念和步骤
(6)建立建全的文档资料 ) 二、结构化N-S流程图 结构化 流程图
1、顺序结构
2、选择结构 、 3、循环结构 、
三、顺序结构程序设计 根据编写程序所需命令语句的 先后顺序书写每一条命令,该顺序则 先后顺序书写每一条命令, 是程序的执行顺序。如习题3.41程序。 程序。 是程序的执行顺序。如习题 程序 四、分支结构程序设计 1、简单选择 、 格式:IF <条件 条件> 格式: 条件 <命令序列 命令序列1> 命令序列 ENDIF
3、多种选择(IF的嵌套) 、多种选择( 的嵌套 的嵌套) 格式: 格式: if <条件 条件1> 条件 <命令序列 命令序列1> 命令序列 if <条件 条件2> 条件 <命令序列 命令序列2> 命令序列 else <命令序列 命令序列3> 命令序列 endif Else <命令序列 命令序列4> 命令序列 Endif
3、修改程序:主菜单笺程序——打开 、修改程序:主菜单笺程序 打开——文件名,进入程序编 文件名, 打开 文件名 辑窗口,进行修改。 辑窗口,进行修改。 习题4.38 如:习题
6.2
程序的交互式命令
一、人机交互式输入语句 程序在运行过程中需要用户从键盘上输入任意数据,此时程 程序在运行过程中需要用户从键盘上输入任意数据, 序运行暂停,等待用户输入数据并回车,才继续向下执行程序。 序运行暂停,等待用户输入数据并回车,才继续向下执行程序。这 种人机对话方式实现赋值语句有以下三种: 种人机对话方式实现赋值语句有以下三种: 1、ACCEPT 、 格式:ACCEPT [<提示信息 TO <内存变量 提示信息>] 内存变量> 格式: 提示信息 内存变量 功能:从键盘上输入字符串并赋给内存变量。 功能:从键盘上输入字符串并赋给内存变量。 2、WAIT 、 格式: 提示信息>] 内存变量> 格式:WAIT [<提示信息 [TO <内存变量 ] 提示信息 内存变量 功能:从键盘上输入单字符,可赋给内存变量。 功能:从键盘上输入单字符,可赋给内存变量。 如命令中无选项[<提示信息 屏幕将显示“按任意键继续…” 提示信息>] 注:如命令中无选项 提示信息 屏幕将显示“按任意键继续
VFP第六章课件2(循环结构)
控制循环执行的方式
控制循环执行的方式
3)用记录指针控制循环 学院英语比赛成绩数据表SH.DBF SH.DBF中包 例2:学院英语比赛成绩数据表SH.DBF中包 括以下字段:姓名( ),班级 班级( 括以下字段:姓名(C,8),班级(C, 10),英语(N ),英语(N, 0)和备用(N, 和备用(N 10),英语(N,3,0)和备用(N,3,0) ;其 中除备用字段外,其他字段均已有值。 中除备用字段外,其他字段均已有值。 编程序统计各班英语的平均成绩, 编程序统计各班英语的平均成绩,并显示平 均分前三名的班级和平均成绩( 均分前三名的班级和平均成绩(假设平均成绩 都不相同)。 都不相同)。 ( 见“程序168.PRG” 程序文件 )
<内存变量>为循环变量,作为计数器控制循环。<数 内存变量>为循环变量,作为计数器控制循环。 值表达式1>为循环变量初值; 数值表达式2> 1>为循环变量初值 2>为循环 值表达式1>为循环变量初值;<数值表达式2>为循环 变量终值,循环变量超过终值循环结束。 变量终值,循环变量超过终值循环结束。 FOR语句每循环一次 语句每循环一次, FOR语句每循环一次,自身便改变一次循环变量的 STEP短语设置改变的增量 短语设置改变的增量, 数值表达式3> 值,STEP短语设置改变的增量,由<数值表达式3> 设置。正值为增加,负值为减少,缺省默认为1 设置。正值为增加,负值为减少,缺省默认为1。在 循环中允许使用赋值语句修改循环变量的值。 循环中允许使用赋值语句修改循环变量的值。 FOR语句可以嵌套 语句可以嵌套。 NEXT任选其一 任选其一。 FOR语句可以嵌套。ENDFOR 和NEXT任选其一。
VFP 第6章
目录
上一张
结束
3.WAIT命令 . 命令 WAIT [ <字符表达式>] [TO <内存变量>]
功能:该命令显示字符表达式之值作为提示信息,暂停程序的执行 ,直到用户按任意键或单击鼠标时继续程序的执行。 说明:
如果 <字符表达式>值为空串,那么不会显示任何提示信息。如果没 有指定 <字符表达式>,则显示默认的提示信息:“按任何键继续...”。 <内存变量>用来保存用户键人的字符,其类型为字符型。
INPUT “请输入货物重量:” TO w IF w<=50 f=w*0.1 ELSE f=50*01+(w-50)*0.2 ENDIF ? “托运费为:”,f 目录 上一张 结束
&&货物重量超过50公斤时的计算公式 &&货物重量没有超过50公斤时的计算公式
用单分支选择编写YH2.prg程序如下:
VFP的结构化程序设计 第6章 VFP的结构化程序设计
6.1 程序与程序文件 6.2 程序的基本结构 6.3 模块化程序设计 本章要点
目录
上一张
结束
前面各章都是以交互方式,即在命令窗口中逐条输入命 令或通过选择菜单来执行Visual FoxPro命令的。除此之外, 常常采用程序的方式来完成更为复杂的任务。 VFP程序设计包括结构化程序设计和面向对象程序设计。 前者是传统的程序设计方法;后者面向对象,用户界面可利 用VFP提供的辅助工具来设计,应用程序可自动生成,但是 仍需用户编写一些过程代码。就此而言,结构化程序设计仍 是面向对象程序设计的基础。
,若无上级程序则返回命令窗口。 ④ QUIT:退出Visual FoxPro系统,返回到操作系统。
Visual FoxPro程序设计-电子教案 第6章结构化程序设计
3. accept命令 格式: ACCEPT [<字符表达式>] TO <内存变量> 功能:程序运行时,通过键盘把字符型常量给变量赋值 说明: ① 系统显示<字符表达式>的内容作为输入的提示信息, 如果不指定<字符表达式>,则执行命令时屏幕上只显 示光标等待输入。 ② 此命令只能接收字符型常量,用户在输入时不需要加 字符串定界符,否则系统会把定界符作为字符串内的 字符。 ③ 如果不输入内容直接按回车键,系统将把空串赋值给 指定的内存变量。
【例6-5】在学生档案表中按姓名查找满足条件的记录, 若找到则显示该学生的学号、姓名、性别、家庭住址 ;若没找到,则显示“姓名输入错误!” 【例6-6】输入货物重量,计算货物的托运费。计费标准 为每公斤0.1元,当超过50公斤时,超出部分为每公斤 0.2元。
6.2.2 嵌套的分支语句 IF语句中还可以出现IF语句,这就构成了IF语句的嵌套。 1.IF语句嵌套的一般格式 2.语句执行过程 3.说明 (1)也可以在IF子句中嵌套,或是在IF和ELSE子句中同 时嵌套; (2)每个嵌套中的IF和ENDIF必须成对出现; (3)各层嵌套不得交叉。
高职高专院校“十二五”精品示范系列教 材(软件技术专业群)
Visual FoxPro程序设计
第6章 结构化程序设计
6.1 程序和程序文件 6.2 选择结构程序设计 6.3 循环结构程序设计 6.4 过程与函数
6.1 程序和程序文件
程序是能够完成一定任务的命令的有序集合。许多任务单靠 一条命令是无法完成的,而是要执行一组命令来完成。学习 Visual FoxPro的目的就是要学习利用命令来编写程序,以完成一 些具体的任务。 程序以文件形式保存在磁盘上,被称为程序文件或命令文件 ,扩展名为.prg。VFP的程序文件和其Байду номын сангаас高级语言程序一样,是一 个文本文件。程序运行时,系统会按照一定的次序自动执行包含 在程序文件中的命令。编写程序文件与在命令窗口中逐条输入命 令相比有以下优点: (1)可以利用编辑器,方便地输入、编辑和保存程序; (2)可以利用多种方式、多次运行程序; (3)可以在一个程序中调用另一个程序。
VFP第六章对象模型和事件模型
第六章对象模型与事件模型从程序设计的方法来看,Visual FoxPro不仅支持结构化的程序设计,而且支持面向对象的程序设计(object-oriented programming,简称OOP),并提供了许多相关的可视化的开发工具。
6.1 面向对象的程序设计概述面向对象的程序设计是通过对类、子类和对象等的设计来体现的。
类(class)和对象(object)的关系密切,但并不相同。
类定义了对象特征以及对象外观和行为的模板,它刻划了一组具有共同特性的对象。
对象是类的一个实例,包括了数据和过程(操作)。
例如“汽车”就是一个类,它抽取了各种汽车的共同特性,而每一部具体的汽车就是一个对象,它是“汽车”这个类的一个实例。
在一个运行表单上的控件就是一个对象。
在Visual FoxPro中,应用程序对象主要指表单、表单集,以及表单中所包含的多个控件。
表单(form)就是用户在Windows环境下所看到的各种窗口与对话框;表单集(formset)是指包含一个或多个表单的集合,表单集中的表单可以统一处理;控件(control)对象是放在一个表单上用以显示数据、执行操作或使表单更易阅读的一种图形化对象,如文本框、标签或命令按钮等。
在Visual FoxPro中,系统提供了一些类,用户也可以根据需要自定义类。
基类(base class)是Visual FoxPro 系统提供的内部定义的类,可用作其他用户自定义类的基础。
用户自定义类(user-defined class)与Visual FoxPro 基类相似,但由用户定义,并且可用来派生子类。
在面向对象的程序设计中,通过类可以简化应用程序的设计,因为类具有继承性、多态性、封装性、抽象性等特点。
继承性(inheritance)说明了子类延用父类特征的能力。
如果父类特征发生改变,则子类将继承这些新特征。
例如,如果为一个编辑控件添加了一个新属性IsBold,那么以此控件为基础派生的子类也将拥有IsBold属性。
VFP第6、7部分(数据库基础及表的基本操作)
2 网状模型
其主要特征如下: 有一个以上的结点无双亲。 至少有一个结点有多个双亲。 缺点:结构比较复杂
3 关系模型
在关系模型中,数据的逻辑结构是一 张二维表格,即关系模型是用若干行与若 干列数据构成的表格来描述数据集合以及 它们之间的联系。每一个这样的表格被称 为一个关系。 在关系模型中,操作的对象和结果都是 二维表,这种二维表就是关系,同时每一个 关系都是一个二维表. 本书讨论的Visual FoxPro就是一种关 系数据库管理系统。
VFP命令格式及使用规则ห้องสมุดไป่ตู้
1 命令格式: (见教科书32-33页)
<命令动词> [<命令短语>…]
命令短语
具体内容 ALL RECORD n NEXT n REST FIELDS<字段名表> FOR<条件> WHILLE<条件> TO PRINTER |TO FILE <文 件名>
<范围>子句
FIELDS子句 FOR子句 WHILLE子句 TO PRINTER | TO FILE子句
21005 王盈侠 女
未婚
07/15/79
助教
480
关系数据库
1. 关系术语
(1)关系 (2)元组 (3)属性 (4)值域 (5)关键字 (6)候选关键字 (7)主关键字 (8)外部关键字
(见教科书10页)
关系的主要特点有:(见教科书11页)
(1)关系中的属性不可再分割 (2)在同一关系中不允许出现相同的属 性名(字段) (3)关系中不允许有完全相同的元组 (记录) (4)在同一关系中元组及属性的顺序可 以任意,任意交换两个元组(或属性)的位 置,不会改变关系模式。
VFP第六章
6.3 项目管理器设置
6.3 项目管理器设置
在“项目管理器”窗口,可以移动“项目管理器”的位 项目管理器”窗口,可以移动“项目管理器” 置、改变“项目管理器”的大小,还可以改变“项目管理 改变“项目管理器”的大小,还可以改变“ 器”的显示方式。 的显示方式。 在“项目管理器”窗口,拖动鼠标就可以完成对“项目 项目管理器”窗口,拖动鼠标就可以完成对“ 管理器”窗口的位置和大小的操作进行控制。 管理器”窗口的位置和大小的操作进行控制。
6.2 项目管理器的使用
6.2.5 用“其他”选项卡管理其他类型的文件
6.2.5 用“其他”选项卡管理其他类型的文件
使用“其他”选项卡, 使用“其他”选项卡,可以组织和管理项目文件中其他 类型的文件,如图像、菜单等。 类型的文件,如图像、菜单等。 操作步骤如下: 操作步骤如下: (1)打开项目文件,进入“项目管理器”窗口; )打开项目文件,进入“项目管理器”窗口; 项目管理器”窗口,选择“其他”选项卡; (2)在“项目管理器”窗口,选择“其他”选项卡; ) (3)在这一环境下,可以使用不同设计器创建、修改、 )在这一环境下,可以使用不同设计器创建、修改、 运行或移走其他类型文件。 运行或移走其他类型文件。
数据库技术及应用 Visual FoxPro
李雁翎 编著 高等教育出版社
第6章 项目管理器
本章要点
掌握创建项目的方法与步骤,掌握项目 管理器的使用 ,掌握项目管理器设置 ,掌 握逻辑结构设计方法,了解“项目”菜单功 能 。
6.1 创建项目
6.1 创建项目
系统环境下, 在Visual FoxPro系统环境下,可以利用项目管理器创建项目。 系统环境下 可以利用项目管理器创建项目。 操作步骤如下: 操作步骤如下: 系统主菜单下, (1)在Visual FoxPro系统主菜单下,打开“文件”菜单,选择 ) 系统主菜单下 打开“文件”菜单, “新建”命令,进入“新建”窗口。 新建”命令,进入“新建”窗口。 新建”窗口,选择“项目”选项,再按“新建”按钮, (2)在“新建”窗口,选择“项目”选项,再按“新建”按钮, ) 进入“创建”窗口。 进入“创建”窗口。 创建”窗口,输入创建项目文件名“人才管理” (3)在“创建”窗口,输入创建项目文件名“人才管理”,按 ) “保存”按钮,进入“项目管理器”窗口。 保存”按钮,进入“项目管理器”窗口。 项目管理器” (4)此时一个空的项目文件已建立完成。在“项目管理器”窗 )此时一个空的项目文件已建立完成。 按钮结束操作。 口,按 按钮结束操作。
VFP第6章面向对象的程序设计
03
Visual FoxPro中的事件 驱动编程
事件驱动编程的概念
事件驱动编程是一种编程范式,它通 过事件来触发程序的执行。在事件驱 动的程序中,事件是由用户操作或其 他系统事件触发的,例如点击按钮、 键盘输入等。
在事件驱动的程序中,程序的状态由 事件和事件处理程序来管理。当某个 事件发生时,相应的事件处理程序会 被调用,以响应该事件。
什么是对象
对象是面向对象程序设计的基本单元,代表了现实世界中的 事物或概念。
对象由属性和方法组成,属性描述对象的状态,方法定义对 象的行为。
对象的属性、方法和事件
属性
描述对象特性的数据元素,如颜色、大小等。
方法
定义在对象上的操作,用于实现特定的功能 或行为。
事件
由用户或系统触发,导致对象状态改变或执 行特定操作。
根据项目需求选择合适的数据访问方式,如直接访问数据 库、使用ORM框架等。
01
数据流控制
设计合适的数据流控制结构,如顺序、 循环、条件等,实现数据的处理和流转。
02
03
数据验证
对输入数据进行验证,确保数据的合 法性和准确性。
THANKS FOR WATCHING
感谢您的观看
为控件编写事件处理程序,以响应用户的操 作或系统事件。
调用方法
通过调用控件的方法来执行特定的操作,如 显示或隐藏控件。
05
面向对象程序设计在 Visual FoxPro中的应用
数据库应用程序的设计
数据库模型选择
根据项目需求选择合适的数据库模型,如关系 型、层次型或网络型。
数据结构设计
定义数据库中的表、字段、主键、外键等,以 及表之间的关系。
事件处理程序
VFP 6.0 课件6
6.3 菜单设计器的使用
• 创建菜单系统的大量工作是在Visual Foxpro 6.0提供给我们 的“菜单设计器 菜单设计器”中完成的,在那里可创建实际的菜单 菜单、 菜单设计器 菜单 子菜单和菜单选项 菜单选项。 子菜单 菜单选项
6.3 菜单设计器的使用
• 6.3.1 菜单设计器的启动 • 6.3.2 使用菜单设计器设计菜单 • 6.3.3 菜单程序的生成与运行
6.3.3 菜单程序的生成与运行
菜单系统创建后,可生成相应的菜单程序,以 便其它应用程序调用。以“学生管理系统”菜单为 例说明菜单程序生成方法: 选“菜单”菜单中 “生成”选项→在“生成菜单” 对话框的“输出文件”框中键入生成的菜单程序的 名称→单击“生成”按钮→生成扩展名为.mpr的菜单 程序文件。
② 打开一表单,选择要附加快捷方式菜单的控件双击 控件双击。 控件双击 RightClick” ③ 在该控件的代码窗口中选“RightClick 。 RightClick ④在代码窗口中,键入 “DO mymenu1.mpr”,其中 mymenu1.mpr是快捷菜单的文件名。 ⑤运行表单,对该控件单击鼠标右键,弹出快捷方式菜单。
2. 使用项目管理器启动菜单设计器 • 创建一个项目之后,在项目管理器中,选择“其他 其他”选项卡。 其他 菜单”,然后单击图中的“新建 按钮 , 新建”窗口。
6.3.2 使用菜单设计器设计菜单
1. 建立菜单系统 2. 快捷键的设置 3. 常规选项对话框与菜单选项对话框 4. 快速菜单与快捷菜单 5.预览菜单系统
④ 在表单的 Init 事件中,调用该菜单。调用该菜单的方法 是在表单的 Init 事件中添加如下代码: DO 系统菜单.mpr WITH THIS,.T. ⑤ 经过以上操作后运行表单,结果如下图所示。
VFP6
1、标签类型:86种标准标签类型 、标签类型: 种标准标签类型 2、标签向导 、
– 类似于报表向导
3、标签设计器 、
– 与报表设计器一样
第六章 报表与标签
用于在打印文档中显示或总结数据。 用于在打印文档中显示或总结数据。 报表: 报表:由数据源、布局组成。
– 扩展名:.frx、.frt 扩展名: 、 – 数据源:通常是表,视图 查询 临时表 数据源: 视图,查询 临时表等。 表 视图 查询,临时表 – 布局:定义了报表的打印格式。 布局:
§2 创建报表
用向导创建报表 创建快速报表
– 例:CREA REPORT xx FROM js; FIELD gh, xm, xb
用报表设计器创建报表
– 3个带区:页标头、细节、页注脚 个带区: 个带区 页标头、细节、 – 可添加带区:标题 总结、 可添加带区:标题/总结 总结、 列标头/列注脚 列注脚、 列标头 列注脚、 组标头/组注脚 组标头 组注脚
创建一对多报表
§3 报表的预览与打印
页面设置 预览/打印报表 预览 打印报表
– REPORT FORM Filename [for 条件 条件] [ PREVIEW ] [ TO PRINTER ] [ TO FILE 文本文件名 文本文件名]
§4 设计标签
标签:是一种多列布局的报表, 标签:是一种多列布局的报表,具有为匹配
标签: 报表,具有为匹配 标签:是一种多列布局的报表 报表
特定标签纸(如:邮件)的特殊设置。 – 扩展名:.lbx、.lbt 扩展名: 、
§1 报表类型
报表类型:表的布局类型。 报表类型:表的布局类型。 分为: 分为:
VFP6教程第6章 表单
第6章表单表单是VFP创建应用程序与应用程序界面的重要途径之一,它将可视化操作与面向对象的程序设计思想结合在一起。
表单设计器是设计表单的工具,它提供了设计应用程序界面的各种控件,相应的属性,事件。
它运用了面向对象的程序设计和事件驱动机制,使开发者能直观,方便,快捷的完成应用程序的设计与界面设计的开发工作。
6.1 面向对象的程序设计面向对象的程序设计思想是将事物的共性,本质内容抽象出来封装成类。
VFP又将软件开发常用的功能抽象封装成标准类,开发者用类定义所需对象,通过对对象的属性设置,对事件的编程完成程序设计,VFP还提供了自定义类及面向对象的其他完整机制与功能在以后将逐一进行介绍。
6.1.1对象与属性1.对象对象是类的实例化,是客观存在的具体事物,VFP标准类中有表单类,控件类等。
具体的一个表单就是表单对象。
2.属性属性是描述对象的静态特征。
如表单的颜色,标题,名称等。
常用的表单属性如表6.1所示。
表6.1 常用表单属性面元素。
6.1.2 事件与方法1.事件事件是描述对象的动态行为,它是由系统预先定义好的,由用户或系统发出动作,用对象来识别,用户可编程对此进行响应。
表6.2所示是表设计器提供的常用事件:2.方法方法是与对象相关的过程,是对象能执行的操作。
方法分为两种一种为内部方法,另一种为用户自定义方法。
内部方法是VFP预先定义好的方法,供用户使用或修改后使用。
表6.3给出常用的方法。
表6.3 常用方法3.(1)引用形式对象对属性、文件、方法的引用是用点“.”运算符。
形式:对象.属性| 方法| 事件说明:对象若有包含与被包含关系,可以从外层用,引用到内层对象。
如在后面要介绍的命令按钮Command1,对它的Caption属性的引用可以写成:mand1.Caption=“确定”,这个意思是设置当前表单中的Command1按钮的Caption属性为确定。
ThisForm代表当前表单。
(2)对象在引用中常使用的关键字如表6.4所示。
VFP6应用程序设计结构
– birthday={05/20/1980}
– Dblankdate={} – 日期格式受SET DATE、SET MARK、SET
CENTURY命令的影响 – 工具/选项/区域
4. 日期时间型(DateTime)
– tdatetime={4/17/ 2000 8:30pm} – Tdateonly={4/17/ 2000 } – Ttimeonly={8:30pm} – Tblankdate= {:} – 时间格式受SET HOURS、SET SECONDS命令的影
移动记录指针
说明:
▲注意区别命令GO TOP和GO 1,在索引文件打开时,前者把记录
指针移到数据库的第一条逻辑记录,而后者为把记录指针移到记 录号为1的物理记录上
▲若库中有记录,执行G0 TOP和GO BOTTOM后,函数BOF()
和EOF()的值均为·F·。使BOF()为真,SKIP-1;使EOF()为 真SKIP
• 也是将两个字符串连接为一个字符串,但是删去 字符串1尾部的空格符
–例如: –? “首都∶***"-"北京" –首都:北京*** –注:串1尾部的空格移到串1后
包含运算
• 格式:
–〈串1〉$〈串2〉
• 功能:
–如串1包含在串2中,表达式的值为真,否则为假
• 例如:
–"AB"$"ACBTE"结果为假(.F.) –"AB"$"ABCDE"结果为真(.T.)
• 在赋值语句的右边,表示该数组第一个元素 • 在赋值语句的左边,表示该数组所有元素
–(3)数组和数据表之间可相互转换
• 即数据表中数据可以转换为数组数据 • 数组数据也可以转换为数据表中的数据
VFP第六章
6.2 Visual FoxPro 基类 分为容器类和控件类. 容器类:是可以包含其他类的基类.有:表单 集、表单、表格、表格列、页框、页面、 命令按扭组、选项按扭组、工具栏、容器 等。 控件类:可以包含在容器类中但不可以包 含其他类的基类。
容器类 容器类可以包含其他对象,并且允许访问这些 对象。每种容器类所能包含的对象如下。
基类:系统本身提供的类称为基类。基类包括 基类 容器类和控件类。容器类是其他对象的集合, 如表格、选项按钮组;控件类是单一的对象, 不包含其他对象,如命令按钮、文本框。 子类:以其他类定义为起点,对某一对象所建 子类 立的新类。新类将继承任何对父类所做的修改。 子类可以在继承完以后在加入新的特征和功 能.P35 类库:存储类的文件,每一个以可视方式设计 类库 的类都存储在一个类库中。类库文件的扩展名 为 .VCX 。
及对象外观和行为的模版)
类的特征: 封装性:隐藏了类中对象的内部数 据或操作细节,只看到外表信息。 继承性:任何类都可以从其它已有 的类中派生,新类保持了父类中的行为 和属性,但增加了新的功能。体现了面 向对象设计方法的共享机制。 多态性:相同的操作可作用于多种类 型的对象上,并获得不同的结果。 抽象性:提取一个类或对象与众不同 的特征,而不对该类或对象的所有信息 进行处理。
第六章 对象模型与事件模型
了解面向对象的程序设计的概念 掌握类和对象的概念、类的特点 掌握对象的属性、方法和事件概念
Hale Waihona Puke 6.1面向对象程序设计概述 1.基本概念:
面向对象的程序设计是通过对类、子类和 对象等的设计来体现的。。 类:类是面向对象程序设计的核心,将具有相 同的结构、操作,并遵循相同规则的对象聚合 在一起,这组对象称为类。类是一组具有相同 行为的对象的抽象 对象仅仅是类的一个实例。(定义了对象特征以
VFP第六章
6.2 数 据 定 义
有关数据定义的SQL命令分为3组,它们是建立 (CREATE)数据库对象、修改(ALTER)数据库对象 和删除(DROP)数据库对象。每一组命令针对不同 的数据库对象(如数据库、查询、视图等)分别有 3个命令。 如针对表对象的3个命令是建立表结 构 命 令 CREATE TABLE 、 修 改 表 结 构 命 令 ALTER TABLE 和删除表命令DROP TABLE。
如果指定了本地别名,那么在整个Select语句中都必须用这个别 名代替表名。 INNER JOIN:只有在其它表中包含对应记录(一个或多个)的 记录才出现在查询结果中。 LEFT [OUTER] JOIN:在查询结果中包含JOIN左侧表中的所有记 录,以及右侧表中匹配的记录。这是左联接。 RIGHT [OUTER] JOIN:在查询结果中包含JOIN右侧表中的所有 记录,以及左侧表中匹配的记录。这是右联接。 FULL [OUTER] JOIN:在查询结果中包含JOIN两侧表中的所有 记录,这是完全联接。 [DatabaseName!]Table [[AS] Local_Alias]:指定和当前表建立联 接的表所在的数据库及表名或本地表别名。 ON JoinCondition:指定联接条件。 [INTO Destination]:指定在何处保存查询结果。如果在同一个查 询中同时包含了INTO子句和TO子句,则TO子句不起作用。如果 没有包含INTO子句,查询结果显示在“浏览”窗口中。
=、==、LIKE、<>,!=,#、>、>=、<、<= FilterCondition:指定包含在查询结果中的记录必须满足条件。筛 选条件的数目没有限制,只要将它们用.AND.或.OR.操作符连接 起来即可。也可以使用操作符.NOT.对逻辑表达式取反,或使用 EMPTY()函数检查字段是否为空等。 [GROUP BY GroupColumn]:按列的值对查询结果进行分组。 GroupColumn 可以是常规的表字段名,也可以是一个包含SQL字 段函数的字段名,还可以是一个数值表达式指定查询结果表中的 列位置。 [HAVING FilterCondition]:指定包含在查询结果中的组必须满足 的条件。它应和GROUP BY GroupColumn一起使用。 [UNION [ALL] SELECTCommand]:把一个SELECT语句的最后 查询结果同另一个SELECT语句最后的查询结果组合起来。ALL 防止UNION删除组合结果中的重复行。 [ORDER BY Order_Item ]:根据列的数据对查询结果进行排序。 每个Order_Item都必须对应查询结果中的一列。
VFP6
鼠标事件(四)
DropDown事件 组合框中,点击下箭头后,列表即将被下拉时 PROCEDURE ComboBox.DropDown
[LPARAMETERS nIndex] Scrolled事件 表格控制中,单击水平或垂直滚动条 PROCEDURE Grid.Scrolled
LPARAMETERS [nIndex], nDirection DownClick事件 ——单击控制的下箭头时 UpClick事件 ——单击控制的上箭头时
键盘事件
KeyPress事件 当用户按下并释放某个键时,发生此事件 PROCEDURE Object.KeyPress
LPARAMETERS [nIndex,] nKeyCode, nShiftAltCtrl 或
对象的引用
何时要引用对象
当要设置或取得对象的某个属性的值时; 当要执行对象的某个方法事件时;
容器层次体系
容器与容器中的控件是上下层次的关系; 一个应用程序的最高层次是 _screen或_VFP,
最低层次是一个非容器类控件或是一个不包 含任何控件的容器类控件;
层次体系示意图
表 单
表容
控
集 单器
[LPARAMETERS nIndex]
鼠标事件(二)
RightClick事件 当用户在控制上右击鼠标时发生 PROCEDURE Control.RightClick
[LPARAMETERS nIndex] DblClick事件 当连续两次点击鼠标左键并释放时发生 PROCEDURE Object.DblClick
LPARAMETERS nKeyCode, nShiftAltCtrl
改变控件内容的事件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
了解面向对象的程序设计的概念 掌握类和对象的概念、类的特点 掌握对象的属性、方法和事件概念
6.1面向对象程序设计概述 1.基本概念:
面向对象的程序设计是通过对类、子类和 对象等的设计来体现的。。 类:类是面向对象程序设计的核心,将具有相 同的结构、操作,并遵循相同规则的对象聚合 在一起,这组对象称为类。类是一组具有相同 行为的对象的抽象 对象仅仅是类的一个实例。(定义了对象特征以
Clear
Object.Clear
清除组合框或列表框 控件中的内容 通过把Visible属性设 置为 .F.,来隐藏表单、 表单集或工具栏
Hide
Object.Hide
Show
Object.Show
把Visible属性设置 .T., 显示并激活一个表单或 表单集,并确定表单的 显示模式 重画表单或控件,并刷 新所有值 从内存中释放表单或表 单集 结束一个VFP6.0实例, 返回到创建它的应用程 序。
基类:系统本身提供的类称为基类。基类包括 基类 容器类和控件类。容器类是其他对象的集合, 如表格、选项按钮组;控件类是单一的对象, 不包含其他对象,如命令按钮、文本框。 子类:以其他类定义为起点,对某一对象所建 子类 立的新类。新类将继承任何对父类所做的修改。 子类可以在继承完以后在加入新的特征和功 能.P35 类库:存储类的文件,每一个以可视方式设计 类库 的类都存储在一个类库中。类库文件的扩展名 为 .VCX 。
6.2 Visual FoxPro 基类 分为容器类和控件类. 容器类:是可以包含其他类的基类.有:表单 集、表单、表格、表格列、页框、页面、 命令按扭组、选项按扭组、工具栏、容器 等。 控件类:可以包含在容器类中但不可以包 含其他类的基类。
容器类 容器类可以包含其他对象,并且允许访问这些 对象。每种容器类所能包含的对象如下。
AddItem
Control.RemoveItem(nIn RemoveItem dex)
基类事件的最小集合
事件 Init Destroy Error 说明 当对象创建时激活。 当对象从内存中释放时激活。 当类中的事件或方法过程中发生错误 时激活。
基类属性的最小Leabharlann 合属性 Class BaseClass 说明 该类属于何种类型。 该类由何种基类派生而来,例如 Form、 Commandbutton 等
4. 调用对象的方法程序 若对象已经创建,可以在应用程序的任何地方调 用该对象的方法程序。调用方法程序的格式为: 引 用对象.方法程序 如: Form1.Refresh 5. 对象对事件的响应 采用面向对象的程序设计方法设计的应用程序(比 如VFP),其程序的执行是有事件驱动的。 程序启动后即进入等待状态,程序中的代码不会主动 被执行,一旦某个事件发生,则执行对应的过程代码 (没有代码不执行),执行完毕VFP再次进入等待状 态。
属性或关键字 ActiveControl ActiveForm ActivePage Parent THIS THISFORM
引用 当前活动表单中具有焦点的控件 当前活动表单 当前活动表单中的活动页 该对象的直接容器 该对象 包含该对象的表单
THISFORMSET 包含该对象的表单集
3. 设置对象的属性 可以在属性窗口中进行可视化设置 可以在程序中用如下格式进行设置: 引用对象.属性 = 值 如:thisform .text1.value=“只要功夫深” 想一次设置多个属性时,可以采用 WITH …… ENDWITH 语句。 如:WITH form1.text1 .Value="书山有路勤为径" .ForeColor=rgb(255,0,0) .FontSize=18 .FontName="隶书" .FontBold=.T. ENDWITH
ClassLibrary 该类从属于哪种类库。 ParentClass 对象所基于的类。若该类直接由 Visual FoxPro 基类派生而来,则 ParentClass 属性值与 BaseClass 属 性值相同。
6.3引用对象
引用对象时,对象与对象之间、对象与属性 之间需用分隔符 . 进行分隔。 绝对引用 从容器的最高层引用对象,给出对象的绝对地址。 如:form1.text1.value 相对引用 在容器层次中相对于某个容器层次的引用。如: thisform .text1.value 系统变量 _SCREEN 表示屏幕对象,与 ActiveForm 等组合可以在不知道表单名的情况下 处理活动表单。
对象:是类的一个实例,包括了数据和过程。 对象 具有所在类所定义的全部属性和方法。 VFP有两种对象:容器对象和控件对象。 VFP 属性:控件、字段或数据库对象的特性。 属性 事件:由对象识别的一个动作。 事件 方法:与对象相联系的由程序执行的一个处 方法 理过程,即处理事件的一组代码。 用户不可以为对象创建新的事件,但可以创 建新的方法程序。
Refresh Release Quit
Object.Refresh Object.Release
Object.Quit
向表格控件 AddColumn Grid.AddColumn(nIndex) 中添加列对 象 Control.AddItem(cItem[, nIndex][,nColumn]) 向组合框或 列表框中添 加一个新数 据项 从组合框或 列表框中移 去一项
MouseDown MouseUp MouseMove InteractiveChange.. ProgrammaticChange
在对象上按下鼠标 在对象上松开鼠标 在对象上移动鼠标 交互式改变对象值 可编程地改变对象值
3. 方法 VFP6.0 中的常用方法 名称 调用语法 功能
Object.AddObject 在运行时向容器对象 AddObject (cName,cClass[,…]) 中添加对象
容器 命令按钮组 命令按钮 容器 控件 表单集 表单 任意控件 任意控件 表单、工具栏 页框、任意控件、容器或自定义对象 能包含的对象
表格列
表格
标头对象以及除表单、表单集、 工具栏、计时器和其他列对象 以外的任意对象 表格列
选项按钮组 选项按钮 页框 页面 工具栏 页面 任意控件、容器和自定义对象 任意控件、页框和容器
及对象外观和行为的模版)
类的特征: 封装性:隐藏了类中对象的内部数 据或操作细节,只看到外表信息。 继承性:任何类都可以从其它已有 的类中派生,新类保持了父类中的行为 和属性,但增加了新的功能。体现了面 向对象设计方法的共享机制。 多态性:相同的操作可作用于多种类 型的对象上,并获得不同的结果。 抽象性:提取一个类或对象与众不同 的特征,而不对该类或对象的所有信息 进行处理。
利用进行应用程序设计时,必 须创建事件循环,事件循环由 Read Events命令创建,由clear events命令终止。当发出clear events命令以后,VFP就从Read Events后一条命令开始执行。
6.4 事件与方法
1.VFP 中的事件 VFP 中的常用事件分类
事件类型 鼠标事件 键盘事件 事件名称 Click DblClick RightClick DropDown DownClick UpClick KeyPress
改变控件内容的 InteractiveChange 事件 控件焦点的事件 GotFocus LostFocus When Valid
一些核心事件和触发时
事件 Load Unload Init Destroy Click DblClick RightClick GetFocus LostFocus KeyPress 触发时间 当表单或表单集被加载时产生 当表单或表单集从内存中释放时产生 创建对象时产生 从内存中释放对象时产生 用户在对象上单击鼠标时产生 用户在对象上双击鼠标时产生 用户在对象上单击鼠标右键时产生 对象得到焦点时产生 对象失去焦点时产生 用户按键时产生