330 likes | 488 Views
第 11 章. 面向对象程序设计. 11.1 面向对象程序设计概述. 11.1.1 面向对象程序设计的基本概念 1 .对象 (Obieot) 对象是现实生活中很常见的。例如,一个人、一台电脑、一辆汽车等都是一个对象。每个对象都有其相应的属性及附属于它的行为。例如:一辆汽车有型号、外壳、颜色等特性,又有启动、加速、停止等行为。
E N D
第11章 面向对象程序设计
11.1 面向对象程序设计概述 11.1.1 面向对象程序设计的基本概念 1.对象(Obieot) 对象是现实生活中很常见的。例如,一个人、一台电脑、一辆汽车等都是一个对象。每个对象都有其相应的属性及附属于它的行为。例如:一辆汽车有型号、外壳、颜色等特性,又有启动、加速、停止等行为。 Visual FoxPro中所研究的对象,是现实世界中具体的或概念性的事物在计算机中抽象的模型化的表示。把现实世界中事物的数据和行为,抽象成对象的属性和操作来描述。在Visual FoxPro中表单(Form)、表单集(FormSet)和控件(Control)都是对象。
2.类(Class) 类是创建对象实例的模板,是同种对象的集合与抽象。类是一个型,而对象是这是个型的一个实例(对象是类的实例化)。例如:在马路上看到的各种汽车都属于汽车的范畴,而某一辆具体的小轿车是汽车的一个实例。在这里,汽车是类,某一辆具体的小轿车就是对象。 类的基本特性是封装性、继承性和多态性。 在Visual FoxPro 6.0系统中,提供了29个基类,分为容器类(Containers)和控件类(Control)两种。容器类可以容纳其他对象,并允许访问所包含的对象。如表单类,可以包含按钮、文本框等对象。控件类不能容纳其他对象,如文本框类、组合框类、命令按钮类等。
11.1.2 对象的属性、事件和方法 1.对象的属性 属性是对象的特征,例如人的姓名、身高、体重等, 在VFP中,各种对象有多个属性,如 “标签”对象的标题(Caption)、名称(Name)等属性。 对象的属性窗口(P228)主要包含以下几个部分: (1)对象列表。 (2)属性分类页。 (3)属性列表。在该列表中列出了当前选项卡的所有属性名和它的当前取值。 (4)属性值输入框。 (5)属性说明。
2.事件(Event) 对于对象而言,事件就是发生在该对象上的事情。系统为每个对象预先定义好了一系列的事件。例如对表单进行鼠标单击,会触发表单对象的Click事件,从而执行该事件的过程代码。 (1)事件驱动工作方式 事件一旦被触发,系统马上就去执行与该事件对应的过程。待事件过程执行完毕后,系统又处于等待某事件发生的状态,这种程序扩行方式称为面象对象的事件驱动工作方式。
(2)为事件编写代码 编写代码要先打开代码编辑窗口,打开代码有以下几种方法: • 从主菜单的“显示”菜单下选择“代码”选项。 • 在表单上单击鼠标右键,在快捷菜单中选择“代码”选项。 • 在表单上双击。 • 在“属性”窗口的“方法程序”选项卡中双击方法名。 例:在表单上创建一个标签,单击该标签时,将标签的标题改为“单击”
3.方法(Method) 方法是一种特殊的过程和函数,能使对象执行某一特定的操作。 例:表单对象的circle方法。 thisform.circle (50,100,100) 可在表单上画一个圆。
11.1.2 对象的应用 一、对象的引用规则(P232) 1.通常用以下引用关键字开头 • THISFORMSET 表示当前表单集 • THISFORM 表示当前表单 • THIS 表示当前对象 • PARENT 对象上一层容器类对象 2.引用格式 格式:引用对象后跟一个点号,再写出被引用对象的属性,事件或方法程序。 例: This.Caption 本对象的Caption属性 Thisform.cls 本表单的CLS方法
3.允许多级引用 多级引用时,要逐级引用。 例: Thisform.Command1.Caption 本表单的的Command1对象的Caption属性 This.Parent.Command1.Caption 本对象的容器的Commnad1对象的Caption属性
二、编程方式设置属性值(P229) 1.属性值设置 格式:父类.对象名.属性名=属性值。 例:thisform.command1.caption='确定' this.fontbold=.t. 2.颜色的设置 RGB函数能返回一种颜色,格式如下: RGB(RedValue,GreenValue,BlueValue) 参数RedValue,GreenValue,BlueValue分别表示颜色中红、绿、蓝的成分。 例:This.Forecolor=rgb(255,255,0)
例:在表单上创建两个命令按钮,当单击Command1时在表单上画一个红色的圆,单击Command2清除表单上的内容。(要求:将Command1的标题设置为“画圆”,将Command2的标题设置为“清屏”)例:在表单上创建两个命令按钮,当单击Command1时在表单上画一个红色的圆,单击Command2清除表单上的内容。(要求:将Command1的标题设置为“画圆”,将Command2的标题设置为“清屏”) 在Command1的Click事件中: thisform.forecolor=rgb(255,0,0) thisform.circle (50,100,100) 在Command2的Click事件中: thisform.cls
11.2 创建表单 表单的创建是一个全新的领域。创建表单的过程,就是定义控件的属性,确定事件或方法、代码的过程。 表单就是一个容器,它可以容纳多个控件。 11.2.1 用表单设计器创建表单 Create form <表单>.scx 或 Modify form <表单>.scx 或 “文件”->“新建” 上一页 下一页 要 点
创建表单的操作步骤 文件 新建 表单 表单设计器 显示 运行 保存 代码 属性 表单控件 上一页 下一页 要 点
11.2.2 用表单向导创建表单 在Visual FoxPro系统中,除使用表单设计器创建新的表单外,还可以使用表单向导创建新的表单,不过由表单向导创建的只能是数据表单。 上一页 下一页 要 点
11.3 修改表单 表单一旦创建完成,表单及表单中对象的属性、方法和事件已确定。如果对已有的属性、方法和事件还有更多的需求,可以对其进行修改。 Modify Form <表单>.scx 上一页 下一页 要 点
11.4 运行表单 在表单设计器打开时,用系统主菜单或快捷菜单方式可以运行表单,另外以命令方式也可以运行表单。 Do form <表单>.scx 上一页 下一页 要 点
11.5 表单控件 11.5.1 添加表单控件 表单中添加什么样的控件是根据需求决定的,一旦确定了控件的类型,就要定义控件的属性、确定事件和方法代码。 上一页 下一页 要 点
11.5.2 控件的基本属性 1.Name属性 所有对象具有的属性,表示对象的名称 2.Caption属性 设置对象上显示的广本内容 3.Height、Width、Top、Left属性 Height和Width表示对象的高度和宽度、Top和Left表示对象在容器中的位置 4.Enabled属性 .T.:对象允许操作 .F.:对象不允许操作 上一页 下一页 要 点
5.Visible属性 .T.:对象可见 .F.:对象不可见 6.Font属性(P212) 7.Autosize属性 .T.:对象会根据内容自动改变大小 .F.:对象不会根据内容自动改变大小
11.5.3 表单控件的属性 1.标签控件 “标签”控件是按一定格式显示在表单上的文本信息,用来显示表单中各种说明和提示信息。 主要属性: Name、Caption、alignment、 forcolor、backcolor等 上一页 下一页 要 点
2.文本框控件 文本框是实现数据输入和输出的基本控件,允许用户添加或编辑保存在数据表中非备 注字段中的数据。 常用属性: • Value属性:表示文本框中的值,当编辑文本框中的文本时,Value属性的值会相应改变。 注:当向文本框输入数据时,可自动换行,但只要键入回车符,输入就结束。即文本框只能供用户输入一段数据。 • ControlSource属性:是文本框的数据源,和一个数据表字段或一个内存变量绑定,以显示和编辑该字段或变量。 上一页 下一页 要 点
Enabled • PassWordChar属性:使输入的信息以某个字符来显示。但文本框的Value属性将保存用户的实际输入值,而对用户所按的每一个键都用一般的字符来显示。 • ReadOnly属性:是用户可以看到文本框的内容,而不允许进行修改。
2.文本框的常用事件 (1)GotFocusEvent:获得焦点后所发生的事件。 (2)ValidEvent:在失去焦点之前所发生的事件。常用来检查输入数据的合法性。 (3)LostFocusEvent:控件失去焦点时发生的事件。
例:设计表单sum.scx,其中包含3个文本框,第1个和第2个文本框输入数值,第3个文本框是前两个文本框的和,第3个文本框不能够被修改。例:设计表单sum.scx,其中包含3个文本框,第1个和第2个文本框输入数值,第3个文本框是前两个文本框的和,第3个文本框不能够被修改。 设计步骤如下: • (1)表单及控件的建立 • (2)属性的设置 • (3)代码的编写 上一页 下一页 要 点
3 编辑框控件 编辑框和文本框最显著的区别是编辑框提供了垂直滚动条,当需要编辑长字段或备注字段文本时,可以使用编辑框。 例:设计表单xsda.scx,在表单中显示学生档案表中第一条记录的内容,并可以编辑和修改。 设计步骤如下: (1)新建表单xsda.scx,在它的数据环境中加入数据表。 (2) 从数据环境中分别按住学表档案表的6个字段名,拖动到表单中,可建立相应的标签、文本框和编辑框。 或 在表单中建立6个标签,提示要显示的内容。 在表单中建立5个本文框,1个编辑框。5个文本框的ControlSouce分别设置为Xsda的学号、姓名、性别、出生日期和班级,编辑框ControlSouce设置为简历。 (3)运行表单,查看效果。
4 命令按钮控件 基本属性(Caption,Name,Eanble,Visible,top,lefp,height,Width等) 命令按钮不能设置背景色,而只能设置前景色,即文本的颜色。 Picture属性:显示在命令按钮上的图像 注:在利用图像时,要注意图像的尺寸和命令按钮的大小相符,如果图像的尺寸大于按钮的尺寸,超出边界的部分将会被截断。 常用事件: Click事件
例:在前一列的基础上,再设计3个命令按钮,其中两个实现显示下一条记录和上一条记录,第3个实现表单的关闭 设计步骤如下: 在表单中新建立3个命令按钮Commandl、Command2、Command3,设置Caption属性分别为“下一条记录”、“上一条记录”、“关闭” 代码:P245
5.命令按钮组 命令按钮组中的命令按钮既可以作为一个整体使用,也可以作为单独的命令按钮使用。 常用属性: buttonCount :指定按钮组中的按钮数目。 Value:当前选中的命令按钮组中命令按钮的序号。
例: do case case thisform.commandgroup1.value=1 thisform.label1.caption="第1个命令按钮" case thisform.commandgroup1.value=2 thisform.label1.caption= "第2个命令按钮" case thisform.commandgroup1.value=3 thisform.label1.caption="第3个命令按钮" endcase
6.计时器控件 “计时器”控件主要是利用系统时钟来控制某些具有规律性、周期性任务的定时操作。“计时器”控件不能单独使用,必须与表单、容器类或者控件类一同使用。 在设计时,计时器控件是可见的;在运行时,它是不可见的。 Timer事件:计时器会自动地以一定的时间间隔激 发计时器事件(Timer) Interval属性:它表示两个计时器事件之间的时间 间隔,其值以ms(0.001s)为单位。 Enabled属性: .T.:计时器开始工作 .F.:暂停计时器的运行 上一页 下一页 要 点
例:设计表单,在表单上设计一个电子表,并可以启动和暂停它。例:设计表单,在表单上设计一个电子表,并可以启动和暂停它。 设计步骤如下: (1)新建表单,创建一个文本框Textl,一个计时器Timerl,两个命令按钮Commandl和Command2,设置它们的Caption属性分别为“启动”和“暂停”。 (2)设置Timerl的Enabled属性为.T.,Interval属性为1000。 (3)编写代码
7.选项按钮组控件 p255 选项按钮允许用户在几个选项中选择某一项,且只能选中一项,被选择的选项名前的圆圈中以黑点表示。 ButtonCount:设置选项按钮组中的选项按钮数目 Value:用户选定了哪一个按钮,如果用户选择了第2个选项,选项按钮组的Value属性就是2。 例: (见单选按钮组.scx) 上一页 下一页 要 点
8.复选框控件 p255 复选框:让用户指定一个状态选中或未选中。一般用空框代表该选项未被选定,当用户选定某个选项时,与该选项对应的方框中会出现一个“√”号。 复选框是彼此独立的,用户可以选择其中的一个或几个,甚至可以一个都不选。 Value属性: 0或.F.:该选项未被选定 1或.T.:该选项未被选定 2:表示.Null.,既不处于选定状态也不处于未选定状态,复选框看上去像一个带有阴影的方框。 例:(见复选框.scx)