ImageVerifierCode 换一换
格式:DOCX , 页数:74 ,大小:845.33KB ,
资源ID:5743609      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5743609.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VisualFoxPro表单第101112章学案doc.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VisualFoxPro表单第101112章学案doc.docx

1、VisualFoxPro表单第101112章学案doc10.1 面向对象程序设计技术OOPVisual FoxPro 不但仍然支持标准的过程化程序设计,而且在语言上还进行了扩展,提供了面向对象程序设计的强大功能和更大的灵活性。面向对象的程序设计方法与编程技术不同于标准的过程化程序设计。程序设计人员在进行面向对象的程序设计时,不再是单纯地从代码的第一行一直编到最后一行,而是考虑如何创建对象,利用对象来简化程序设计,提供代码的可重用性。对象可以是应用程序的一个自包含组件,一方面具有私有的功能,供自己使用;另一方面又提供公用的功能,供其他用户使用。传统的编程方法采用面向过程、按顺序进行的机制,设计人

2、员始终要关心什么时候发生什么事情,程序必须有一个完整的开始、中间和结束过程。 面向对象的程序设计方法采用由用户或系统触发事件来驱动程序的机制,设计人员不必考虑程序执行的精确顺序,只需编写响应用户动作的程序。 VFP采用的就是一种可视化的面向对象的编程技术面向对象的程序设计方法与过程化程序设计相比,有如下明显的优点:1代码的可重用性2程序一致性的维护3可扩充性10.2在 Visual FoxPro 中,表单及控件是应用程序中的对象。用户通过对象的属性、事件和方法程序来处理对象。Visual FoxPro 面向对象的语言扩展部分为应用程序中的对象提供了更多的控件,同时也使得创建和维护可重用代码库更

3、为容易。它有如下优点: 更紧凑的代码。 在应用程序中可更容易地加入代码,使您不必精心确定方案的每个细节。 减少了不同文件代码集成为应用程序的复杂程度。 面向对象程序设计基本上是一种包装代码,代码可以重用而且维护起来很容易。其中最主要的包装概念被称为类。对象是将数据和对该数据的所有必要操作的代码封装起来的程序模块。对象是组成程序的基本元件,是一个独立存在的实体,具有属性,方法以及可触发的事件程序。在面向对象的程序 中,对象是组成软件的基本元件,是类的一个实例,包括了数据和过程。例如,在一个运行表单上的控件就是一个对象。类是一组具有公共方法和一般特性的对象的描述,是一类对象的集合,对象是类的一个实

4、例,是个体。定义了对象特征以及对象外观和行为的模板。类和对象关系密切,但并不相同。类包含了有关对象的特征和行为信息,它是对象的蓝图和框架。例如,电话的电路结构和设计布局可以是一个类,而这个类的实例-对象,便是一部电话。类决定了对象的特征,对象具有属性每个对象都有属性。例如,一部电话有一定的颜色和大小。当把一部电话放在办公室中,它又有了一定的位置,而它的听筒也有拿起和挂上两种状态。在 Visual FoxPro 中,创建的对象也具有属性,这些属性由对象所基于的类决定。属性值既能在设计时刻也可在运行时刻进行设置。10.3类具有继承性、封装性、多态性1类的概念 类(class) 是客观对象的归纳和抽

5、象,是具有共同属性和行为的对象的集合。基于类可以生成这类对象中的任何一个具体对象,这些对象具有相同的属性。2类的特性 (1)封装性(Encapsulation) 是指将对象的方法和属性代码包装在一起,以隐藏不必要的复杂性。(2)继承性(Inheritance) 表明子类延用其父类特征的能力,通过继承关系可以利用已有的类构造新类。 继承性提供了通过基类(或父类)产生新的派生类(或子类)的方法。子类不但具有父类的全部属性和方法,而且还允许对已有的属性和方法进行修改,或添加新的属性和方法。所有对象的属性、事件和方法程序在定义类时被指定。此外,类还有如下特征,这些特征对提高代码的可重用性和易维护性很有

