资源描述
第五章 面向对象程序设计与表单制作
一、面向对象程序设计的基本概念
面向对象的程序设计是可视化的交互式程序设计,其基本出发点是:尽可能按人类认识世界的方法和思维方式来分析问题、解决问题。矚慫润厲钐瘗睞枥庑赖。
1.对象(Object)
对象是一种将数据和操作过程结合在一起的数据结构,是现实世界中待处理的客观实体的抽象描述。凡是我们要处理的事物都可成为处理的对象,包括可见的人、汽车、电话等,不可见的事物如感情、思想等。在VFP中,常见的对象是表单、标签、文本框、复选框、列表框等。聞創沟燴鐺險爱氇谴净。
对象
容器类对象:可以容纳其它对象的对象,如表单(可容纳任何对象)、表格(容纳表格列)、命令按钮组(容纳命令按钮)
控件对象 :表单上显示数据和执行操作的基本对象,如标签、文本框、列表框等(它们不再含任何对象)。
VFP中的对象可分为两类残骛楼諍锩瀨濟溆塹籟。
2.对象的属性(Property)
属性是描述对象的物理特征的值,如文本框有名字(Caption)、数据源属性(ControlSource)等;而复选框具有文本框有名称(Name)、可选状态(Enabled)和可见性(Visable)属性等。酽锕极額閉镇桧猪訣锥。
由此可见对许多对象来讲,有些属性是相同的,具有通用性,如Caption(指定对象的标题)、Name(指定对象的名称)、 Visible(指定对象是可见还是隐藏) 、Value(指定对象当前的取值)等。另外一些属性具有特殊性,是针对一些具体的对象的。如数据源属性(ControlSource)是针对文本框等对象的。彈贸摄尔霁毙攬砖卤庑。
表单及控件的属性可以通过属性窗口在设计时设置,也可通过编写代码在表单运行时设置(见后)。
3.对象的事件(Event)
事件是由对象识别的一个动作,泛指由用户或系统触发的一个特定动作。它多数情况下由用户交互操作时的动作产生,如用鼠标单击(Click)、双击(DblClick)、按键(Key Press)、移动鼠标(MouseMove)和初始化(Init)都是激发事件的动作。一个对象可有多个事件,但每一事件都是由系统规定的。一个事件也可由程序代码和系统产生。謀荞抟箧飆鐸怼类蒋薔。
4.事件代码(方法)(Method)
事件代码是一组操作代码,它与对象相关联。当一个对象的事件出现时,为事件编写的代码将随之执行,即要执行事件代码。所以事件代码应事先在代码编辑窗口中编写好,且编写中可以调用方法程序(用户在代码编辑窗口中写入的代码相当于为该方法程序增强了功能)。厦礴恳蹒骈時盡继價骚。
对象、事件、事件代码和方法的关系如下:
事件Click
对象
事件代码(用户编写)Click
方法程序(VFP内定)
代码编辑窗口
注意以下说法:
1. 为事件编写代码
2. 方法程序不可见,但可以通过代码编辑窗口对其进行增加。用户在代码编辑窗口中写入的代码相当于为该方法程序增强了功能茕桢广鳓鯡选块网羈泪。
1. 为事件编写的方法将在事件出现时执行
2. 方法也可以独立于事件而单独存在,此类方法必须在代码中被调用。
代码编写中需要引用对象、对象的属性、事件和方法程序。
引用方式有两种:绝对引用和相对引用(类似于DOS中的绝对路径和相对路径,只不过把“\”换成了“.”。
绝对引用时,必须指明与该对象关联的所有容器对象,如使表单(form1)的命令按钮command1的caption的属性变为“退出”应写为:mand1.caption=“退出”鹅娅尽損鹌惨歷茏鴛賴。
若用相对引用方法,应写为:mand1.caption=“退出”,当正在编辑command1的事件代码时甚至可直接写为:this.caption=“退出”籟丛妈羥为贍偾蛏练淨。
常用关键字:thisform 当前表单(包含该对象的表单)
this 当前对象(本对象)
parent 对象的上一层包容对象
引用格式:引用关键字后加一个点号,再写出被引用对象或对象的属性、事件或方法程序
除在属性窗口中设置、修改对象的属性外,也可通过代码编写让表单运行时设置和修改,如:mand1.caption=“退出”預頌圣鉉儐歲龈讶骅籴。
thisform.label1.visible=.t.
thisform.check1.value=1
调用(引用)方法:
form1.show 显示表单form1
thisform.release 释放当前表单
thisform.refresh 刷新当前表单
5.类(Class)与子类
类是具有相同属性、共同操作性质的对象的集合。类是对象的抽象描述,对象则是类的实例。类即是已经定义了对象特征和行为的模板,在表单控件工具栏中,每个控件按钮都代表一个类,用其中一个按钮在表单上创建一个控件就是一个对象。由此可看出:渗釤呛俨匀谔鱉调硯錦。
.类是对象的定义,它规定并提供了对象具有的属性、事件和方法程序。
.对象通过类来产生。
①基类:由VFP定义的类,如表单控件工具栏中的类。
②子类:以其他类定义为起点,对某一对象所建立的新类。一个子类可以拥有其父类的全部功能,在此基础上,可添加其他控件或功能。铙誅卧泻噦圣骋贶頂廡。
⑴类的特性
类具有继承性、封装性和多态性。
.继承性:继承性的概念是使在一个类上所做的改动反映到它的所有子类当中。
.封装性:封装就是指将对象的方法程序和属性代码包装在一起。例如用户可以把确定列表框选项的属性和选择某选项时所执行的代码封装在一个控件里,然后把该控件加到表单中。擁締凤袜备訊顎轮烂蔷。
⑵基类、子类和对象的关系:
基类
子类
对象
二、表单设计(以下内容以上机操作为主,仅作一般性学习)
表单是Visual FoxPro提供的最常见的数据交互式操作界面,各种对话框和窗口是表单的不同表现形式。表单设计充分体现了面向对象程序设计的风格,是Visual FoxPro可视设计的精华所在。表单为数据库信息的显示、输入和编辑提供了非常简便的方法,表单的设计是可视化编程的基础。贓熱俣阃歲匱阊邺镓騷。
表单是Visual FoxPro常用的具有自己的控件、属性、事件、方法程序、数据环境的容器对象。
1.表单控件
表单中使用的控件是提供给用户的基于标准化图形界面的多功能、多任务的操作工具。
表单中的控件有两类:与数据绑定的控件和不与数据绑定的控件。与数据绑定的控件与数据源(表、视图或表和视图的字段或变量等)有关,这类控件需要设置控制源(ControlSouree)属性,用户使用与数据绑定的控件可以将输入或选择的数据送到数据源或从数据源取出有关数据。另一类不与数据绑定的控件不需要设置控制源(ControlSource)属性,用户在控件输入或选择的值只作为属性设置,该值不保存。表单中常用的控件如下表所示。坛摶乡囂忏蒌鍥铃氈淚。
表单常用控件
控 件
功 能
控 件
功 能
Label
创建用于显示正文内容的标签
Spinner
创建微调控件
Textbox
创建文本框
Shapc
创建显示方框、圆或椭圆的Shape控件
ListBox
创建列表框
Grid
创建表格
Ebfflox
创建编辑框
PagcFram~
创建包含若干页的页框
ComboBox
创建组合框
Image
创建用于显示。BMP图片的图像控件
CheckBox
创建复选框
Timer
创建能在一定时间执行代码的定时器
CommandButton
创建命令按钮
Linc
创建显示水平、垂直、或斜线的控件
CommandGroup
创建命令按钮组
OLE
创建OLE容器控件
OptionButton
创建选项按钮
OLEBound
创建OLE绑定型控件
OpUonGmup
创建选项按钮纽
2、表单属性
表单的属性用于定义表单及其控件的性质、特征。每个表单及其控件都有它的一组属 性。通常这些属性的大多数都是相同的。表单及控件的属性可以通过属性窗口在设计时设 置,也可通过编写代码在表单运行时设置。表单和控件中有些属性具有通用性,另外一些属性具有针对性(将在具体控件使用时介绍)。下表所列的部分属性是具有通用性的属性。蜡變黲癟報伥铉锚鈰赘。
常用表单及控件属性
属 性
说 明
属 性
说 明
Caption
指定对象的标题
Width
指定屏幕上一个对象的宽度
Name
指定对象的名字
Left
对象左边相对于父对象的位置
Value
指定对象当前的取值
Top
对象上边相对于父对象的位置
FontName
指定对象文本的字体名
Movable
运行时表单能否移动
FontSize
指定对象文本的字体大小
Closable
标题栏中关闭按钮是否有效
ForeColor
指定对象中的前景色
Controlbox
是否取消标题栏所有的按钮
BackColor
指定对象内部的背景色
MaxButton
指定表单是否有最大化按钮
BorderStyle
批定边框样式
MinButton
指定表单是否有最小化按钮
AlwaysOnTop
是否处于其他窗口之上
WindowStatc
指定运行时是最大化或最小化
AutoCenter
是否在VisualFoxPro主窗门内自动居中
Visible
指定对象是可见还是隐藏
Height
指定屏幕上—个对象的高度
3.表单事件
表单的事件是表单及其控件可以识别和响应的行为和动作。每个表单及其控件都有多个事件,每个事件都是由系统事先规定的。一个事件对应于一个程序,称为事件过程。事件一旦被触发,系统马上就去执行与该事件对应的过程。待事件过程执行完成后,系统又处于等待某事件发生的状态,这种方式称为事件驱动方式。表单中常用事件如下表所示。買鲷鴯譖昙膚遙闫撷凄。
事 件
事件的激发
事 件
事件的激发
Init
当对象创建时激活
GotFocus
对象接收到焦点
Load
在创建对象之前
LostFocus
对象失去焦点
Unload
释放对象时
KeyPress
当用户按下或释放一个键
Destroy
当对象从内存释放时激活
MouseDown
当用户按下鼠标键
Click
用户鼠标单击对象
MouseMove
当用户移动鼠标到对象
DblClick
用户鼠标双击对象
MouseUp
当用户释放鼠标
RightClick
用户鼠标右击对象
Error
当发生错误时
4、表单方法程序
表单的方法程序是对象能够执行的、完成相应任务的操作命令代码的集合,是Visual FoxPro为表单及其控件内定的通用过程。方法程序过程代码由Visual FoxPro系统定义,对用户是不可见的,但可以通过代码编辑窗口对其进行增加。下表给出了表单中常用的方法程序。綾镝鯛駕櫬鹕踪韦辚糴。
方法程序
用 途
方法程序
用 途
AddObject
在表单对象中增加一个对象
MOve
移动一个对象
BOX
在表单对象上画—个矩形
Print
在表单对象上打印一个字符串
Circle
在表单对象上画一段圆弧或一个圆
Pset
给表单上的一个点设最一个指定的颜色
Cis
清除一个表单中的图形和文本
Refresh
重新绘制表单或控件,并更新所有值
Clear
清除控件巾的内容
Release
从内存中释放表单或表单集
Draw
重新绘制表单对象
SaveAs
将对象存入SCX文件中
Hide
隐藏表单、表单集或控件
Show
显示表单并确定该表单是模态还是非模态
Line
在表单对象上绘制一条线
5.表单数据环境
每一个表单或表单集都包括一个数据环境。表单的数据环境是指在创建表单时需要打开的全部表、视图和关系。在表单的数据环境中,可以添加与表单相关的数据表或视图,并设置好表单、控件与数据表或视图中字段的关联,形成一个完整的数据体系。下表给出了常用的数据环境属性和与表单及控件的数据源相关的属性。驅踬髏彦浃绥譎饴憂锦。
属 性
说 明
AutoOpcnTables
控制当运行表单时,是否打开数据环境的表或视图
AutoCIoseTables
控制当释放表或表单集时,是否关闭表或视图
InitialSclcctedAlias
当运行表单时,选定的表或视图
Filer
排除不满足条件的记录
ControlSource
指定与文本框、编辑框、列表框,组合框及表格中的一列等对象建立联系的数据源(字段)
CursorSource
指定与临时表相关的表或视图的名称
RecordSourcc
指定与表格控件建立联系的数据源(表或视图)
RecordSourccTYpe
指定与表格控件建立联系的数据源打开的方式
RoWSource
指定组合框或列表框的数据源
RowSourceType
指定组合框或列表框的数据源类型
数据环境的设置过程:①打开数据环境设计器②向数据环境添加表或视图③设置关系④向表单添加字段;
6.表单制作
表单设计中经常使用的主要设计工具有:表单设计器、表单向导、属性窗门、生成器、数据环境设计器、对话框、控件工具栏、布局工具栏、调色板工具栏、代码设计窗口、浏览器等。猫虿驢绘燈鮒诛髅貺庑。
表单的设计过程可以分为以下几个步骤:
(1)创建表单。
(2)为表单添加控件。
(3)设置表单的控件属性。
(4)选择与控件相适应的事件。
(5)为事件配制方法程序。
(6)设置数据环境。
在VisualFoxPro中,可以用下列方法生成表单:
·使用“表单向导”。
·通过“表单”菜单上“快捷表单”选项。
·使用“表单设计器”。(用得最多!)
·使用命令;CREATE FORM
常用控件及常用属性:
①标签: NAME (名称,依创建次序分别为Label1、Label2…)
Caption (显示的标题, 用户自行设置, 缺省为Label1、Label2…)
其它常用属性 FontName(字体)、FontBold(粗细)、FontItalic(斜体)、FontSize(字号大小)锹籁饗迳琐筆襖鸥娅薔。
②文本框:NAME (名称,依次为Text1、Text2…)
ControlSource(文本框数据源,即数据环境中的字段)
Value(文本框值,默认为空,表示字符型;0、{ }、和.T.分别表数值型、日期型和逻辑型)
PasswordChar(取“*”时用于密码输入)
③命令按钮:NAME (名称,依次为Command1、Command2…)
Caption (按钮上显示的标题, 用户自行设置, 缺省为Command1、Command2…)
Enable(按钮是否可用,取.T.或.F.)
Visible(按钮是否可见,取.T.或.F.)
④命令按钮组:NAME (名称,依次为CommandGroup1、CommandGroup2…)
ButtonCount(组中命令按钮个数)
⑤复选框:NAME (名称,依次为Check1、Check2…)
Caption (标题, 用户自行设置, 缺省为Check1、Check2…)
Value(.T.或1时复选框中显示“∨”,表示选中;.F.或0时为空白,表示未选中;NULL或2时显示灰色) 構氽頑黉碩饨荠龈话骛。
ControlSource(复选框数据源,即数据环境中的字段)
⑥选项按钮组:NAME (名称,依次为Option1、Option2…)
Caption (标题, 用户自行设置, 缺省为Option1、Option2…)
ButtonCount(组中选项按钮个数)
Value(1表示选中,0表示未选中)
ControlSource(选项按钮组数据源)
⑦组合框:NAME (名称,依次为Combo1、Combo2…)
Caption (标题, 用户自行设置, 缺省为Combo1、Combo2…)
RowSource(组合框显示的数据来源,一般选表中一个字段)
RowSourceType(数据源类型,常选6-字段)
Style(取0在组合框中可输入或选择,取2只可选择)
⑦列表框:NAME (名称,依次为List1、List2…)
Caption (标题, 用户自行设置, 缺省为List1、List2…)
其它属性与组合框的含义和用法基本一样。
⑧表格:NAME (名称,依次为Grid1、Grig2…)
Caption (标题, 用户自行设置, 缺省为Grid1、Grig2…)
ColumnCount(表格中的列数)
RecordSourceType(表格数据源类型,常设置为“1-别名,”,取已打
开表的字段内容)
RecordSource(表格数据源)
列属性:
表格中第i列Columni的ControlSource( 第i列数据源)
Headeri的Caption(第i列的列标题)
展开阅读全文