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