6、用处。 封装 子类 继承性 一个子类可以拥有其父类的全部功能,在此基础上,可添加其他控件或功能。例如,现有一个表示基本电话的类,用户可以定义其子类,该子类可拥有这个基本电话类的全部功能,用户还可添加上自己需要的其他功能。1继承性 一种类可以派生届出一个新类,这种由父类派生而来的类称为子类。继承性的概念是使在一个类上所做的改动反映到它的所有子类当中。这种自动更新节省了用户的时间和精力。例如,电话制造商想以按键电话代替以前的拨号电话。若只改变主设计框架,并且基于此框架生产出的电话机能自动继承这种新特点,而不是逐部电话去改造,会节省大量的时间。继承性减少了维护代码的难度。继承性只体现在软件中,而不可

7、能在硬件中实现。若发现类中有一个小错误,用户不必逐一修改子类的代码,只需要在类中改动一处,然后这个变动将体现在全部子类中。2封装 当您在办公室内安装一部电话的时候,您也许并不关心这部电话在内部如何接收呼叫,怎样启动或终止与交换台的连接,以及如何将拨号转换为电子信号。您所要知道的全部信息就是您可以拿起听筒,拨打合适的电话号码,然后与您要找的人讲话。在这里,如何建立连接的复杂性被隐藏起来。所谓抽象性便是指能够忽略对象的内部细节,使用户集中精力来使用对象的特性。内部的复杂性可以被隐藏起来。封装使抽象性成为可能。封装就是指将对象的方法程序和属性代码包装在一起。例如您可以把确定列表框选项的属性和选择某选

8、项时所执行的代码封装在一个控件里,然后把该控件加到表单中。 3子类一个子类可以拥有其父类的全部功能,在此基础上,可添加其他控件或功能。例如,现有一个表示基本电话的类,用户可以定义其子类,该子类可拥有这个基本电话类的全部功能,用户还可添加上自己需要的其他功能。子类继承父类的特性,且拥有新的功能和特性。以其他类定义为起点,对某一对象所建立的新类。新类将继承任何对父类所做的修改。10.4 vf6的面向对象技术所有的属性、事件和方法都 由类进行定义。表单集、表单及各类控件都 是VF6的基类对象。Visual FoxPro 的类有两大主要类型,因此 Visual FoxPro 对象也分为两大类型,它们便

9、是容器类和控件类。1. 基类 基类是VFP系统自带的,用户可以从基类中生成所需要的对象,也可以扩展基类创建自己的类。2容器类与控件类 基类主要有容器类和控件类两大类型 ,相应地,可分别生成容器对象和控件对象。(1)容器对象 由容器类派生的、可以包含其它对象的对象。无论在设计时刻还是在运行时刻,容器类对象和它所包含的对象都被当作一个独立的对象进行操作。在对象的层次中,容器中被包含的对象处于容器对象的下一层。(2)控件对象 由控件类派生的、以图形化方式显示出来并能与用户进行交互的对象。这些对象是一个相对独立的整体,不能容纳其它对象。控件对象通常被放置在一个容器对象里。 容器类和控件类容器类可以包含

10、其他对象,并且允许访问这些对象。例如,若创建一个含有两个列表框和两个命令按钮的容器类,而后将该类的一个对象加入表单中,那么无论在设计时刻还是在运行时刻,都可以对其中任何一个对象进行操作。不仅可以轻松地改变列表框的位置和命令按钮的标题,也可以在设计阶段给控件添加对象。例如,可以给列表框加标签,来标明该列表框。下表列出了每种容器类所能包含的对象。容器能包含的对象命令按钮组命令按钮容器任意控件控件任意控件自定义任意控件、页框、容器和自定义对象表单集表单、工具栏表单页框、任意控件、容器或自定义对象表格列表头和除表单集、表单、工具栏、计时器和其他列以外的其余任一对象。表格表格列选项按钮组选项按钮页框页面

11、页面任意控件、容器和自定义对象项目文件、服务程序工具栏任意控件、页框和容器控件类控件类的封装比容器类更为严密,但也因此丧失了一些灵活性。控件类没有 AddObject 方法程序。Visual FoxPro 的基类可以在“类设计器”中创建 Visual FoxPro 大部分基类的子类:Visual FoxPro 的基类类分为容器类和控件类。容器类可容纳其它对象如表单、命令按钮组等,控件类不能容纳其它对象,如标签、命令按钮、文本框等。1控件类Label标签 CommandButton命令按钮 ListBox列表框TextBox文本框Timer计时器2容器类 Form表单 CommandGroup

