VisualFoxPro表单第10章学案doc.docx
- 文档编号:17403239
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:83
- 大小:842.93KB
VisualFoxPro表单第10章学案doc.docx
《VisualFoxPro表单第10章学案doc.docx》由会员分享,可在线阅读,更多相关《VisualFoxPro表单第10章学案doc.docx(83页珍藏版)》请在冰点文库上搜索。
VisualFoxPro表单第10章学案doc
10.1面向对象程序设计技术OOP
VisualFoxPro不但仍然支持标准的过程化程序设计,而且在语言上还进行了扩展,提供了面向对象程序设计的强大功能和更大的灵活性。
面向对象的程序设计方法与编程技术不同于标准的过程化程序设计。
程序设计人员在进行面向对象的程序设计时,不再是单纯地从代码的第一行一直编到最后一行,而是考虑如何创建对象,利用对象来简化程序设计,提供代码的可重用性。
对象可以是应用程序的一个自包含组件,一方面具有私有的功能,供自己使用;另一方面又提供公用的功能,供其他用户使用。
面向对象的程序设计方法与过程化程序设计相比,有如下明显的优点:
1代码的可重用性
2程序一致性的维护
3可扩充性
10.2在VisualFoxPro中,表单及控件是应用程序中的对象。
用户通过对象的属性、事件和方法程序来处理对象。
VisualFoxPro面向对象的语言扩展部分为应用程序中的对象提供了更多的控件,同时也使得创建和维护可重用代码库更为容易。
它有如下优点:
∙更紧凑的代码。
∙在应用程序中可更容易地加入代码,使您不必精心确定方案的每个细节。
∙减少了不同文件代码集成为应用程序的复杂程度。
面向对象程序设计基本上是一种包装代码,代码可以重用而且维护起来很容易。
其中最主要的包装概念被称为类。
对象是将数据和对该数据的所有必要操作的代码封装起来的程序模块。
对象是组成程序的基本元件,是一个独立存在的实体,具有属性,方法以及可触发的事件程序。
在面向对象的程序中,对象是组成软件的基本元件,是类的一个实例,包括了数据和过程。
例如,在一个运行表单上的控件就是一个对象。
类是一组具有公共方法和一般特性的对象的描述,是一类对象的集合,对象是类的一个实例,是个体。
定义了对象特征以及对象外观和行为的模板。
类和对象关系密切,但并不相同。
类包含了有关对象的特征和行为信息,它是对象的蓝图和框架。
例如,电话的电路结构和设计布局可以是一个类,而这个类的实例--对象,便是一部电话。
类决定了对象的特征,对象具有属性
每个对象都有属性。
例如,一部电话有一定的颜色和大小。
当把一部电话放在办公室中,它又有了一定的位置,而它的听筒也有拿起和挂上两种状态。
在VisualFoxPro中,创建的对象也具有属性,这些属性由对象所基于的类决定。
属性值既能在设计时刻也可在运行时刻进行设置。
10.3类具有继承性、封装性、多态性
所有对象的属性、事件和方法程序在定义类时被指定。
此外,类还有如下特征,这些特征对提高代码的可重用性和易维护性很有用处。
∙封装
∙子类
∙继承性
一个子类可以拥有其父类的全部功能,在此基础上,可添加其他控件或功能。
例如,现有一个表示基本电话的类,用户可以定义其子类,该子类可拥有这个基本电话类的全部功能,用户还可添加上自己需要的其他功能。
1继承性一种类可以派生届出一个新类,这种由父类派生而来的类称为子类。
继承性的概念是使在一个类上所做的改动反映到它的所有子类当中。
这种自动更新节省了用户的时间和精力。
例如,电话制造商想以按键电话代替以前的拨号电话。
若只改变主设计框架,并且基于此框架生产出的电话机能自动继承这种新特点,而不是逐部电话去改造,会节省大量的时间。
继承性减少了维护代码的难度。
继承性只体现在软件中,而不可能在硬件中实现。
若发现类中有一个小错误,用户不必逐一修改子类的代码,只需要在类中改动一处,然后这个变动将体现在全部子类中。
2封装
当您在办公室内安装一部电话的时候,您也许并不关心这部电话在内部如何接收呼叫,怎样启动或终止与交换台的连接,以及如何将拨号转换为电子信号。
您所要知道的全部信息就是您可以拿起听筒,拨打合适的电话号码,然后与您要找的人讲话。
在这里,如何建立连接的复杂性被隐藏起来。
所谓抽象性便是指能够忽略对象的内部细节,使用户集中精力来使用对象的特性。
内部的复杂性可以被隐藏起来。
封装使抽象性成为可能。
封装就是指将对象的方法程序和属性代码包装在一起。
例如您可以把确定列表框选项的属性和选择某选项时所执行的代码封装在一个控件里,然后把该控件加到表单中。
∙3子类
一个子类可以拥有其父类的全部功能,在此基础上,可添加其他控件或功能。
例如,现有一个表示基本电话的类,用户可以定义其子类,该子类可拥有这个基本电话类的全部功能,用户还可添加上自己需要的其他功能。
子类继承父类的特性,且拥有新的功能和特性。
以其他类定义为起点,对某一对象所建立的新类。
新类将继承任何对父类所做的修改。
10.4vf6的面向对象技术
所有的属性、事件和方法都由类进行定义。
表单集、表单及各类控件都是VF6的基类对象。
VisualFoxPro的类有两大主要类型,因此VisualFoxPro对象也分为两大类型,它们便是容器类和控件类。
容器类和控件类
容器类可以包含其他对象,并且允许访问这些对象。
例如,若创建一个含有两个列表框和两个命令按钮的容器类,而后将该类的一个对象加入表单中,那么无论在设计时刻还是在运行时刻,都可以对其中任何一个对象进行操作。
不仅可以轻松地改变列表框的位置和命令按钮的标题,也可以在设计阶段给控件添加对象。
例如,可以给列表框加标签,来标明该列表框。
下表列出了每种容器类所能包含的对象。
容器
能包含的对象
命令按钮组
命令按钮
容器
任意控件
控件
任意控件
自定义
任意控件、页框、容器和自定义对象
表单集
表单、工具栏
表单
页框、任意控件、容器或自定义对象
表格列
表头和除表单集、表单、工具栏、计时器和其他列以外的其余任一对象。
表格
表格列
选项按钮组
选项按钮
页框
页面
页面
任意控件、容器和自定义对象
项目
文件、服务程序
工具栏
任意控件、页框和容器
控件类
控件类的封装比容器类更为严密,但也因此丧失了一些灵活性。
控件类没有AddObject方法程序。
VisualFoxPro的基类
可以在“类设计器”中创建VisualFoxPro大部分基类的子类:
VisualFoxPro的基类
类分为容器类和控件类。
容器类可容纳其它对象如表单、命令按钮组等,控件类不能容纳其它对象,如标签、命令按钮、文本框等。
1控件类
Label标签CommandButton命令按钮ListBox列表框TextBox文本框
Timer计时器
2容器类
Form表单CommandGroupFormSet
●这些类是父容器的集成部分,在“类设计器”中不能子类化。
10.5面向对象程序设计
formset(表单集)
一种容器类。
是一个或多个相关表单的集合。
可使用“表单设计器”在表单集中布置表单。
form(表单)
一种容器类。
是一个或多个页面的集合,类似标准窗口或对话框。
表单可以包含用以显示并编辑数据的控件。
表单可以包含在一个表单集中。
control(控件)
放在一个表单上用以显示数据、执行操作或使表单更易阅读的一种图形对象,如文本框、矩形或命令按钮等。
VisualFoxPro控件包括复选框、编辑框、标签、线条、图象、形状等等。
可以使用“表单设计器”的“表单控件”工具栏在表单上绘制控件。
10.5.1对象引用
在容器层次中引用对象时(例如表单集中,在表单上命令按钮的Click事件里),可以通过快捷方式指明所要处理的对象。
下表列出了一些属性和关键字,这些属性和关键字允许更方便地从对象层次中引用对象:
属性或关键字
引用
Parent
该对象的直接容器。
THIS
该对象。
THISFORM
包含该对象的表单。
THISFORMSET
包含该对象的表单集。
注释您只能在方法程序或事件代码中使用THIS、THISFORM和THISFORMSET。
绝对引用
表单集.表单.控件.属性=值
相对引用
This.parent.backcolor=rgb(192,0,0)
This.caption=”开始”
下表提供了使用THISFORMSET、THISFORM、THIS和Parent来设置对象属性的示例:
命令
包含命令的地方
THISFORMSET.frm1.cmd1.Caption="OK"
在此表单集的任意表单的任意控件其事件或方法程序代码中。
THISFORM.cmd1.Caption="OK"
在cmd1所在的同一表单的任意控件其事件或方法程序代码中。
THIS.Caption="OK"
在需要改变其标题的控件的事件或方法程序代码中。
THIS.Parent.BackColor=RGB(192,0,0)
在表单的一个控件的事件或方法程序代码中,此例的命令设置表单的背景色为暗红色。
10.5.2设置属性
既可以在运行时刻、也可以在设计时刻进行属性设置。
若要设置属性
∙请使用以下语法:
parent.Object.Property=Value
容器.对象.属性=值
例如,下列语句设置thisform表单中txtDate文本框的各种属性:
thisform.txtDate.Value=DATE()&&显示当前日期
thisform.txtDate.Enabled=.T.&&控件有效
thisform.txtDate.ForeColor=RGB(0,0,0)&&黑色文本
thisform.txtDate.BackColor=RGB(192,192,192)&&灰色背景
在上例的属性设置中thisform是最高层的容器对象。
如果thisform包含在一个表单集中,则需要在父路径上包含这个表单集:
表单集.thisform.txtDate.Value=DATE()
设置多个属性
WITH...ENDWITH结构简化了设置多个属性的过程。
例如,在表单集的表单中,要设置表格列的多个属性,可以使用以下的语法结构:
WITHTHISFORM.text1
.Width=5
.ForeColor=RGB(0,0,0)
.BackColor=RGB(255,255,255)
ENDWITH
10.5.3调用方法程序
对象能够执行的一个操作称作方法。
如果对象已创建,便可以在应用程序的任何一个地方调用这个对象的方法程序。
若要调用方法程序
∙请使用以下语法:
Parent.Object.Method
下列语句调用方法程序来显示表单,并将焦点设置在文本框上:
thisFormSet.thisForm.Show
thisFormSet.thisForm.Text1.SetFocus
thisForm.release
在表达式中,有返回值的方法程序必须以圆括号结尾。
例如,下列语句将用户自定义的GetNewCaption方法程序的返回值设置成表单的标题:
Form1.Caption=Form1.GetNewCaption()
注释传递给方法程序的参数必须放在方法程序名后面的圆括号中。
例如,Form1.Show(nStyle)。
将nStyle传递给Form1的Show方法程序代码。
10.5.4响应事件
事件是由对象识别的一个动作,进行程序设计时可以编写相应代码对此动作进行响应。
当事件发生时,该事件的过程代码将被执行。
例如,当用户单击命令按钮时,命令按钮的Click事件过程代码将被执行。
用编程方式,可以使用MOUSE命令产生Click、DblClick、MouseMove和DragDrop事件,或者使用ERROR命令产生Error事件,或者使用KEYBOARD命令产生KeyPress事件。
除此以外,用户不能用其他的程序设计方法产生其他事件,但可以调用与这些事件相关的过程。
例如,下面的语句使得thisform的Activate事件代码被执行,但并不激活这个表单:
thisform.Activate
若要激活表单,请使用表单的Show方法程序。
调用Show方法程序将显示并激活表单,同时Activate事件代码也将被执行:
thisform.Show
从内存中释放对象和引用
若一个对象的引用存在,则释放该对象并不能从内存中完全清除它。
例如,下面的命令释放原始对象thisform:
RELEASEthisform
然而,因为存在对frmInvoice中所包含的对象txtCompany的引用,这个对象并不能从内存中释放,要等到使用如下命令释放了txtCustName以后才可全部释放:
RELEASEtxtCustName
所有VisualFoxPro基类有如下的最小事件集。
事件
说明
Init
当对象创建时激活。
Destroy
当对象从内存中释放时激活。
Error
当类中的事件或方法程序过程中发生错误时激活。
所有VisualFoxPro基类有如下的最小属性集。
属性
说明
Class
该类属于何种类型。
BaseClass
该类由何种基类派生而来,例如Form、Commandbutton或Custom等
ClassLibrary
该类从属于哪种类库。
ParentClass
对象所基于的类。
若该类直接由VisualFoxPro基类派生而来,则ParentClass属性值与BaseClass属性值相同。
为事件指定代码
事件发生时,若没有与之相关联的代码,则不会发生任何操作。
对于绝大多数事件,您都不必编写代码,您只需对少数几个关键的事件编程即可。
若要编写响应事件的代码,请使用“表单设计器”中的“属性”窗口。
一段代码应置于何处,是由事件发生的顺序决定的。
请注意以下提示:
∙表单中所有控件的Init事件将在表单的Init事件之前执行,所以在表单显示以前,就可在表单的Init事件代码中处理表单上的任意一个控件。
当系统响应用户的一些动作时,自动触发事件代码。
例如,用户在控件上做出单击动作时,系统自动执行为Click事件编写的代码。
事件代码也可被系统事件触发,例如计时器中的Timer事件。
核心事件
下面是VisualFoxPro核心事件集的列表,这些事件适用于大多数的控件。
核心事件集
事件
事件被激发后的动作
Init
创建对象。
Destroy
从内存中释放对象。
Click
用户使用主鼠标按钮单击对象。
DblClick
用户使用主鼠标按钮双击对象。
RightClick
用户使用辅鼠标按钮单击对象。
GotFocus
对象接收焦点,由用户动作引起,如按Tab键或单击,或者在代码中使用SetFocus方法程序。
LostFocus
对象失去焦点,由用户动作引起,如按Tab键或单击,或者在代码中使用SetFocus方法程序使焦点移到新的对象上。
KeyPress
用户按下或释放键。
MouseDown
当鼠标指针停在一个对象上时,用户按下鼠标按钮。
MouseMove
用户在对象上移动鼠标。
MouseUp
当鼠标指针停在一个对象上时,用户释放鼠标按钮。
对象具有与之相关联的事件和方法程序
每个对象都可以对一个被称为事件的动作进行识别和响应。
事件是一种预先定义好的特定动作,由用户或系统激活。
在多种情况下,事件是通过用户的交互操作产生的。
例如,对一部电话来说,当用户提起听筒时,便激发了一个事件,同样,当用户拨号打电话时也激发了若干事件。
在VisualFoxPro中,可以激发事件的用户动作包括:
单击鼠标、移动鼠标和按键。
方法程序是与对象相关联的过程,但又不同于一般的VisualFoxPro过程。
方法程序紧密地和对象连接在一起,并且与一般VisualFoxPro过程的调用方式也有所不同。
事件可以具有与之相关联的方法程序。
例如,为Click事件编写的方法程序代码将在Click事件出现时被执行。
方法程序也可以独立于事件而单独存在,此类方法程序必须在代码中被显式地调用。
事件集合虽然范围很广,但却是固定的。
用户不能创建新的事件,然而方法程序集合却可以无限扩展。
下表列出了与复选框相关联的一些事件。
事件
说明
Click
用户单击复选框。
GotFocus
用户选择复选框。
LostFocus
用户选择其他控件。
下表列出了与复选框相关联的一些方法程序。
方法程序
说明
Refresh
复选框中的值被更新,以反映隐含数据源的数据变化。
SetFocus
焦点被置于复选框,好象用户刚使用TAB键选中复选框。
1、对象的引用格式:
表单.控件.属性=值
thisform.label1.caption="welcometouse!
"
thisform.caption="欢迎光临"
mand1.caption="欢迎光临"
thisform.backcolor=rgb(128,151,26)
thisform.label1.autosize=.T.
thisform.label1.fontsize=12
thisform.label1.fontname="宋体"
thisform.label1.forecolor=rgb(255,22,99)
2、设置属性;属性=值
Caption=“welcometouse”
fontsize=12
autosize=.T.
forecolor=rgb(255,22,99)
3、方法调用格式;表单.控件.方法
对象能够执行的一个操作功能称为方法。
mand1.setfocus设置焦点
thisform.release关闭表单
thisform.refresh刷新表单
调用方法程序
如果对象已创建,便可以在应用程序的任何一个地方调用这个对象的方法程序。
若要调用方法程序
∙请使用以下语法:
Parent.Object.Method
下列语句调用方法程序来显示表单,并将焦点设置在文本框上:
frsFormSet.frmForm1.Show
frsFormSet.frmForm1.txtGetText1.SetFocus
4事件响应
事件是对象识别的一个动作。
响应事件
当事件发生时,该事件的过程代码将被执行。
例如,当用户单击命令按钮时,命令按钮的Click事件过程代码将被执行。
用编程方式,可以使用MOUSE命令产生Click、DblClick、MouseMove和DragDrop事件,或者使用ERROR命令产生Error事件,或者使用KEYBOARD命令产生KeyPress事件。
除此以外,用户不能用其他的程序设计方法产生其他事件,但可以调用与这些事件相关的过程。
Click鼠标点击
从内存中释放对象和引用
若一个对象的引用存在,则释放该对象并不能从内存中完全清除它。
例如,下面的命令释放原始对象thisform:
RELEASEthisform
P226实例
第十一章:
表单操作
表单是VF6虽可视化的程序界面,类似windwos窗口,是应用程序与用户的界面。
本章要点:
∙创建表单
∙向表单中添加控件
∙修改表单
∙定制表单
创建表单
表单显示了表和视图中的字段和记录,而且通常包含有定位控件,以帮助您从一个记录移到另一个记录。
在VisualFoxPro中,可以用以下任意一种方法生成表单:
∙使用表单向导。
∙通过选择“表单”菜单上的“快速表单”,可以创建一个通过添加您自己的控件来定制的简单表单。
∙使用“表单设计器”修改已有的表单或创建您自己的表单。
11.1用表单向导创建表单
每当您要新建一个表单时,都可以用表单向导来开始工作。
向导会根据您对一系列问题的回答来生成一个表单。
您可以在几种不同的类型选项中进行选择,并在创建之前预览表单。
若要利用向导创建表单
1.在"项目管理器"窗口中选择“文档”选项卡,然后选择“表单”。
2.选择“新建”。
3.选择“表单向导”。
4.选择要创建的表单类型。
5.按照向导屏幕上的指令操作。
有两种表单向导可用来创建表单
通过在“工具”菜单上选择“向导”命令并选中“表单”,也可以从菜单上访问表单向导。
VisualFoxPro提供了两个不同的表单向导来帮助您创建表单:
∙若要创建基于一个表的基本表单,请选择“表单向导”。
∙若要创建包含了两个表中按一对多关系链接的数据的表单,请选择“一对多表单向导”。
用表单向导创建的表单含有一组标准的定位按钮,用以在表单中显示不同的记录、编辑记录及搜索记录等。
如果创建数据库中的表单,则“表单向导”可以使用存储在数据库中的输入掩码和格式设置。
创建操作数据的表单。
在“选项”对话框的“表单”选项卡中设置最大设计区,可以确定表单的大小。
若要运行表单向导
1.在“工具”菜单中选择“向导”子菜单,再选择“表单”。
2.在“向导选取”对话框中选择“表单向导”。
向导步骤
步骤1-字段选取
步骤2-选择表单样式
步骤3-排序次序
步骤4-完成
如果创建数据库中的表单,“表单向导”将使用数据库中的输入掩码和格式设置。
保存表单之后,可以象其它表单一样,在“表单设计器”中打开并修改它。
步骤一:
在"项目管理器"窗口中选择“文档”选项卡,然后选择“表单”。
选择“新建”。
选择“表单向导”。
步骤二:
表单向导为一对一表单。
步骤三字段选取
步骤四选择表单样式
步骤排序次序
步骤六完成,保存表单
一对多表单
一对多表单向导
创建一个表单,该表单用于操作两个相关表中的数据。
通过在“选项”对话框的“表单”选项卡中设置“最大设计区”,可以确定表单的大小。
若要运行一对多表单向导
1.在“工具”菜单中选择“向导”子菜单,再选择“表单”命令。
2.在“向导选取”对话框中选择“一对多表单向导”。
向导步骤
步骤1-从父表中选定字段
步骤2-从子表中选定字段
步骤3-建立表之间的关系
步骤4-选择表单样式
步骤5-排序次序
步骤6-完成
11.2用“表单设计器”创建表单
如果不想用向导创建表单,还可以使用“表单设计器”。
借助“表单设计器”,可以把字段和控件添加到表单中,并且通过调整和对齐这些控件来定制表单。
提供“快速表单”命令是为了使创建表单的工作变得更简单。
此命令可以启动“表单生成器”,用它可以把表或视图中选定的字段添加到表单中。
若要创建一个新的表单
1.在"项目管理器"窗口中选择“文档”选项卡。
2.选择“表单”图标。
3.选择“新建”。
4.选择“新建表单”。
此时会显示“表单设计器”窗口,可以开始创建您的表单。
“表单设计器”窗口
用“快速表单”命令添加字段
若想把表或视图中的字段迅速放到表单中,可以选择“表单”菜单中的“快速表单”。
“快速表单”将启动“表单生成器”,它用您选择的字段样式把表或视图中选定的字段添加到表单中。
“表单生成器”可以帮助您从表或视图中迅速创建表单。
若要应用“表单生成器”把字
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VisualFoxPro 表单 10 章学案 doc