版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VisualFoxPro程序设计基础教程(第二版))第1章第一页,共139页。主要参文献:[1]萨师煊,王珊.数据库系统概论(第三版).北京:高等教育出版社,2000[2]杨冬青,唐世谓等译.数据库系统概念(原书第4版).北京:机械工业出版社,2003[3]史济民,汤观全.VisualFoxPro及其应用系统开发.北京:清华大学出版社,2000[4]杨智辉,胡晓波,周颖.MicrosoftVisualFoxPro8.0标准教程.北京:海洋出版社,2004[5]MSDNLibraryVisualStudio6.0:VisualFoxPro文档/使用VisualFoxPro/用户指南|程序员指南第二页,共139页。第1章VisualFoxPro基础数据库基础VisualFoxPro简介VisualFoxPro6.0基本概念与规则面向对象程序设计的概念VisualFoxPro6.0的程序设计工具小结第三页,共139页。1.1.1数据库系统及其特点与发展历史数据库技术是在20世纪60年代末兴起的一种数据管理方法,也是信息管理中的一项非常重要的新技术。由于数据库具有数据结构化、冗余度低、程序独立性高和易于扩充、易于编制应用程序等优点,因此近年来得到迅速发展,被广泛应用于国民经济、文化教育、企业管理、电子商务和电子政务等各个领域,为计算机应用开辟了广阔的天地。第四页,共139页。1.数据、信息和数据库数据和信息密切相关,但又有区别。
数据(Data)在一般意义上被认为是对客观事物特征所进行的一种抽象化、符号化表示。信息(Information)通常被认为是有一定含义的、经过加工(处理)的、对决策有价值的数据。数据库(DataBase,DB)在通俗的意义上可理解为存储数据的仓库,它是按一定组织方式存储的相互有关的数据的集合,这些数据不仅彼此关联,而且可动态变化。数据库管理系统(DataBaseManagementSystem,DBMS)的概念。它是数据库系统的管理控制中心第五页,共139页。DBMS的功能提供数据库定义语言(DataDefinitionLanguage,DLL),供用户定义数据库文件结构,建立所需的数据库。提供数据库操纵语言(DataManipulationLanguage,DML),实现对数据库数据的基本操作:检索、插入、修改和删除。提供核心控制程序,实现对数据库运行操作的统一管理,包括并发控制、存取控制(安全性检查)、完整性约束条件的检查和执行、数据库内部的维护(如索引、数据字典的自动维护)等。提供一组实用程序,完成数据库的建立和维护功能,包括初始数据的载入、转换功能,数据库的转储功能,数据库的性能监视、分析功能,数据通信功能等。第六页,共139页。本书用到的数据实例P2-P3 表1-1~表1-5在关系型数据库系统中,表中的一列称为一个字段,一行称为一条记录,一条记录由多个字段构成,多条记录的集合则构成一个数据表文件(在VisualFoxPro中以.DBF为扩展名)。第七页,共139页。本书用到的数据实例(续)DZ.DBF(读者信息表):
{dzbh(读者编号),dzxm(读者姓名),dzxb(读者性别),gzdw(工作单位),jtzz(家庭住址),zlbh(种类编号),dhhm(电话号码),dznl(读者年龄),bz(备注)}
SJ.DBF(书籍信息表):
{sibh(书籍编号),sjmc(书籍名称),sjzz(书籍作者),cbs(出版社),ys(页数),jg(价格),lbbh(类别编号),bz(备注)}JY.DBF(借阅信息表):
{jybh(借阅编号),dzbh(读者编号),sjbh(书籍编号),cjrq(出借日期),hsrq(还书日期),bz(备注)}DZZL.DBF(读者种类表):
{zlbh(种类编号),zlmc(种类名称),jssl(借书数量),jsqx(借书期限),bz(备注)}SJZL.DBF(书籍种类):
{lbbh(类别编号),lbmc(类别名称),gjc(关键词),bz(备注)}
第八页,共139页。2.数据库系统数据库系统(DataBaseSystem,DBS):以数据库应用为基础的计算机系统(1)计算机硬件(2)数据库(3)数据库管理系统(4)相关软件(5)人员管理员(DataBaseAdministrator,DBA)应用程序员用户第九页,共139页。3.数据库系统的特点(1)面向全组织的复杂的数据结构(2)数据冗余度小,易扩充(3)具有较高的数据和程序的独立性(4)统一的数据控制功能
1)
安全性控制
2)完整性控制
3)并发控制第十页,共139页。应用A应用B应用C应用D应用E应用F用户模式1用户模式2用户模式3逻辑模式存储模式数据库映象一:用户模式/逻辑模式映象二:逻辑模式/存储模式图1-2数据库系统体系结构数据库系统体系结构第十一页,共139页。数据库系统体系结构(续)三级模式用户模式(外模式):数据库用户的数据视图逻辑模式(模式):对数据库中全体数据的逻辑结构和特性的描述存储模式(内模式):对数据库在物理存储器上具体实现的描述两次转换用户模式/逻辑模式映像:实现数据的逻辑独立性逻辑模式/存储模式映像:实现数据的物理独立性第十二页,共139页。数据管理技术随着计算机软件和硬件的发展而不断发展,大致经历了人工管理、文件系统和数据库系统三个发展阶段,而在数据库系统阶段又经历了萌芽阶段、蓬勃阶段和成熟阶段,如图1-3所示。图1-3数据管理技术发展示意图文件系统阶段人工管理阶段数据库系统阶段萌芽阶段蓬勃阶段50年代中期60年代中期70年代80年代成熟阶段4.数据库技术的发展第十三页,共139页。文件系统文件系统数据管理技术是数据库系统的前身,也是数据库系统发展阶段的基础,文件系统本身有一些比较突出的缺陷:
冗余度大。文件系统中的用户各自建立自己的文件,数据不能共享,造成大量重复,不仅浪费存储空间,还易产生数据的不一致。
缺乏数据独立性。数据与程序相互依赖,要改变数据结构就得修改程序,耗费时力。
数据无集中管理。各个文件没有统一管理机构,无法相互联系,各自为政,其安全性、完整性无法保证。
第十四页,共139页。数据库系统
以上问题都造成了文件系统管理的低效率、高成本,同时也促进了数据库系统的产生和发展。数据库系统克服了文件管理系统的种种弊端,提供给用户一个更为优秀的、合理的数据管理系统。
自20世纪60年代后期数据库诞生以来,数据库技术迅速发展,大量商品化的数据库系统广泛应用于各种领域,理论更加完善。以关系型数据库产品发展最快,从大型机到微机,从Unix到Windows,推出了许多成熟的关系数据库管理软件,例如,Oracle、Informix、SYBASE、dBASE、FoxBASE、FoxPro、VisualFoxPro等。随着计算机网络技术和多媒体技术的发展,数据库系统也将这些技术吸收到其中,并提出相应的商业化产品。
第十五页,共139页。1.1数据库基础数据库系统及其特点与发展历史E-R方法与数据模型数据库保护关系代数第十六页,共139页。1.1.2E-R方法与数据模型三个世界概念模型数据模型关系模型的相关概念
第十七页,共139页。1.三个世界
数据模型是数据库系统中用于提供信息表示和操作手段的形式构架。数据库中用概念模型实现了对现实世界的抽象,进而转换成机器中存取的数据,如图1-4所示。
现实世界:实体信息世界:概念模型机器世界:数据模型抽象转换图1-4从现实世界到机器世界第十八页,共139页。2.概念模型
数据模型是借助概念模型(或信息模型)转化而来的概念模型是数据库设计人员在认识现实世界中的实体及实体间联系后进行一种抽象,并用一种方法描述出来表示概念模型的方法中最常用的是实体-联系方法(Entity-RelationshipApproach),简称E-R方法。
第十九页,共139页。(1)概念模型中涉及的一些概念
实体:客观存在并且可相互区分的事物叫实体。
属性:实体所具有的某一特征。
实体集:同型实体的集合。
联系:主要指实体与实体之间的联系,通常用语义描述。实体间的联系可分为三类:一对一联系(1:1)一对多联系(1:n)多对多联系(m:n)
第二十页,共139页。实体间的联系图1-5两个实体型之间的联系
系系主任领导学生课程选课11系教师组成1nnm(a)(b)(c)第二十一页,共139页。(2)描述概念模型E-R方法的规则
用长方形表示实体,并在框内写上实体名。
用椭圆表示实体属性,并用无向边把实体与其属性连接起来。
用菱形表示实体间的联系,菱形框内写上联系名。用无向边把菱形分别与相关的实体相连接,在无向边旁标上联系的类型(1:n、1:1、m:n)。若实体之间的联系也具有属性,则把属性和菱形也用无向边连接上。
第二十二页,共139页。E-R图实例图1-6图书馆管理系统E-R图
读者姓名编号年龄工作单位家庭住址借阅还书日期借出日期书籍书籍编号书籍名称作者出版社mn第二十三页,共139页。3.数据模型
在建立了概念模型后,即可根据一定的规则将其转化为数据模型。目前,实际数据库系统中所支持的数据模型有层次模型(HierachicalModel)、网状模型(NetworkModel)和关系模型(RelationalModel)三种。基于不同的数据模型有不同的数据库管理系统:
层次型DBMS,如IMAGE、IMS。
网状型DBMS,如DBTG。
关系型DBMS,如dBASE、FoxBASE、FoxPro、VisualFoxPro、Oracle、Informix。
第二十四页,共139页。4.关系模型的相关概念
关系:对应于一张满足一定条件的二维表,由记录型(表头)和记录值二部分组成。元组:表中的一行,也可称为一条记录。属性:表中的一列称为一个属性。给每列取的名字,称为属性名或字段名。域:属性的取值范围。码:能惟一标识一个元组的属性或属性组,也称为关键字。例如,读者关系的码是读者编号(dzbh),借阅关系的码是“读者编号(dzbh)与书籍编号(sjbh)”属性组。
第二十五页,共139页。4.关系模型的相关概念(续)主码:有时能惟一标识一元组的属性组不止一个,即码不止一个,这时必须指定其中的一个码作为主码,组成主码的属性被称为主属性。
外部码:非本关系的码,但它是其他关系的码,这样的属性或属性组集合称为外关键字或外部码。例如,借阅关系的外部码有两个,“读者编号(dzbh)”是读者关系的码,则是它的外部码;同样,属性“书籍编号(sjbh)”亦是它的外部码。分量:元组中的一个属性值。关系数据库:数据库中所有关系的集合。
第二十六页,共139页。4.关系模型的相关概念(续)并非所有的二维表都可称为一个关系,作为关系的二维表必须满足如下最低条件:
每一分量必须是不可分割的数据项。
每一列(字段)需以不同的属性名(字段名)命名。列的次序并不重要,即列的次序可以交换。行的顺序也无所谓,即行的次序可以任意交换。每一列中的分量是同一类型的数据,应取自同一个域。任意两个元组不能完全相同。
第二十七页,共139页。1.1.3数据库保护数据库保护主要涉及以下几个方面:数据的安全性完整性并发控制数据库恢复第二十八页,共139页。1.安全性数据库的安全性(Security)是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。任何系统都有安全性,只是在数据库系统中大量数据集中存放,而且为许多用户直接共享,从而使得安全性问题更为突出。确保数据库系统安全可靠是整个数据库系统的重要组成部分,也是衡量一个数据库系统性能的重要指标之一。第二十九页,共139页。1.安全性(续)在数据库系统中,安全性措施是层层设置的,如图1-7所示。硬件OSDBMS应用系统加锁加密用户鉴定文件权限网络授权口令、权限检查授权与撤权口令设置权限检查图1-7数据库系统的安全性措施设置
第三十页,共139页。1.安全性(续)(1)第一层:硬件级。这也是物理级的安全保密方式,为对付强迫透露口令、在通信线路上窃听及盗窃物理存储设备等行为而采取的,一般可将数据编为密码、硬件加锁、加强保卫等措施,以识别用户身份和保护硬件设备。(2)第二层:操作系统级与网络级。操作系统与网络软件都提供了系统软件级的低层保护。它包括对用户的分组、用户权限的分类、文件权限的设置(只读、可读写、可执行、……)及网络软件文件授权功能。第三十一页,共139页。1.安全性(续)(3)第三层:DBMS级。DBMS提供两层保护:第一层是进入系统之前的用户标识与鉴定,与操作系统及网络级的用户身份鉴定相似;第二层是进入系统后的存取控制措施,保证用户只能存取有权操纵的数据。(4)第四层:应用系统级。在数据库应用系统这一级,可以根据实际用户的分工不同、操作的重要程度不同等在应用程序中设置口令、分配权限。这一工作主要由系统员分析确定,在应用程序中实现。第三十二页,共139页。2.完整性数据的完整性(Integrity)是指数据的正确性和相容性。为保证这一点,要求DBMS必须提供相应的完整性约束条件的检查功能,以防止错误的或不合约束条件的数据进出数据库。保证完整性的约束条件很多,主要有:对数据值的约束对数据间联系的约束第三十三页,共139页。2.完整性(续)对数据值的约束:例如,读者年龄只能是15~60,性别只能是男或女,读者编号只能是8位数字等。对数据间联系的约束:主要有实体完整性参照完整性用户定义的完整性第三十四页,共139页。2.完整性(续)-对数据间联系的约束实体完整性是指码的值在关系中必须非空(notnull)且必须是惟一的。参照完整性是指一个关系中外来码的码值必须是相应数据库中其他关系的主码值之一,或为空(null)。用户定义完整性是针对某一具体数据库的,由应用环境决定。第三十五页,共139页。3.并发控制数据库的最大特点就是共享,可以由多个用户在同一时刻存取数据,从而提高资源的利用率。然而多个用户在同一时刻存取同一数据,若不加以控制,就很容易破坏数据的完整性与一致性。并发控制中有一概念称事(Transaction),它是并发控制的基本单位与控制对象。事务是一操作序列,这些操作要么都做,要么都不做。本例的并发操作可描述如表1-6(a),1-6(b)所示。第三十六页,共139页。表1-6事务T1和T2的并发操作
(a)未加锁,修改丢失(A=9)
(b)加锁,正确(A=7)
T1T2T1T2读A=10
XlockA
读A=10获得
A←A-2
读A=10
A←A-1
XlockA写回A=8
A←A-2等待
写回A=9写回A=8等待
Commit等待
UnlockA等待
获得XlockA
读A=8
A←A-1
写回A=7
Commit
UnlockA第三十七页,共139页。4.数据库恢复概念:DBMS一般要具有从错误状态恢复到已知的正确状态的功能。这就是数据库恢复。方式:目前,数据库恢复采用的基本方法有如下几种:转储使用日志文件增加硬件机制
第三十八页,共139页。1.1.4关系代数关系代数是关系数据库的数学基础,其操作对象和操作结果都是元组的集合。它所提供的专门的关系运算有选择投影连接等。第三十九页,共139页。1.选择(Selection)概念:所谓选择是指从关系中选择出满足给定条件的元组。例:从“图书馆管理系统”数据表dz.dbf中选择出家住北京的读者。SQL语言可表达如下:SELECT*FROMdzWHEREjtzz="北京";用LIST命令可以表示成:USEdzLISTFORjtzz="北京“其中,SELECT语句中的WHERE子句和LIST命令中的FOR子句表达了选择条件。第四十页,共139页。2.投影(Projection)概念:所谓的投影是指从一个关系中选取某些属性列组成新的关系,最后从得到的结果中删除重复的元组。例:从jy.dbf中投影出借有图书的读者编号。用VFP的SQL语言可表达为:SELECTdzbhFROMjy用LIST命令可以表示成:USEjyLISTFIELDSdzbh其中,SELECT语句中的SELECT子句和LIST命令中的FIELDS子句表达了投影条件。第四十一页,共139页。3.连接(Join)(1)笛卡尔积(CartsianProduct)。给定关系R、S,它们的笛卡尔积是由所有属于R的元组与属于S的元组连接而成的新元组组成,用R×S表示。例:设关系R与S如图1-8所示,它们的笛卡尔积结果也如图1-8所示。第四十二页,共139页。
R
R×SABCa1b13a2b35a3b47
SBEb17b22AR.BCS.BEa1b13b17a1b13b22a2b35b17a2b35b22a3b47b17a2b47b12图1-8关系R、S及其笛卡尔积3.连接(Join)(续)第四十三页,共139页。3.连接(Join)(续)(2)连接:连接运算是从两个关系的笛卡尔积中,选取属性间满足一定条件的元组。自然连接:自然连接是连接的一个特例,它是指两个关系按主码与外部码分量值一样的条件将元组连接在一起,并去掉重复列而得到的关系。例:将图1-8中的关系R与S中的元组连接在一起,要求按关系R的C字段分量值小于关系S的E字段的分量值的条件进行。其结果如图1-9(a)所示。R与S的自然连接结果如图1-9(b)所示。第四十四页,共139页。ABCBEa1b13b17a2b35b17ABCEa1b137图1-9关系R、S的连接和自然连接(a)(b)3.连接(Join)(续)第四十五页,共139页。1.2VisualFoxPro简介VisualFoxPro是Xbase数据库系列软件中,继dBASE、FoxBASE、FoxPro之后的又一微机关系数据库管理系统新产品,它与dBASE、FoxBASE、FoxPro等兼容。VisualFoxPro的版本VisualFoxPro的特性概述VisualFoxPro的菜单系统第四十六页,共139页。1.2.1VisualFoxPro的版本1995年以后,微软公司陆续发布了三个版本的VisualFoxPro:VisualFoxPro3.0、VisualFoxPro5.0和VisualFoxPro6.0及其中文版。2002年微软公司推出了VisualStudio.NET7.0,VisualFoxPro7.0β版(测试版)是其中的成员但其后发布的VisualStudio.NET7.0正式版不包含VisualFoxPro7.0。2003年2月1日微软公司推出VisualFoxPro8.0,近期又推出VisualFoxPro9.0。第四十七页,共139页。1.2.1VisualFoxPro的版本(续)与FoxPro2.x比较,VisualFoxPro3.0在以下几个方面的特性有所增强:快速创建应用程序的能力。更强大的开发能力。开发客户机/服务器解决方案的能力。与其他Microsoft应用程序相互作用的能力。
第四十八页,共139页。1.2.1VisualFoxPro的版本(续)与VisualFoxPro3.0比较,VisualFoxPro5.0增加或加强了以下功能:增强了项目管理器和数据库管理。改善了调试工具。更加简单的表设计方法和扩展的数据字典。增强的查询和视图设计。增加了表单功能,使之更易于设计。有更多和更好的向导。更紧密的OLE和ActiveX集成。
第四十九页,共139页。1.2.1VisualFoxPro的版本(续)VisualFoxPro6.0与前两个版本比较,增加或增强了以下功能:(1)Access和Assign方法程序(2)ActiveDocument。(3)组件管理库。(4)代码范围分析器应用程序。(5)对GIF和JPEG图形的支持。(6)HTML帮助。第五十页,共139页。1.2.1VisualFoxPro的版本(续)(7)新的和改进了的语言元素。(8)OLE拖放。(9)项目管理器挂接程序。(10)自动服务程序(AutomationServer)的改进。(11)新增和改进了的向导和生成器。(12)对2000年日期的支持。第五十一页,共139页。1.2.1VisualFoxPro的版本(续)VisualFoxPro8.0与VisualFoxPro以前的版本完全兼容,并且与VisualStudio.NET2003兼容。此外还有如下新特点:(1)全面的数据访问。(2)结构化错误处理。(3)View设计器。(4)支持自动增量。(5)WindowsXP题目支持。第五十二页,共139页。(6)高级控件。(7)GDI+图像支持。(8)事件处理。(9)XML数据导入和导出。(10)XMLWebServices。(11)OLEDBProvider(12)SQLServer2000桌面引擎(MSDE)。(13)开发工具。(14)增强的基本类。(15)新增功能。
第五十三页,共139页。1.2.2VisualFoxPro的特性概述VisualFoxPro在性能、系统资源利用和设计环境等方面的强大功能,可以更好地帮助用户完成应用程序或数据库系统开发。
1.增强的项目及数据管理2.具有真正意义的数据库3.简便的查询与视图设计工具4.实用的报表及标签设计5.紧密结合数据的表单6.完整的向导机制7.完整的的菜单系统第五十四页,共139页。1.2.2VisualFoxPro的特性概述(续)8.面向对象的程序设计9.更安全、有效的网络数据共享10.快速建立应用程序11.高效的调试器12.快捷方便的组件管理库13.导入和导出数据14.高度的数据集成能力15.VisualFoxPro功能的扩展第五十五页,共139页。1.2.3VisualFoxPro的菜单系统在WindowsXP/2000桌面上建立了VFP6.0的快捷方式后,双击它即可启动VFP6.0,屏幕上将显示它的主窗口及主菜单等。菜单是使用VFP时最常用的工具。VFP的菜单在不同的状态下会有一些变化,本小节对VFP的基本菜单系统作一简介,列出中英文的菜单标题,以适应中英文VFP6.0版本。
1.文件(File)菜单项,如表1-9所示。2.编辑(Edit)菜单项,如表1-10所示。3.显示(View)菜单项,如表1-11所示。4.格式(Format)菜单项,如表1-12中所示。第五十六页,共139页。5.工具(Tools)菜单项,如表1-13所示。6.程序(Program)菜单项,如表1-14所示。7.窗口(Window)菜单项,如表1-15所示。8.帮助(Help)菜单项,如表1-16所示。1.2.3VisualFoxPro的菜单系(续)第五十七页,共139页。1.3VisualFoxPro6.0的基本概念与规则VisualFoxPro的项目、文件、数据库、表、视图VisualFoxPro的命令结构和键盘宏程序执行方式VisualFoxPro的常量、变量、数组VisualFoxPro的表达式与函数VisualFoxPro的文件类型第五十八页,共139页。1.3.1VFP的项目、文件、数据库、表、视图1.项目及项目管理器项目:是指文件、数据、文档和VisualFoxPro6.0对象的集合,被保存在以.pjx为扩展名的文件中。项目用项目管理器进行维护项目管理器是VisualFoxPro中处理数据和对象的主要组织工具,项目管理器是VisualFoxPro的控制中心。
第五十九页,共139页。1.项目及项目管理器(续)项目管理器可以借助命令或菜单方式建立。本章应用实例“图书馆管理信息系统”中建立的项目管理器,如图1-10所示。
第六十页,共139页。2.表、视图与数据库(1)表(table)表是VFP处理数据和建立关系型数据库及应用程序的基本单元。在VFP中,表文件的扩展名为.dbf,它由结构和记录(数据)构成。两种类型的表:数据库表和自由表。表中各字段的结构参数:字段名字段类型字段宽度和小数位数是否允许为空显示标题等第六十一页,共139页。(1)表(table)(续)1)字段名表中每一个字段都应有一个名称,VFP规定字段名必须以字母或汉字开头,后跟字母、汉字或下划线,并且长度不能超过128个字符。建议尽量简明。例如:sjmc字段名代表了“书籍名称”,至于正式标题可以在定义表结构的“标题”参数中说明。
第六十二页,共139页。(1)表(table)(续)2)字段类型。VFP提供了13种字段类型,用于存放不同类型的数据。
字符型(Character):通常用于存放文本数据,文本数据可以是汉字、字母、数字、空格、符号及标点符号。字符型字段的最大宽度为254。货币型(Currency):一种特殊的数据类型,用以存储货币值。数据形式为“$数值”,例如,$922.00。其取值范围为922333203685477.5807~922337203685477.5807。
第六十三页,共139页。(1)表(table)(续)数值型(Numeric):用来存放数值数据。它由数字0~9、正负符号、小数点等组成。数值型字段的取值范围为:-0.9999999999E+19~0.9999999999E+20。浮点型(Float):在功能上等价于数值型字段。逻辑型(Logical):用于存放逻辑数据“真”(.T.,.t.或.Y.,.y.)和“假”(.F.,.f.或.N.,.n.)。日期型(Date):用于存放包含有年、月、日的日期数据。格式为:{^yyyy-mm-dd}。例如,{^2000-1-27}表示2000年1月27日。
第六十四页,共139页。(1)表(table)(续)日期时间型(Datetime):用于存放包含有年、月、日、时、分、秒的日期和时间数据。双精度型(Double):用于存储精度要求更高的、位数固定的数值。备注型(Memo):类似“简历”这种类型的字段虽然由文字组成,但常常超过254个字符,而且每条记录在此字段的分量长短相差很大。为了存放这类数据,VisualFoxPro提供了备注型。一个字段被定义为备注型后,总是以memo显示在表中,占定长4个字节。事实上它仅是一个指针,真正内容存储在与表文件名相同的.fpt文件中,而每一个指针指向了该记录的备注字段在.fpt中的位置。第六十五页,共139页。(1)表(table)(续)通用型(General):用于存储OLE对象数据。OLE对象包括电子表格、字处理文档、图形、图像或其他多媒体对象。与备注型字段一样,在表中也是仅存储一个指针,实际内容也存储在.fpt文件中。一个字段若被定义为通用型,其下的分量总是以gen显示。整型(Integer):用于存储整数数据。取值范围:-2147438646~2147438646。二进制字符型(CharacterBinary):字符型二进制用于存放不需要系统代码页维护的字符数据。其他特性同字符型字段。二进制备注型(MemoBinary):二进制备注型用于存储不需要系统代码维护的备注字段数据。其他特性同备注型字段。
第六十六页,共139页。(1)表(table)(续)3)字段宽度字段宽度表明该字段允许存放的数据的长度,以字节数或位数表示。用户在定义表结构时,应根据存储数据的具体情况设置字符型、数值型、浮点型等字段的宽度,若有小数部分,则小数点也应占一位。其他类型字段的宽度均由VFP统一规定如下:货币型:8字节
日期型、日期时间型:8字节双精度型字段:8字节
逻辑型:1字节备注型、通用型字段:4字节
整型字段:4字节
第六十七页,共139页。(1)表(table)(续)4)小数位数。当字段类型为Numeric或Float时,应在Decimal栏中设置小数的位数,小数位数至少应比该字段的宽度小2,或者采用缺省设置0。例如,在图书馆管理系统中,书籍信息表sj.dbf的结构定义如图1-11所示。
第六十八页,共139页。(2)视图(View)VFP的视图是数据库的组成单元,是数据库的一部分,但它不能单独存在。视图是一个虚表,只包含了一些条件和参数设定。按照这些条件,可从一个或多个表或视图中过滤出(引用)符合条件的记录,结果可当作表来使用。当引用表中的数据发生变化时,视图中的显示内容也会发生相应的变化。用户可以更新视图中的某些指定数据,操作时,源表的对应数据也将随之更新。视图源于本地表的称为本地视图。视图源于服务器上的表文件、远程表文件时称为远程视图。
第六十九页,共139页。(2)视图(View)(续)在图书馆管理系统的数据库中,包含有一个男读者的视图(ndz)—本地视图(LocalView),如图1-12所示。它的数据源是从表1-1所示的读者信息表检索而来的,是虚表,但可以更新视图中的数据。
图1-12男读者视图第七十页,共139页。(3)数据库数据库是VFP的主要处理对象,它可以包含一个或多个表、本地视图、远程视图、连接和存储过程等内容,并在其中包含了相关的信息。例如,表和字段的标题、表间的1:n、m:n的关系等。数据库文件的扩展名为.dbc,在VFP
中常称它为数据库容器。例如,图书馆管理系统的项目管理器中,“图书馆管理”数据库容器里包含了5张表:dz(读者信息表)、sj(书籍信息表)、jy(借阅信息表)、dzzl(读者种类表)、sjzl(书籍种类表);两个本地视图:ndz(男读者视图)、zgts(珍贵图书视图),如图1-10所示。
数据库和表一样,都可以放在一个项目中。第七十一页,共139页。1.3.2VisualFoxPro的命令结构和键盘宏VFP支持面向对象的程序设计,同时也支持面向过程的程序设计。程序总是由命令与函数及VFP可以理解的其他操作组成,因而了解VFP的命令并且熟记一些常用命令显得很重要。本小节将介绍VFP的命令结构,一些常用的命令及其功能可参阅VFP
的帮助。在联机帮助中有VFP6.0的所有命令格式、功能及一些示例。
第七十二页,共139页。1.命令格式<命令动词>[范围][FIELDS<字段表达式清单>][FOR/WHILE<条件>]VFP的命令一般总是由一个命令动词开头,后随若干功能子句及参数,用来说明操作对象、操作结果和操作条件等。第七十三页,共139页。2.VisualFoxPro命令格式说明(1)书写约定[]——任选项,可有,可缺省。<>——必选项,必须有;当<>套在[]里时,表示选中有效。/——“或者”的意思。实际使用时,以上约定符号均不应包含在命令行中。
(2)命令动词表示实施一种操作。例如:
CREATEDATABASE<库文件名> &&创建一个指定库文件名的数据库
CREATEDATABASE"图书馆"
第七十四页,共139页。2.VisualFoxPro命令格式说明(续)(3)[范围]子句表示命令可以处理的记录范围。有4种形式供选用:ALL 表示数据表文件中的全部记录RECORDn 表示数据库第n条记录NEXTn 从当前记录开始的n条记录REST 从当前记录开始的所有记录当[范围]选项缺省时,视具体命令而定,可表示ALL或当前记录。第七十五页,共139页。2.VisualFoxPro命令格式说明(续)(4)[FIELDS<字段表达式清单>]子句任选项,用于选择命令可处理的字段。缺省该选项时,命令将处理表中的所有字段,否则只处理“字段表达式清单”中指定的字段。清单中字段若不止一项,用“,”分割。第七十六页,共139页。2.VisualFoxPro命令格式说明(续)(5)[FOR/WHILE<条件表达式>]子句任选项,表示命令将对表中所有符合条件的记录实施操作。WHILE<条件>先顺序寻找出第一个满足条件的记录,再继续找出后续的也满足条件的记录,一旦发现有一个记录不满足条件,就不再往下寻找。一般情况下,FOR<条件>和WHILE<条件>不同时使用。如果同时使用,WHILE<条件>将优先处理。(6)[参数1][,参数2]…任选项,它们的功能视具体命令而定。第七十七页,共139页。3.命令的书写规则(1)为了简化键盘输入,VFP允许命令动词和功能子句中的命令字使用缩写的形式,只要写出这些字的至少前4个字母。例如,DISPLAY可缩写为DISP、DISPL、DISPLA。
(2)一条命令中含有多个功能子句时,子句的书写次序无关紧要。例如,以下两种写法的功能等效:
displayallfieldsdzxmforjtzz=“北京”anddzxb=“女”
displayfieldsdzxmallforjtzz="北京"anddzxb="女"
第七十八页,共139页。3.命令的书写规则(续)(3)一条命令最多可以包含256个字符,一行写不下可分行书写,分行处须加一分号“;”,例如:DISPALLFIELDZXMFORJTZZ=“北京”;
anddzxb=“女” &&本行是上一行的续行
(4)对于所有的命令,均可以大小写并用。各子句及参数间用至少一个空格分隔。
第七十九页,共139页。4.键盘宏
在VFP中,宏(macro)代表一系列动作和击键操作的一个键。键盘宏实际上是一个击键序列的记录,使用它可以帮助用户快速地完成某些经常重复的工作,还可以帮助用户建立应用程序的自动演示程序。
一个VFP6.0的键盘宏中,共可存储1024个击键序列。一个键盘宏还可以调用另外一个宏,以产生更长的击键序列。但在键盘宏中,无法记录鼠标的动作,对某些只能用鼠标完成的动作,键盘宏就不起作用了。
键盘宏一般应用于“命令”窗口。可以用“工具”菜单上的“宏”命令更改宏定义。
第八十页,共139页。1.3.3程序执行方式1.向导方式VFP为用户提供了很多具有实用价值的向导工具Wizards。向导提供了交互式的介面,以帮助用户快速完成一般性的任务。例如,创建多种风格的表单、建立查询、建立数据库等。其基本思想是把一些复杂的功能分解为若干简单的步骤完成,每一步使用一个对话框,然后对这些较简单的对话框按适当的顺序组合在一起。向导方式使不熟悉FoxPro命令的用户也能用VFP完成一般性的任务,只要回答向导提出的有关问题,通过有限的几个步骤就可以使用户轻松地解决实际应用问题。对于编程人员,也可以利用向导建立原型,使应用程序中各个组件都能有一个良好的开端,缩短开发时间。
第八十一页,共139页。1.3.3程序执行方式(续)2.菜单方式利用菜单创建应用程序是开发者常用的主要方法。实际上菜单方式包括对菜单栏、快捷键和工具栏的组合操作。开发过程中的每一步操作常需要菜单方式的配合。例如,要建立一个项目,可以单击“文件”菜单的“新建”命令或工具栏的“新建”按钮。
第八十二页,共139页。1.3.3程序执行方式(续)3.命令方式VFP与FoxBASE、FoxPro一样也支持交互式命令方式。用户每发出一条命令,系统随即解释并执行,出错则给予相应的提示,正确则给出相应的执行结果。命令行应在命令窗口输入。命令窗口具有一般编辑窗口的特征,可以编辑、插入、删除、剪切和复制。并且可以对已输入的命令重复执行。第八十三页,共139页。1.3.3程序执行方式(续)4.程序执行方式程序执行方式是将命令行代码组成一个程序,存入以.prg为扩展名的命令文件中,然后通过相应命令调用此命令文件,由系统自动执行。程序中的代码包括以命令形式出现的指令、函数或VFP可以理解的其他操作。VFP支持面向对象的程序设计,代码不仅存在于命令文件中,而且在表单设计过程中也常常为它的某一对象的一个或多个事件编写代码,在菜单或报表设计时,也要编写代码。第八十四页,共139页。1.3.4VisualFoxPro的常量、变量、数组1.常量常量是指其值固定不变的数据,VFP的常量类型有N、C、D、T、L、Y共6种。
(1)数值型(Numeric):简称N型由0~9共10个数字、小数点、正负号组成的实型数。其表现形式可以是整数(1234)、小数(0.1234)、负数(-25)、浮点数(123.456)、科学计数(2E-5)。
第八十五页,共139页。1.常量(续)(2)字符型(Character):简称C型。它是以定界符括起来的任意字符、数字、汉字等符号。定界符可以是‘’、“”或[]。如果字符串中已有定界符中的一种符号,则定界符选用另一种。例如,“abc”、“123‘,”、[“正确”的反义]。
(3)逻辑型(Logical):简称L型。逻辑型常量只有两个值:真与假。用.T.(.t.)或.Y.(.y.)代表真,用.F.(.f.)或.N.(.n.)表示假。
第八十六页,共139页。1.常量(续)(4)日期型(Date):简称D型。表示日期,默认格式为{^yyyy-mm-dd}。例如,{^2006-1-27}表示2006年1月27日。使用setdate、setcentery、setmark等命令可修改日期格式。(5)日期时间型(DateTime):简称T型。不仅表示日期,而且进一步表示了时间。默认格式为{^yyyy-mm-dd[,][hh[:mm[:ss]][a|p]]}。(6)货币型(Currency):简称Y型。表示货币量,默认格式是“$数值量”,小数若超过4位,四舍五入取4位。例如,$123,$123.5678,$123.4等。
第八十七页,共139页。2.变量(1)VisualFoxPro变量的种类。在命令操作或程序执行期间,其值可以改变的量称为变量。VFP的变量有字段变量和内存变量两种。此外,还可以使用数组。字段变量以字段名标识,它必须依附于表,随着表的打开和关闭而在内存中存储和被释放。字段变量是一多值变量,其值为表的当前记录在该字段的分量值。
第八十八页,共139页。2.变量(续)VFP的内存变量又可分为系统变量和用户定义的内存变量:1)系统变量VFP自带的变量,由系统命名创建并维护。系统变量名以“_”开头。例如,_VFP系统变量指向当前运行的VFP应用程序对象,通过它可以访问对象集合(Objectscollection)。系统变量不能被删除。2)用户定义的内存变量是一种临时工作单元,它独立于数据库文件而存在,常用来保存在命令或程序执行中临时用到的输入、输出或中间数据,由用户根据需要设置或删除。内存变量的类型有C、N、D、T、Y、L、S(屏幕型)等几种,由赋值给它的数据决定。第八十九页,共139页。2.变量(续)(2)内存变量的赋值命令命令格式:格式1:store表达式
to内存变量名清单&&可给一批内存变量赋相 同的值格式2:内存变量名=表达式 &&只能给一个内存变量赋值内存变量名命名规则同字段变量,一般应避免与VFP的保留字相同。“=”为赋值号,其左、右的参数不可以对调。内存变量的类型和值由所赋数据的类型和值确定,并以最近一次所赋的值为准。内存变量名与字段变量名同名时,字段变量被优先引用。若要引用内存变量,可在内存变量名前加前缀M.,以示区别。第九十页,共139页。2.变量(续)(3)内存变量的主要操作命令DISPLAY/LISTMEMORY&&显示当前内存中的 内存变量SAVEMEMORY… &&将当前内存中的内存变 量保存到指定的内存变量文件RESTOREFROMMEMORY…&&内存变量文件 中的内存变量恢复到内存CLEARMEMORY &&清除当前内存中的 内存变量,释放存储空间?变量名 &&显示变量值
第九十一页,共139页。3.数组
数组是一组按一定顺序排列的内存变量,数组中的各个变量称为数组元素。数组元素用数组名及该元素在数组中排列位置的下标一起表示,下标的个数称为数组的维数。例如,一维数组x及其数组元素x(1),x(2),二维数组y及其数组元素y(1,2),y(2,1)等。在VisualFoxPro中,只使用一维和二维数组。数组要先定义再引用。
第九十二页,共139页。3.数组(续)(1)数组的定义命令格式:
declare/dimension数组名1(<下标1>[,下标2])[,数组名2(<下标1>[,<下标2>])…功能:定义一维数组或二维数组(其命名规则与内存变量相同),以及有关数组各下标的上界值。各下标的下界值由系统统一规定为1。下标的个数决定了数组的维数。
第九十三页,共139页。3.数组(续)(2)数组的赋值数组中各数组元素的取值类型可以互不相同,数组一经定义,它的每个数组元素就有了逻辑型初值.F.。用赋值命令可为数组元素赋值,也可以为数组的各元素赋同一值。二维数组各元素以行的顺序在内存中存储,它们也可以按排列的相对位置以一维数组元素的形式存取。例如,下例中定义的二维数组y,其数组元素y(2,2)排在第2行第2列,由于每一行是2个数组元素,则y(2,2)也可表示为一维数组元素y(4)。
第九十四页,共139页。1.3.5VisualFoxPro的表达式与函数1.表达式是由常量、变量、函数和运算符组成的一个有物理意义的式子。表达式的使用拓展了VFP的应用范围,使操作更加灵活方便。表达式按所用到的运算符分为字符型、数值型、关系型、逻辑型、日期型、货币型等类型。第九十五页,共139页。1.表达式(续)(1)数值型表达式由数值型常量、变量、函数和算术运算符构成,运算结果仍然为数值型。算术运算符有**或^(乘方)、*(乘)、/(除)、%(取模,求余数)、+(加)、-(减),其优先级别为: **或^→*、/、%→+、-从左到右依次降低;如有括号,则优先级最高。例:?(INT(5.6)+5)**2/10&&显示结果为10.00
第九十六页,共139页。1.表达式(续)(2)字符型表达式由字符型常量、变量、函数和字符运算符组成,其运算结果仍为字符型。字符运算符主要有两类:连接运算和包含运算。1)连接运算有完全连接(精确连接)和不完全连接(移去尾部空格连接),分别使用运算符“+”和“-”。
2)包含运算本应归于关系运算类,由于它是字符串之间特有的关系运算,故将其放在字符表达式中介绍,包含运算的结果不再是字符型而是逻辑型。格式为: 字符串1$字符串2如果字符串1包含在字符串2中,即字符串1为字符串2的子串,则表达式的值为.T.,否则为.F.。
第九十七页,共139页。1.表达式(续)(3)货币型表达式其运算对象与运算结果都是货币型,运算符和运算规则同数值型表达式。(4)日期型表达式由日期型或数值型常量、变量、函数和日期运算符+、-组成,其运算结果为日期型或数值型。例如:?DATE()+15 &&显示15天以后的日期?DOW(DATE()+15) &&显示15天以后是星期几?DATE()-20 &&显示20天以前的日期T=DATE()+1 &&T为日期型Y=DATE()–1 &&Y为日期型?T–Y &&显示结果为数值2
第九十八页,共139页。1.表达式(续)(5)关系型表达式由关系运算符和字符表达式、数值表达式(货币表达式)、日期表达式组成,运算符左右两侧数据类型必须一致,其运算结果为逻辑值。关系运算符有:>、<、>=、<=、#或!、=、==(优先级相同)字符型数据的比较是按其对应的ASCII码值的大小进行的。比较时,先比较字符串第一个字符的大小,若第一个字符大,则该串大;如果第一个字符一样,再比较第二个字符的大小,第二个字符大的,该字符串大;依此类推,直到比较出大小。两字符串作“=”和“==”比较时,其运算结果与SETEXACTON/OFF有关。
第九十九页,共139页。1.表达式(续)(6)逻辑型表达式由逻辑运算符和逻辑常量、变量、函数及关系表达式组成,结果仍是逻辑值。逻辑运算符有NOT或!(逻辑非)、AND(逻辑与)、OR(逻辑或),优先级按非、与、或的次序从高到低。逻辑表达式的一般形式为:<关系表达式><逻辑运算符><关系表达式>。例如:?NOT(5>6) &&显示结果为.T.?NOT(5>6)AND"abc">"ad"OR$100<$200 &&显示结果为.T.第一百页,共139页。1.表达式(续)以上介绍了VisualFoxPro的各种类型表达式各类型表达式内有优先级各类型表达式间也有优先级:逻辑型最低其次是关系型的其余4种平级且最高第一百零一页,共139页。2.函数函数是VFP的又一重要组成部分VFP函数的格式一般为:函数名([自变量1][,自变量2]…)括号中没有自变量的函数称为无参函数。每个函数都有一个返回值。
VFP提供有众多的标准函数。用户也可以自己编写函数,称为用户自定义函数。在VFP中,可以采用将函数返回值赋给变量、在命令中包含函数、在命令窗口中输出函数返回值、不存储函数返回值、嵌套等方法调用函数。VFP函数按功能分类有数据类、数据库类、VFP环境类、数据共享类、输入输出类、程序设计类。
第一百零二页,共139页。部分数据类函数(1)字符函数例:STRING1="ABCD"STRING2="AB"?LEN(STRING1) &&求字符串长度,返回值为9?ALLTRIM(STRING1) &&返回值为ABCD?TYPE(‘STRING1’) &&TYPE(‘表达式’)函数计算表达式 值,并返回其数据类型,此函数还 可检测是否为对象类型(O)?AT(STRING1,STRING2)&&返回STRING1在STRING2 中首次出现位置值,若
STRING1 不包含在STRING2中,返回值为0
?EMPTY('') &&判断自变量表达式是否为空
第一百零三页,共139页。部分数据类函数(续)(2)数值函数
ABS(X) &&取X的绝对值EXP(X) &&求以e为底的指数函数,返回值为eXSQRT(X) &&求X的平方根INT(X) &&取整函数MAX(X1,X2…) &&取X1、X2…中的最大值MIN(X1,X2…) &&取X1、X2…中的最小值ROUND(X,i) &&若i>0,则对X的小数部分第i位进行四 舍五入例如:
?ROUND(-234.5689,2) &&返回值为-234.5700
第一百零四页,共139页。部分数据类函数(续)(3)日期函数?DATE() &&返回系统日期?YEAR(DATE()) &&返回系统日期的年份SETCENTURYON &&设置2k年日期格式?DATE(2005,10,5) &&返回D型值05/10/2005?DATETIME(2006,1,27,10,15) &&返回T型值01/27/200610:15:00AM
第一百零五页,共139页。(4)数据转换函数1)字符与数值转换STR(数值型的表达式[,<长度>][,<小数位数>]):把指定表达式的值转换成字符串。VAL(字符型的表达式):此函数与STR函数互为逆函数,它将指定的数字字符串转换成数值。A1=12.2345A2=STR(A1,7,4)&&转换为字符型后的长度是7,小数位数是412.2345 &&系统显示A2的值,A2为字符型?TYPE('A2') &&系统显示为C—字符型A3=VAL('123.456')?TYPE('A3') &&系统显示为N—数值型?A3 &&转换为N型时,缺省保留两位小数
123.46
第一百零六页,共139页。(4)数据转换函数(续)2)日期与字符转换DTOC(日期型的表达式)和CTOD(字符型的表达式)互为逆函数,前者把指定的日期转换成字符串,后者相反。例如:CH1='12/25/98'CH2=CTOD(CH1)?'THECHRISTMASIS'+DTOC(CH2) THECHRISTMASIS12/25/98
第一百零七页,共139页。(4)数据转换函数(续)3)日期与日期时间转换DTOT(日期型表达式)和TTOD(日期时间型表达式)也是互为逆函数,DTOT函数将日期型转换为日期时间型,TTOD函数则反之。例如:?DTOT({^1999-12-19}) 12/19/9912:00:00AM?TTOD({^1993-9-1305:58AM}) 09/01/93还有两对转换函数ASC()与CHR()实现ASCII值与字符的互换MONT()与NTOM()实现货币与数值型的互换第一百零八页,共139页。1.3.6VisualFoxPro的文件类型VFP提供了很多文件类型,如表1-17所示。
文件类型扩展名说明项目文件.pjx实现对项目中其他类型文件的组织项目备注文件.pjt包含相应的.pjx的相关文件表文件.dbf存储表结构及记录表备注文件.fpt存储相应.dbf文件的备注与通用字段的实际内容数据库文件.dbc表格的集合及一个数据库内完整性的定义、检验规则等数据库备注文件.dct存储相应.dbc的相关信息索引、压缩索引文件.idx只有单索引的标准索引及压缩索引文件复合索引文件.cdx有若干索引标识符的复合结构索引文件程序文件.prg又称命令文件,用于存储用VisualFoxPro语言编写的的程序编译过的程序文件.fxp对.prg文件进行编译后产生的文件生成的查询程序.qpr存储通过查询设计器设置的查询条件和查询输出要求等第一百零九页,共139页。表1-17VisualFoxPro的文件类型(续)编译后的查询程序.qpx对.qpr文件进行编译后产生的文件表单文件.scx用于存储表单格式表单备注文件.sct存储相应.scx文件的有关信息生成的屏幕程序.spr由表单定义而生成的程序文件,只适用于FoxPro以前的版本编译后的屏幕程序.spx对.spr编译生成的,只适用于FoxPro以前的版本菜单文件.mnx存储菜单的格式菜单备注文件.mnt存储相应的.mnx文件的有关信息生成的菜单程序文件.mpr根据菜单格式文件而自动生成的程序文件编译后的菜单程序.mpx对.mpr进行编译而产生的文件报表文件.frx存储报表的定义数据第一百一十页,共139页。表1-17VisualFoxPro的文件类型(续)报表备注文件.frt存储相应的.frx文件的有关信息标签文件.lbx存储标签的定义数据标签备注文件.lbt存储相应的.lbx文件的有关信息内存变量文件.mem存储已定义的内存变量,以便需要时可从中恢复它们FoxPro2.x视图文件.vue存储程序运行环境的设置,以备需要时恢复所设置的环境文本文件.txt用于供VisualFoxPro与其他高级语言间进行数据交换可视类库.vcx用于存储一个或多个的类定义生成的应用程序.app可在VisualFoxPro环境支持下,用DO命令运行.app文件可执行程序.exe与.app类似,可脱离VisualFoxPro环境而独立运行ActiveX控件.ocx将.ocx并到VisualFoxPro中后,可象基类一样使用其中的对象Windows动态链接库.dll包含能被VisualFoxPro和其他Windows应用程序使用的函数FoxPro动态链接库.fll与.dll类似,包含专为VisualFoxPro内部调用建立的函数第一百一十一页,共139页。1.4面向对象程序设计的概念VFP不但仍然支持标准的过程化程序设计,而且在语言上还进行了扩展,提供了面向对象程序设计的强大功能和更大的灵活性。面向对象的程序设计方法与编程技术不同于标准的过程化程序设计。对象、属性、事件和方法VisualFoxPro的类第一百一十二页,共139页。1.4.1对象、属性、事件和方法
1.创建一个表单在介绍这些概念前,先创建一个表单,体会其中所包含的概念。步骤如下:(1)设置工作目录MDC:\example &&建立工作目录SETDEFAULTTOC: &&设置当前缺省目录为example(2)创建并打开项目myproj1
Modifyprojectmyproj1 &&发出命令后则打开如图1-13所示画面
图1-13“新建表单”对话框
第一百一十三页,共139页。1.创建一个表单(续)(3)进入表单设计窗口在项目管理器中,选中“文档”选项卡,选择其中的“表单”对象,按下右边的“新建”按钮,出现“新建表单”对话框,如图示1-13所示,按下其中的“新建表单”按钮,就进入如图1-14所示的“表单设计器”窗口。
表单设计器窗口主要包括4个部分:表单设计器工具空白表单表单控件工具属性窗。
第一百一十四页,共139页。1.创建一个表单(续)(4)设计表单界面表单界面经过布置与设计后,达到的要求如图1-15所示。对对象的设置如下:1)添加标签对象
2)添加形状对象3)添加命令按钮对象4)编写相应的事件代码图1-15设计好的表单界面
第一百一十五页,共139页。1.创建一个表单(续)(5)运行代码编写完成后,单击“表单”→“执行表单”菜单项,就可以预运行表单。单击“圆”命令按钮,则发生了相应的Click事件,执行了相应的代码,窗口画面如图1-16所示。单击“方框”命令按钮,画面又如图1-17所示。直至单击“关闭”命令按钮,才会关闭表单。图1-16圆
图1-17方框
第一百一十六页,共139页。2.对象的概念在上例中,可以清楚地了解VFP的事件驱动编程机制。(1)对象与类对象(Object)可以是任何的具体事物。例如,现实生活中的计算机、电话机、电视等,VFP中的窗口、命令按钮、标签等均是对象。对象是类的一个实例,包括数据和过程。例如,在一个运行表单上的控件就是一个对象。在VFP中,当通过表单设计器将某一控件放进表单时,该控件就成为一个对象,一个表单往往包含有一个或多个对象,表单本身也是一个对象。每个对象都有对应的属性、方法和事件。在上面的例子中,每一个对象的产生都是基于某个类的。例如,Ocircle命令按钮是基于CommandButton类的,而shape1是基于Shape类的。第一百一十七页,共139页。2.对象的概念(续)(2)对象的属性对象的属性(Properity)标识了对象的特征和行为。例如,表单上的命令按钮具有如下性质,它在表单上的位置(Left和Top)、宽度(Width)、高度(Height)、按钮标识(Caption)、按钮名字(Name)等。可以通过控制对象的属性来操作对象。属性值既能在设计时刻也可在运行时刻进行设置。某些属性值在运行时刻为只读,无法设置。设置属性的语法为:
Object.Properity=aValue其中,Object是对象名,Property是属性名
第一百一十八页,共139页。2.对象的概念(续)(3)事件事件(Event)是由对象识别和响应的某些操作,是一些特定的预定义的活动,可由用户或系统启动。在多数情况下,事件都是由用户操作而引起的。例如,在VFP6.0中,当用户单击按钮、移动鼠标、按键时都会触发事件,而创建一个对象或者遇到导致错误的代码时,系统也会产生一个事件。用户可以自己编写方法程序代码以响应特定的事件。
第一百一十九页,共139页。2.对象的概念(续)(4)对象的方法对象的方法是指对象可执行的动作。例如,表单对象的Release方法,在表单任务完成后将其从内存释放。每个方法都有一段内定的或缺省的代码相对应。这些代码是在创建类时定义并编写的。如果对象已创建,便可以在应用程序的任何一个地方调用这个对象的方法程序。调用方法程序的语法为: Object.Method
VFP中的事件集合基本上是固定的,用户不能创建。方法则不同,可以无限扩充,在创建类时添加新的方法。
第一百二十页,共139页。1.4.2VisualFoxPro的类面向对象程序设计引入的另外一个重要概念就是类。本小节介绍
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 枣树种植及果实质量检测与认证合同(04版)
- 公司个人股份转让协议书
- 旅游景区文创产品设计与销售合同2024
- 《商务战略》课件
- 美术课件导入
- 简单零星工程合同范本2024年度版
- 病案整改报告范文大全
- 联合体施工合同范本
- 货运线路承包合同模板范本
- 圣诞节幼儿教育课件
- 滑雪用手套市场洞察报告
- 专题01 一元二次方程(5大基础题+4大提升题)(解析版)-2024-2025学年九年级数学上学期期中真题分类汇编
- 食品质量安全法律法规培训
- 2024年度★电商平台入驻协议
- 中小学营养餐家长参与方案
- 《财务基础知识培训》课件
- 抖音带货主播小白培训
- 2024秋期河南开放大学本科《公司法律实务(本)》一平台无纸化考试(形考任务1至3+我要考试)试题及答案
- 国家开放大学《实-用管理基础》形考任务1-4参考答案
- 2024黑龙江省交通投资集团招聘38人高频难、易错点500题模拟试题附带答案详解
- 1.2 歌曲《落雨大》课件(13张内嵌音视频)
评论
0/150
提交评论