12、FormSet 这些类是父容器的集成部分,在“类设计器”中不能子类化。10.5面向对象程序设计1对象的概念 对象是反映客观事物属性及行为特征的可操作实体,其中属性描述对象的状态,方法描述对象的行为。 2对象的基本特征 属性(Property) 对象具有的物理性质及其特性的描述。 事件(Event) 一种系统预先定义好的、能够被对象识别的特定动作,由用户或系统激活。如,Click事件、Load事件等。 事件是固定的,由系统提供,用户不能创建。 事件过程是设计人员为处理或响应特定事件而编写的程序,由事件的激发而调用其代码,也可在运行中由程序调用其代码。 方法(Method) 是与对象相关联的过程,

13、用于完成某种特定的功能。方法的代码只能在运行中由程序调用。 方法可以由系统提供,也可以由用户创建。1属性 描述对象的状态或某一方面的行为特征,派生出来的新类将继承基类和父类的全部属性。 对象的每个属性都具有一定的含义,通过设置对象的属性可以定义对象的不同特征和状态。 2. 事件 是由VFP预先定义好的、能够被对象识别的动作。事件作用于对象,对象识别事件并作出相应反应。 在容器对象的嵌套层次中,每个对象独立地接收并处理属于自己的事件。 3方法 是对象在事件触发时的行为和动作,是与对象或对象事件相对应的、相关联的过程,方法被“封装”在对象中,不同的对象具有不同的内部方法。 form set(表单集

14、)一种容器类。是一个或多个相关表单的集合。可使用“表单设计器”在表单集中布置表单。form(表单)一种容器类。是一个或多个页面的集合,类似标准窗口或对话框。表单可以包含用以显示并编辑数据的控件。表单可以包含在一个表单集中。control(控件)放在一个表单上用以显示数据、执行操作或使表单更易阅读的一种图形对象,如文本框、矩形或命令按钮等。Visual FoxPro 控件包括复选框、编辑框、标签、线条、图象、形状等等。可以使用“表单设计器”的“表单控件”工具栏在表单上绘制控件。10.5.1对象引用在容器层次中引用对象时(例如表单集中,在表单上命令按钮的 Click 事件里),可以通过快捷方式指明

15、所要处理的对象。下表列出了一些属性和关键字,这些属性和关键字允许更方便地从对象层次中引用对象:属性或关键字引用Parent该对象的直接容器。THIS该对象。THISFORM包含该对象的表单。THISFORMSET包含该对象的表单集。 在容器类对象中可以包含其它对象,由此构成了对象之间互相包含的层次关系。在VFP中,对象是通过容器的层次关系来引用的。因此,当引用一个对象时,必须知道它相对于容器层次的关系。(1)绝对引用 通过提供对象的完整容器层次来引用对象,是从最外层容器指向目标对象。例如, Form1.PageFrame1.Page1.cmdClear.Caption = ”清除”(2)相对引

16、用 从参照对象指向目标对象。 例如, ThisForm.cmdExit.Caption = ”退出”注释 您只能在方法程序或事件代码中使用 THIS、THISFORM 和 THISFORMSET。绝对引用表单集.表单.控件.属性值相对引用This.parent.backcolor=rgb(192,0,0)This.caption=”开始”下表提供了使用 THISFORMSET、THISFORM、THIS 和 Parent 来设置对象属性的示例:命令包含命令的地方THISFORMSET.frm1.cmd1.Caption = OK在此表单集的任意表单的任意控件其事件或方法程序代码中。THISFO

17、RM.cmd1.Caption = OK在 cmd1 所在的同一表单的任意控件其事件或方法程序代码中。THIS.Caption = OK在需要改变其标题的控件的事件或方法程序代码中。THIS.Parent.BackColor = RGB(192,0,0)在表单的一个控件的事件或方法程序代码中,此例的命令设置表单的背景色为暗红色。10.5.2设置属性既可以在运行时刻、也可以在设计时刻进行属性设置。1属性设置 可以在设计时刻、也可以在运行时刻设置属性;设置时既可以利用“属性”窗口,也可以在程序代码中使用命令语句。 格式1: . = 格式2: WITH . ENDWITH例如,设置表单MyForm1

