1、本章要点本章要点1.1.类、对象、对象的属性、方法、事件类、对象、对象的属性、方法、事件2.2.表单的基本设计方法表单的基本设计方法3.3.常用控件的功能和使用方法常用控件的功能和使用方法4.4.常用控件的属性、事件常用控件的属性、事件5.5.方法程序的编写方法程序的编写面向对象编程是目前主流的程序设计方法,通过抽象思维的方式,把日常生活中常见的问题简化成人们易于理解的模型,然后在这些模型上建立关系,从而最终形成一个完整的系统。以对象为核心,主要考虑如何创建对象,并利用对象来简化程序设计。面向对象的程序设计1面向过程结构化程序设计:设计方法:自顶向下,按步骤分解开发过程:做什么到如何做,它强调
2、代码的功能是 如何实现优点:结构性强,便于设计和理解2面向对象程序设计:设计方法:从抽象到具体,按功能分解开发过程:用什么做到做什么,它将大量的工作由 相应的对象来完成,程序员只需要说明 对象完成的具体任务。优点:1、简化程序设计,提高程序代码的可重用性 2、更接近现实世界,降低开发和维护的费用 3、可以和各种模型自然的融合结构化程序设计1、开始2、黑棋走3、绘制画面4、判断胜负5、白棋走6、绘制画面7、判断胜负8、返回步骤29、显示最后结果面向对象的过程设计1、确定功能模块将游戏分为棋子、棋盘、规则系统2、第一类对象(棋子)接收用户输入,并告知第二类对象(棋盘)当前布局的变化,棋盘对象接收到
3、了棋子的变化后,在屏幕上面显示出这种变化;同时利用第三类对象(规则系统)来对棋局进行判定。例:五子棋游戏11.1 面向对象程序设计概念11.1.1 面向对象程序设计特点面向对象程序设计特点1.符合人们习惯的思维方法,即由抽象到具体、2.由简单到复杂这一循序渐进的过程,便于分析3.和解决复杂的应用问题。2.易于软件功能的维护和软件的持续性开发。3.利用继承的方式缩短程序开发周期,提高 程序设计效率。4.与可视化技术相结合,改善了软件开发时 的工作界面。11.1.2 类与对象类(Class)现实世界中,把具有相似特征的事物归为一类。类是概括客观事物的基本特征及事物外观和行为的模板。对象(Objec
4、t)现实世界中,凡是有意义的、与所要解决问题有关系的任何事物,都可以称作对象。万物皆对象。类与对象的关系:类是具有相同属性和行为的对象的抽象,是创建对象的模板。对象是类的实例;是OOP的核心。类:狗属性:毛皮颜色.方法:吃饭();睡觉();吠叫().对象:小Q属性:金色.方法:小Q.吃饭();小Q.睡觉();小Q.吠叫().VFP中的类与对象:类是创建对象实例的模板,是同种对象的集合与抽象。在VFP中对应于表单控件工具栏中的按钮。对象是类的实例,是具有属性(数据)和方法(行为方式)的实体。在VFP中对应于表单中利用控件工具按钮创建的各个具体对象。命令按钮(类)命令按钮(对象)11.1.2.4
5、类的特征1)子类:由其他类派生的类叫子类。父类:一个类可以派生多个子类的,称为父类。说明:一个子类可以拥有其父类的全部功能。2)继承性:指子类除具有父类的所有特性外,还能根据 需要对属性和方法进行修改或添加。3)封装性:指将数据和数据处理的方法包装在一起。将 方法的具体执行步骤、所需数据等隐藏起来,无需用户关心。4)多态性:同样的方法对于不同的类而言,具有不同的 实现。狗拉布拉多哈士奇.苏格兰牧羊犬导盲()拉雪橇()牧羊()吃饭();睡觉();吠叫().11.1.2.5 类的类型类可以分为基类和用户自定义类。VFP系统提供的类叫基类。VFP的基类有两种:容器类和控件类。基基 类类自定义类自定义
6、类类类控件类控件类容器类容器类11.1.2.6 类的层次结构 见书(P275)容器类:可以包含其他类的基类。将容器类的对象加入表单后,无论在设计时还是在运行时,既可以将该容器类的对象作为一个整体进行操作,也可分别对其包容的对象进行处理。控件类:可以包含在容器类中,但不能包含其他对象的类.如:表单是容器类 标签、文本框、命令按钮是控件类11.1.3 对象的属性、方法和事件1.对象的属性属性(property):本质是在类中声明的变量。是描述对象的参数,用来表示对象的特征和状态。设置属性的方法:编程方式、属性窗口编程方式(在程序执行过程中进行设置)设置对象属性的一般命令格式:表单名.对象名.属性名
7、=属性值为对象设置多个属性的命令格式:With Parent.对象名 .属性名=属性值 EndWithVFP中的操作符(P279)1)点操作符:在一个对象、属性、方法或事件之前 使用。例如 Thisform.label1.caption=“面向对象程序设计”Thisform.text1.value=10 Thisform.release2)This:表示当前对象例如 Tmand1.caption=“退出”This.readonly=.t.3)Thisform:表示当前表单4)ThisformSet:表示当前表单集属性窗口设置初始状态对象名称框选定的属性只读属性函数按钮属性设置框对属性的说明2.
8、对象的事件事件(event):由VFP事先定义好的、能被对象识别的动作,即系统或用户对某个对象所做的操作。例:Click、Dbclick、Load、MouseUp 等事件过程(Event pfrocedure):即程序代码。为处理特定事件而编写的一段程序,是对象对事件的响应。说明:只需要为表单中用到的事件编写事件代码。例:表单运行时设置表单标题为“圆面积”编写form1的load事件的程序代码:Thisform.caption=“圆面积”选择表单双击打开代码编辑窗口选择事件选择对象代码编写区Thisform.caption=“圆面积”事 件说 明Load表单或表单集加载时Init创建对象时(初
9、始化)Destroy从内存释放对象时Click鼠标单击对象时DblClick鼠标双击对象时RightClick右击对象时GotFocus当对象获取焦点时常用事件事 件说 明Unload从内存中释放表单或表单集时LostFocus当对象失去焦点时KeyPress当按下并释放某个键时MouseDown在对象上按下鼠标键时MouseMove在对象上移动鼠标时MouseUp在对象上释放鼠标键时UpClick用户单击控制的向上箭头时3.对象的方法方法(Method):用以描述针对发生的事件,对象的响应。反映对象的功能。一般而言,一个方法描述了对象可以执行的一个操作。其代码是与对象相关联的过程,称为方法程
10、序。是系统专为对象设计的子过程。方法的调用方式:对象名.方法名例如 Thisform.refresh Thisform.release常用方法:Refresh方法:重画表单或控件,并刷新所有值Release方法:从内存中释放表单或表单集SetFocus方法:为一个控件指定焦点焦点:是接收用户鼠标或键盘输入的能力。当控件具有焦点时,才能接收用户的输入。Quit方法:结束一个实例,返回到创建实例的 应用程序。Reset方法:重置计时器控件,让它从 0 开始。一盏台灯 对象台灯的特征:功率、大小、品牌、样式、价格、质量等 属性对台灯的操作:打开、关闭等 事件台灯的功能:照明 方法11.1.5 事件驱
11、动程序设计1.程序的执行由事件驱动。程序代码是为对象或对象的事件编写,程序代码的执行总是由某个事件的发生而引起。2.程序启动后根据发生的事件执行相应的事件程序,如无事件发生,则空闲等待事件发生,直到遇到程序或表单的结束语句。面向对象程序执行步骤:1)启动应用程序,装载表单和显示表单2)表单或表单上的控件等待事件发生3)事件发生时,执行对应的事件过程4)重复执行 步骤 2 和 35)遇到使程序结束的语句时结束程序运行 (关闭表单)11.2 表单设计11.2.1.1 一对一表单向导使用表单向导创建一对一表单的步骤如下:1、从“文件”菜单,选择“新建”、“表单”,然后在新建对话框中选择向导,在向导选
12、取对话框中使用鼠标选择“表单向导”。2、单击确定按钮进入“表单向导”步骤一。3、确定表单的数据源。然后进行字段选取。4、选择好表单样式及按钮类型。5、按照每组记录的排序顺序选择字段。6、选择建立好表单后的存储方式,“完成”。11.2.1.2 一对多表单向导11.2.1.3.表单设计器与表单控件工具栏设计方法:1、明确创建表单的目标、表单应具备的功能、用途 在表单中添加与此相关的控件。2、为表单及其控件设置好与之匹配的数据环境及数据 源。3、为表单中的每一个控件做恰当的属性设置。4、选择与对象、目标相关的事件,设计好事件触发的方法程序代码。表单控件工具栏标签编辑框命令按钮组复选框列表框表格容器线
13、条ActiveX控件计时器文本框命令按钮选项按钮组组合框微调控件图像形状ActiveX绑定控件页框 设置数据环境什么是数据环境:数据环境:依附于表单存在,随表单的打开自动打开;是表单中各对象的数据来源。打开数据环境设计器的方法:在创建表单或已有打开表单的情况下,可从“显示”菜单中;也可在表单快捷菜单中;还可以在表单任意空白位置右击,选择“数据环境”。数据环境中的主要属性属属 性性说说 明明默认设置默认设置AutoCloseAutoCloseTablesTables当释放表或表单集时当释放表或表单集时,是否关闭表或视图是否关闭表或视图“真真”.T.T.AutoOpenAutoOpenTables
14、Tables当运行表单时当运行表单时,是否打是否打开数据环境中的表或开数据环境中的表或视图视图“真真”.T.T.InitialSelecInitialSelectedAliastedAlias当运行表单时选定的当运行表单时选定的表或视图表或视图若无指定若无指定,在运行在运行时首先加到时首先加到”数数据环境据环境”中的临中的临时表最先被选定时表最先被选定向数据环境添加、移去表或视图添加:1)从”数据环境”菜单中选择”添加”命令2)在”添加表或视图”对话框中,从列表中选择表 或视图移去:1)在数据环境设计器中选择要移去的表或视图2)从”数据环境”菜单中选择”移去”命令数据环境中表间关系的设置与编辑
15、表在数据库中设置的永久关系会自动添加到数据 环境中。在数据环境设计器中,将字段从主表拖曳到与子 表的字段或索引标识上。11.2.6 设置属性 P290 表11-6对象属性的初始化用表单属性窗口设置。表单运行时,对象的属性用命令方式设置。11.2.7 代码编辑窗口常用的窗口打开方法:1)双击表单或对象2)选择右键菜单中的”代码”命令注意:在编写事件代码之前,首先必须选对事件。步骤:分析表单应实现的功能创建表单,设置外观根据需要设置数据环境在表单上添加所需对象,合理调整布局设置对象属性初值选择对象的事件,为对象编写程序代码11.2.9-10 表单的保存和运行注意:表单文件(.scx)备注文件(.s
16、ct)11.2.8 表单程序设计编写一个计算圆柱体体积的程序1.选择控件 确定要用到的类2.建立用户界面(界面布局)创建对象3.设置对象的属性 初始化对象属性4.选择对象事件过程及编程 创建对象的事件和方法5.保存、运行表单例 建立一个表单,要求按下“不显示”按钮不放,文字将被隐藏,同时按钮标题变成“显示”;松开按钮,文字将重新显示出来,同时按钮标题变成“不显示”。编写一个滚动字幕程序(P94)1.分析题意,选择控件 1个标签、2个命令按钮、1个计时器2.设计用户界面3.设置对象的属性 caption、fontsize、interval4.选择对象事件过程及编程 click、timer5.保存
17、、运行表单11.3 表单中的对象例:建立一个表单,浏览学生情况思考与练习:建立一个表单,可以将输入的字母转换为大写或小写显示。几个容易混淆的事件发生顺序:初始化 Load(加载数据源和表单)Init(建立对象实例和成员:先控件后容器)Destroy(释放对象实例和成员)Unload(卸载数据和外部引用)结束运行表单设计小结(一):name和caption属性的区别 数据环境中建立表间关系的方法与查询设计器中的建立方法相同。当为控件设置数据源后,若数据源表中的指针发生移动,其变化需要体现到表单上时,通常要使用 thisform.refresh 进行刷新。VFP默认将先添加进数据环境的表在当前工作
18、期中打开。(注意主表、子表的添加顺序)当表单要求用标签和文本框显示数据源表中的记录时,可以打开数据环境设计器,将表中字段直接拖动到表单中。11.4 常用表单控件标签 Label文本框 Text命令按钮和命令按钮组编辑框单选和复选控件控件的基本操作列表框和组合框表格微调控件页框计时器图像 Image线条 Line形状 Shape11.5 Active X控件11.6 用户自定义类11.4.1 控件的基本操作1.添加控件:单击要添加的控件使之呈凹状,再在表单2.适宜的位置按住左键不动拖放。2.选择控件(必须先单击“选定对象”按钮):l 单个控件:单击该控件即选中。l 多个控件:按住Shift,再分
19、别单击各控件拉框拖放。l 撤消选择:单击表单任意空白位置。3.移动控件:选中该控件,按住左键不放,拖曳到目标位置 松开。4.缩放控件:选中该控件,拖动周围的尺寸句柄(黑色方块)进行缩放。5.删除控件:选中该控件,按Delete键。按Ctrl+Z恢复。6.复制控件:选中该控件,选择“复制”,选择目标 位置,选择“粘贴”。7.调整布局:选中该控件,按“布局按钮”,选择相应 布局。11.4.2“标签”(Label)控件1.功能:在表单上显示指定文本,常用作提示和说明2.基本属性:1)Caption:指定标签的标题,显示文本信息。2)AutoSize:是否自动调整标签的大小。(.T.自动调整)3)Ba
20、ckStyle:设置标签的背景是否透明(0为透明)。4)WordWrap:允许换行显示标题。说明:在设置允许换行显示之前,必须先将AutoSize 属性设置为真(.t.)。5)ForeColor:标题字符颜色6)FontSize:设置字体大小7)Visible:标签是否可见注意:1)Caption中最多可以包含256字符。2)运行表单时不能在标签控件中直接编辑,只能在程序运行中通过代码更改。3)标签没有Value属性。11.4.3 文本框(Text)1.功能:主要用于数据表中某些数据的输入输出或编辑,以及从窗口给内存变量赋值等操作。2.常用属性及事件:Value:文本框数据初始值与类型 C型
21、N型 D型 L型Readonly:设定是否只读状态ControlSource:设置文本框内的数据来源PasswordChar:设置输入口令时显示的字符 Valid 事件:输入完成,按回车键后执行事件代码Inputmask:设置输入和显示数据的格式与长度说明:设置为”Y”,只能输入逻辑型数据 设置为“99.9”,只能输入2位整数,1位小数 的N型数据注意:文本框没有Caption属性3.文本框与标签的区别 P299例11-711.4.4 命令按钮与命令按钮组1.命令按钮(CommandButton):控制程序代码的执行、操作。通过为按钮的”click”事件编写不同的方法程序代码设置命令按钮的不同
22、功能。Caption:按钮标题 Enabled:设置命令按钮是否有效Top、Left、Height、Width:位置及大小常用事件:Click 事件:用鼠标左键单击时,将发生Activate 事件:当激活表单、表单集或页对象时,将发生例11-82.命令按钮组(CommandButton Group)多个命令按钮的集合。BackStyle:是否透明ButtonCount:设置组中单个按钮个数Value:系统为组中各按钮编号,初始状态,默认为1。运行时,通过检测编号,执行相应按钮的程序代码。说明:1)组中按钮可共用一个Click事件,也可分别使用。(命令按钮组可以被看做是一个整体)2)可以通过生成
23、器设置按钮个数及标题。例11-911.4.5 编辑框(Edit)功能:在编辑框中允许录入、编辑、显示长字段或备注字段文本,允许自动换行并能用方向键、PageUp和PageDown键 以及滚动条来浏览文本。常用属性:ControlSource:设置编辑框的数据来源 (通常为备注型字段)Readonly:设置编辑框是否为只读 Value:设置编辑框内的值ScrollBars:设置是否有垂直滚动条 (编辑框生成器)例11-1011.4.6 选项按钮组(OptionGroup)功能:用于从多个相互排斥的选项中选择其一。即单选,由按钮旁圆点指示当前选择。不适用选项个数不确定或选项个数过多的情况。常用属性
24、:ButtonCount:设置组中单个按钮个数。ControlSource:设置按钮的数据来源。Value:系统为组中各按钮编号。如无选择,Value属性的值为0。(选项按钮组生成器)例11-1111.4.7 复选框(CheckBox)功能:允许同时选择多项,单击鼠标左键改变其Value值。每项选择取值为“真”或“假”。常用属性:Caption:定义复选框的名称。ControlSource:为复选框指定数据来源。Value:保存复选框的当前状态。默认为数值型。Value=.F.或 0:未选中 Value=.T.或 1:选中 Value=2:复选框呈灰色,不可选。11.4.8 列表框与组合框1.
25、列表框(ListBox):创建可滚动列表,显示多个选项。适用选择项特别多的情况,可以多重选择,并具有移动项目位置的功能。但不能用于编辑录入数据。ColumnCount:设置列表框列数,默认为0。ListCount:统计列表中全部选项的数目。List(i):存储列表框中第i个数据项的值。Selected(i):返回一个逻辑值。表示列表框中第i个 数据项是否被选中。Value:保存当前选项的返回值。默认为数值型,返回被选项在列表框中的序号;若设置为字符型,则返回被选项的值。Row Source:列表中各选项的数据来源。RowSourceType:确定数据来源类型。ControlSource:用字段
26、或变量保存用户选择值。(列表框生成器)2.组合框(ComboBox)文本框和列表框的组合,兼有两者的功能。Style:指定组合框是下拉组合框还是下拉列表框 Value:保存当前选中项的值。RowSource:指定组合框中项的数据来源 RowSourceType:指定组合框中数据源的类型ControlSource:保存用户选择或输入值的表字段DisplayCount:指定在列表中允许显示的最大条目数Inputmask:指定下拉组合框允许键入的数值类型(组合框生成器)例11-1211.4.9 表格(grid)功能:将数据以表格形式显示和操作多行数据。常用属性:ChildOrder:()子表中与父表
27、主要关键字相连的外部关键字。ColumnCount:列的数目。ControlSource:在每一列中要显示的数据,通常是一个字段。RecordSourceType:表格中显示的数据源类型。RecordSource:表格中要显示的数据来源,默认为表的别名。表格的创建与设置 (表格生成器)注意:1)可为整张表格设置数据源(RecordSource属性)2)也可为各列单独设置数据源(ControlSource属性)3)显示多表信息时,表格的数据来源如何选择和设置。例11-13例11-1411.4.10 微调按钮(Spinner)功能:用于接受给定范围之内的数值输入。通过键盘 输入或单击该控件的上、下
28、箭头按钮来增减 其当前值。常用属性:Increment:设定按一次按钮的增减数,默认为1。Value:微调控件框的当前值。KeyBoardHighValue:设定键盘输入数值高限。KeyBoardLowValue:设定键盘输入数值低限。SpinnerHighValue:设定单击向上按钮时,微调数值最高上限。SpinnerLowValue:设定单击向下按钮时,微调数值最低下限。ControlSource:微调控件的数据源。例11-1511.4.11 页框(PageFrame)功能:页框包含页面,则使用页框可以显示多个页面。常用属性:Tabs:设置页面的选项卡是否可见。ActivePage:返回当
29、前页的页码。PageCount:页框的页面数。注意:1)页框控件不能使用生成器,要增加或减少页面只能调整 PageCount属性。2)在为不同页面添加控件之前,必须首先将该页面选中例11-16MESSAGEBOX(提示信息,对话框按钮属性 ,对话框窗口标题 )提示信息:对话框中所用到的提示文字 设置对话框按钮属性:补充:MESSAGEBOX()函数0仅有一个“确定”按钮 1有“确定”和“取消”按钮 2有三个按钮,分别是”终止”“重试”“忽略”3“是”、“否”和“取消”按钮 4“是”和“否”5“重试”和“取消”设置图标:16、32、48、64 分别代表不同的图标设置默认的选中按钮:0-第一个按钮
30、。256-第二个按钮。512-第三个按钮在对话框中按不同的键,该函数将返回不同的值1-确定 2-取消 3-终止4-重试 5-忽略 6-是 7-否注意:对话框按钮属性间只能用加号+连接11.4.12 图像(Image)功能:可在表单中显示图片,但不能修改。常用属性:Picture:要显示的图片(bmp、jpg、gif等文件)BorderStyle:决定图像是否具有可见的边框。Stretch:设置图像的剪裁方式。11.4.13 计时器(Timer)功能:以指定时间间隔重复执行某些操作。常用属性:Enabled:为.T.时,计时器在表单加载时开始工作;反之为.F.,也可由外部事件触发。Interva
31、l:事件之间的间隔时间,以毫秒ms为单位。注意:1)计时器在表单运行时不可见。2)必须为计时器设置Interval属性,否则计时器不会工作 3)计时器的时间间隔不够精确,需要时应按系统时间校正例 字幕放大&缩小11.4.14 形状(Shape)功能:用于创建矩形、圆和椭圆 等形状。常用属性:Curvature:0(矩形)99(圆或椭圆)的一个值FillStyle:确定形状是否透明或有其他填充背景。SpecialEffect:当Curvature为0时,确定形状是平面 还是三维。11.4.15 线条(Line)功能:显示各种线条常用属性:BorderWidth:线条宽度。LineSlant:线条
32、倾斜的角度。“”或“/”Height:0(水平)Width:0(垂直)11.5 Active X控件ActiveX控件是微软公司根据COM模型开发出来一种可重用组件。(1)ActiveX控件的引用工具选项控件ActiveX控件在列表框中选择控件确定 (2)在表单中引用控件11.6 用户定义类封装通用功能,提高程序开发效率。赋予应用程序统一的外观和风格。11.6.1 类的建立11.6.2 类的编辑删除类:remove class 类名 of 类库11.6.3 自定义类的使用表单设计小结(二)1、各常用控件数据源的设置数据源属性应用范围ControlSource文本框(Text),编辑框(Edit
33、),微调控件(Spinner),表格中的列(GridColumn)RowSource组合框(Combo),列表框(List)RecordSource整张表格(Grid)注意:在设置RowSource和RecordSource属性时,必须首先设置其类型(RowSourceType和RecordSourceType)2、常用方法Refresh:重新显示表单Release:关闭表单SetFocus:使对象获得输入焦点3、常用事件Click:鼠标单击时触发该事件Init:创建对象时触发该事件Load:表单装入时触发该事件Activate:当激活表单、表单集或页对象时,将触发该事件4、常用控件标签文本框
34、、编辑框命令按钮(组)、选项组、复选框组合框、列表框、表格页框Timer5、常用题型不使用表的表单设计要使用表的表单设计常用控件综合练习:1、利用student表和score表建立按姓名查询学生信息的表单.要求:若能找到则显示相关信息;若找不到,则通过消息框显“查无此人!”的提示,消息框标题为“出错处理”。点击“下一条”按钮,显示同名学生记录。2、利用department表和student表设计表单。要求:当组合框选择后,表格中显示所选系的所有学生的学号、姓名、性别;并在文本框中给出统计人数。(文本框不能修改)3、利用department表、student表和score表设计表单。要求:能根据不同情况显示并统计各系的学生人数。4、P320 课后练习表单设计小结(三)当表单中用到两个或两个以上数据表时,如何生成表格:1.若表单要求需要在表格中显示满足一个条件的记录(例如在列表框或组合框中选择某一项后,表格中显示满足这一项条件的所有记录);应在表格生成器中选择子表为基础生成表格。2.若表单要求显示各表中相关联的所有记录时,选择主表为基础生成表格。3.若表单要求显示满足多个条件的记录,或要求对满足条件的记录进行统计等操作时,利用SQL语句最方便。利用SQL语句将结果保存到新表或临时表中将新表或临时表设置为表格的数据源