18、中的按钮控件cmdClear的Height(高度)和Width (宽度)属性: 若要设置属性 请使用以下语法: 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,19

19、2,192) & 灰色背景在上例的属性设置中thisform是最高层的容器对象。如果thisform 包含在一个表单集中,则需要在父路径上包含这个表单集:表单集.thisform.txtDate.Value = DATE( )设置多个属性WITH . ENDWITH 结构简化了设置多个属性的过程。例如,在表单集的表单中,要设置表格列的多个属性,可以使用以下的语法结构:WITH THISFORM.text1 .Width = 5.ForeColor = RGB(0,0,0) .BackColor = RGB(255,255,255)ENDWITH10.5.3调用方法程序 对象能够执行的一个操作称

20、作方法。如果对象已创建,便可以在应用程序的任何一个地方调用这个对象的方法程序。2对象方法的调用 当对象创建以后,就可以在应用程序的任何一个地方调用这个对象的方法: 格式:.(参数表) 例如,调用显示一个表单对象MyForm1的方法: MyForm1.SHOW3调用基类中的方法 对象和子类会自动继承基类的全部功能,也可以用新功能替代继承来的功能。如果希望向新类或对象中添加新功能的同时保留父类功能,可以使用作用域操作符(:)在子类或对象中调用基类中的方法。 例如,MyCommandButton:Click 表示 MyCommandButton 对象继承其父 类的Click 事件过程。若要调用方法程

21、序 请使用以下语法: Parent.Object.Method下列语句调用方法程序来显示表单,并将焦点设置在文本框上:thisFormSet.thisForm.ShowthisFormSet.thisForm.Text1.SetFocusthisForm.release在表达式中,有返回值的方法程序必须以圆括号结尾。例如,下列语句将用户自定义的 GetNewCaption 方法程序的返回值设置成表单的标题:Form1.Caption = Form1.GetNewCaption( )注释 传递给方法程序的参数必须放在方法程序名后面的圆括号中。例如,Form1.Show(nStyle)。将 nSt

22、yle 传递给 Form1 的 Show 方法程序代码。10.5.4响应事件事件是由对象识别的一个动作,进行程序设计时可以编写相应代码对此动作进行响应。当事件发生时,该事件的过程代码将被执行。例如,当用户单击命令按钮时,命令按钮的 Click 事件过程代码将被执行。用编程方式,可以使用 MOUSE 命令产生 Click、DblClick、MouseMove 和 DragDrop 事件,或者使用 ERROR 命令产生 Error 事件,或者使用 KEYBOARD 命令产生 KeyPress 事件。除此以外,用户不能用其他的程序设计方法产生其他事件,但可以调用与这些事件相关的过程。例如,下面的语句

23、使得thisform 的 Activate 事件代码被执行,但并不激活这个表单:thisform.Activate若要激活表单,请使用表单的 Show 方法程序。调用 Show 方法程序将显示并激活表单,同时 Activate 事件代码也将被执行:thisform.Show从内存中释放对象和引用若一个对象的引用存在,则释放该对象并不能从内存中完全清除它。例如,下面的命令释放原始对象thisform:RELEASE thisform然而,因为存在对 frmInvoice 中所包含的对象 txtCompany 的引用,这个对象并不能从内存中释放,要等到使用如下命令释放了 txtCustName 以

24、后才可全部释放:RELEASE txtCustName所有 Visual FoxPro 基类有如下的最小事件集。事件说明Init当对象创建时激活。Destroy当对象从内存中释放时激活。Error当类中的事件或方法程序过程中发生错误时激活。所有Visual FoxPro 基类有如下的最小属性集。属性说明Class该类属于何种类型。BaseClass该类由何种基类派生而来,例如 Form、Commandbutton 或 Custom 等ClassLibrary该类从属于哪种类库。ParentClass对象所基于的类。若该类直接由 Visual FoxPro 基类派生而来,则 ParentClas

25、s 属性值与 BaseClass 属性值相同。为事件指定代码事件发生时,若没有与之相关联的代码,则不会发生任何操作。对于绝大多数事件,您都不必编写代码,您只需对少数几个关键的事件编程即可。 若要编写响应事件的代码,请使用“表单设计器”中的“属性”窗口。一段代码应置于何处,是由事件发生的顺序决定的。请注意以下提示: 表单中所有控件的 Init 事件将在表单的 Init 事件之前执行,所以在表单显示以前,就可在表单的 Init 事件代码中处理表单上的任意一个控件。当系统响应用户的一些动作时,自动触发事件代码。例如,用户在控件上做出单击动作时,系统自动执行为 Click 事件编写的代码。事件代码也可

26、被系统事件触发,例如计时器中的 Timer 事件。核心事件下面是 Visual FoxPro 核心事件集的列表,这些事件适用于大多数的控件。核心事件集事件事件被激发后的动作Init创建对象。Destroy从内存中释放对象。Click用户使用主鼠标按钮单击对象。DblClick用户使用主鼠标按钮双击对象。RightClick用户使用辅鼠标按钮单击对象。GotFocus对象接收焦点,由用户动作引起,如按 Tab 键或单击,或者在代码中使用 SetFocus 方法程序。LostFocus对象失去焦点,由用户动作引起,如按 Tab 键或单击,或者在代码中使用 SetFocus 方法程序使焦点移到新的对

27、象上。KeyPress用户按下或释放键。MouseDown当鼠标指针停在一个对象上时,用户按下鼠标按钮。MouseMove用户在对象上移动鼠标。MouseUp当鼠标指针停在一个对象上时,用户释放鼠标按钮。对象具有与之相关联的事件和方法程序每个对象都可以对一个被称为事件的动作进行识别和响应。事件是一种预先定义好的特定动作,由用户或系统激活。在多种情况下,事件是通过用户的交互操作产生的。例如,对一部电话来说,当用户提起听筒时,便激发了一个事件,同样,当用户拨号打电话时也激发了若干事件。在 Visual FoxPro 中,可以激发事件的用户动作包括:单击鼠标、移动鼠标和按键。方法程序是与对象相关联的

28、过程,但又不同于一般的 Visual FoxPro 过程。方法程序紧密地和对象连接在一起,并且与一般 Visual FoxPro 过程的调用方式也有所不同。事件可以具有与之相关联的方法程序。例如,为 Click 事件编写的方法程序代码将在 Click 事件出现时被执行。方法程序也可以独立于事件而单独存在,此类方法程序必须在代码中被显式地调用。事件集合虽然范围很广,但却是固定的。用户不能创建新的事件,然而方法程序集合却可以无限扩展。下表列出了与复选框相关联的一些事件。事件说明Click用户单击复选框。GotFocus用户选择复选框。LostFocus用户选择其他控件。下表列出了与复选框相关联的一

29、些方法程序。方法程序说明Refresh复选框中的值被更新,以反映隐含数据源的数据变化。SetFocus焦点被置于复选框,好象用户刚使用 TAB 键选中复选框。 1、对象的引用格式:表单.控件.属性=值thisform.label1.caption=welcome to use !thisform.caption= 欢迎光临mand1.caption= 欢迎光临thisform.backcolor=rgb(128,151,26)thisform.label1.autosize=.T.thisform.label1.fontsize=12thisform.label1.fontname=宋体thi

30、sform.label1.forecolor=rgb(255,22,99)2、设置属性;属性=值Caption=“welcome to use ”fontsize=12autosize=.T.forecolor=rgb(255,22,99)3、方法调用格式;表单.控件.方法对象能够执行的一个操作功能称为方法。mand1.setfocus 设置焦点 thisform.release 关闭表单thisform.refresh 刷新表单调用方法程序如果对象已创建,便可以在应用程序的任何一个地方调用这个对象的方法程序。若要调用方法程序 请使用以下语法: Parent.Object.Method下列语句调用方法程序来显示表单,并将焦点设置在文本框上:frsFormSet.frmForm1.ShowfrsFormSet.frmForm1.txtGetText1.SetFocus4事件响应事件是对象识别的一个动作。响应事件当事件发生时,该事件的过程代码将被执行。例如,当用户单击命令按钮时,命令按钮的 Click 事件过程代码将被执行。用编程方式,可以使用 MOUSE 命令产生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1