第十五讲 面向对象编程实例 介绍有关对象的引用方法 和事件代码设计,并用实例说 明面向对象程序设计过程
第十五讲 面向对象编程实例 介绍有关对象的引用方法 和事件代码设计,并用实例说 明面向对象程序设计过程
本讲主要内容 利用类创建对象 引用对象的方法 事件触发顺序 事件代码设计 面向对象编程实例
本讲主要内容 ➢ 利用类创建对象 ➢ 引用对象的方法 ➢ 事件触发顺序 ➢ 事件代码设计 ➢ 面向对象编程实例
利用类创建对象 NOrml 回p)创建 对“学号学号 娃名txt姓名 性别txt 出注年月txt出生年月 出生地xt出生 专业txt专业 对象 例8 ++++≠ 综合考详txt综 F表中 的用 止创建 首记录」前一条」后一条」尾记录 ①创建表单对象,显示表单设计器窗口和表单控件工具栏 ②单击表单控件工具栏上的査看类按钮,选择添加…,将 cmdpos类所在的类库 classxsda vcx添加进来,该工具栏上 将显示类库中已有类的对应的按钮 ③后续操作与利用基类创建对象一样
利用类创建对象 用已有的类(基类或类库中的任何子类)创建 对象 用自己创建的子类或类库中的子类创建对象 例8-5 创建一个表单显示 学生基本情况.DBF表中 的记录,并使用新建的类cmdpos在表单上创建 用于定位记录的命令按钮组。 ① 创建表单对象,显示表单设计器窗口和表单控件工具栏 ② 单击表单控件工具栏上的查看类按钮 ,选择添加...,将 cmdpos类所在的类库classxsda.vcx添加进来 ,该工具栏上 将显示类库中已有类的对应的按钮 。 ③ 后续操作与利用基类创建对象一样
用命令创建对象 frmSI=CREATEOBJECT("Clas Test") frms1 Show READ EVENTS&&开始等待事件发生,直到执行了 CLEAREVENTS DEFINE CLASS Clas Test as form ADD OBJECT cmdSHOW AS CommandButton cmdsHOW. Caption=显示信息 cmdsHoW. Fontsize=14 cmdSHOW. Fore Color=RGB(250,0,0) cmdsHOW. Left50 cmdSHOW.Top=40 cmdshoW. Height=40 cmdsHoW.width=180 PROCEDURE cmdsHoW Click WAIT WINDOW"你好!我是狐狸。 CLEAR EVENTS &&结束事件等待状态 Thisform. Release &&释放表单 ENDPROC ENDDEFINE
用命令创建对象 语法形式: = CREATEOBJECT( [,参数1,参数2,...]) 例8-6 编一程序实现以下任务。定义表单类 ClasTest,它包含一个用来显示一条消息命令按 钮。用该类创建一个表单对象frmS1,显示这个 对象。 frmS1=CREATEOBJECT("ClasTest") frmS1.Show READ EVENTS && 开始等待事件发生,直到执行了CLEAR EVENTS DEFINE CLASS ClasTest AS Form ADD OBJECTcmdSHOW AS CommandButton cmdSHOW.Caption="显示信息" cmdSHOW.FontSize=14 cmdSHOW.ForeColor=RGB(250,0,0) cmdSHOW.Left=50 cmdSHOW.Top=40 cmdSHOW.Height=40 cmdSHOW.Width=180 PROCEDUREcmdSHOW.Click WAIT WINDOW"你好!我是狐狸。 " CLEAR EVENTS && 结束事件等待状态 Thisform.Release && 释放表单 ENDPROC ENDDEFINE
对象操作符及引用符 °点(.)操作符:指明对象之间的包容关系或对象与其 属性、事件、方法之间的属主关系 Forml. cmdEXIT Form1 CmdEXIT Enabled=F. ·作用域(∷)操作符:当需要子类方法既有父类的功 能,又能添加一些自己特有的功能代码时可从一个子 类或子类定义的对象内部调用其父类的方法 :: ·This引用符:表示当前活动的对象 This:表示当前活动容器下的对象; This.:表示当前活动对象的属性; This:表示当前活动对象的方法
对象操作符及引用符 点(.)操作符 :指明对象之间的包容关系或对象与其 属性、事件、方法之间的属主关系 . Form1.CmdEXIT . Form1.CmdEXIT.Enabled=.F. 作用域(::)操作符 :当需要子类方法既有父类的功 能,又能添加一些自己特有的功能代码时可从一个子 类或子类定义的对象内部调用其父类的方法 :: This引用符 :表示当前活动的对象 This. :表示当前活动容器下的对象; This. :表示当前活动对象的属性; This. :表示当前活动对象的方法
对象操作符及引用符 ° Thisformi引用符:当前正活动着的表单 This form:表示当前活动表单下的对象; This form≤属性>:表示当前活动表单的属性; This form:表示当前活动表单的方法。 This formSet引用符:当前正活动的表单集 This formSe.:表示当前活动表单集下的表单; This Set:表示当前活动表单集的属性; This FormSe.:表示当前活动表单集的方法。 Paren引用符:包含当前活动对象的直接容器 用来引用控件的容器对象的属性、方法、事件,还可引用一个 页或表单的容器对象
对象操作符及引用符 ThisForm引用符 :当前正活动着的表单 ThisForm. :表示当前活动表单下的对象; ThisForm. :表示当前活动表单的属性; ThisForm. :表示当前活动表单的方法。 ThisFormSet引用符 :当前正活动的表单集 ThisFormSet. :表示当前活动表单集下的表单; ThisFormSet. :表示当前活动表单集的属性; ThisFormSet. :表示当前活动表单集的方法。 Parent引用符 :包含当前活动对象的直接容器 用来引用控件的容器对象的属性、方法、事件,还可引用一个 页或表单的容器对象
对象引用层次、方法 引用对象时要搞清它所在的容器及该容器的层次 表单集 表单 页框 页面 表格 各种控件 各种控件 标头、文本框等控件 N绝对引用:从最外层的容器开始逐层指明各个对象名, 直到最内层的控件对象,之间用点操作符分隔。 相对引用:从当前活动对象开始指明被引用对象与当前 活动对象的层次(相对位置)关系。通常使用 Parent((包 含活动对象的容器)、This(活动对象)、 Thisform (活动表单)、 This Set(活动表单集)来实现相对 引用
对象引用层次 、方法 引用对象时要搞清它所在的容器及该容器的层次 表单集 表单 页框 页面 表格 列 各种控件 各种控件 标头、文本框等控件 绝对引用 :从最外层的容器开始逐层指明各个对象名, 直到最内层的控件对象,之间用点操作符分隔。 相对引用 :从当前活动对象开始指明被引用对象与当前 活动对象的层次(相对位置)关系。通常使用Parent (包 含活动对象的容器)、This(活动对象)、ThisForm (活动表单)、ThisFormSet(活动表单集)来实现相对 引用
添加和设置属性 对象属性笸量性本字柱 form 1 在程序 全部 数据 方法程序 布局 其他 象 的属性, cmdSHActiveContro]0 AlwaysOnBotto 联我值 cmdsH AlwsysonTop cdsno AutoCenter Backcolor 1g2.192.192 cmdSHBorderStyl3-可调边框默认 Caption 查询学生 C 1 o⊥s 真(认值可读可改写属性 ◆使用“月 Closable 真认值 Colorsource4 Windows控件苗祓"n颜色〕 Continuoussc 真认渲 ControlBox 真认值 ControlCount 2r Desktop 偃次值)
添加和设置属性 对象属性的设置有方法常见的有两种: 在程序中通过相对引用或绝对引用指明需要修改对象 的属性,用赋值的方式设置属性值。 cmdSHOW.Caption="显示信息" cmdSHOW.FontSize=14 cmdSHOW.ForeColor=RGB(250,0,0) cmdSHOW.Left=50 使用“属性”窗口找到需要设置的属性再修改其值; 可读可改写属性
引用方法 参数也无返回值的引用 语法形式:..参数1,参数2, 如:Text1Move12,30 ·带返回值的引用 例8-12编写程序段,判断当前控件所在表单的标题字体高度, 当高度小于10时将表单字号设置为12。 IF This parent. textheight(This parent Caption)<10 This Parent Fontsize=12 ENDIF
引用方法 无参数也无返回值的引用 语法形式:. 如:ThisForm.Release 带参数的引用 语法形式: . 参数1,参数2,… 如:Text1.Move 12,30 带返回值的引用 例8-12 编写程序段,判断当前控件所在表单的标题字体高度, 当高度小于10时将表单字号设置为12。 IF This.parent.textheight(This.parent.Caption) <10 This.Parent.FontSize=12 ENDIF
事件 >在面向对象的程序设计中,整个系统的运行基本 上由事件触发,然后执行相关的事件处理程序以 及对象的方法。 >事件又是在ⅴFP系统定义基类时就预先设定好了 编程人员只能对已有的事件编程,以完成特定功 能,不能增加或删除事件。 >了解和掌握基类的核心事件集以及事件触发条件 触发顺序就成为面向对象编程的关键之一
事 件 ➢在面向对象的程序设计中,整个系统的运行基本 上由事件触发,然后执行相关的事件处理程序以 及对象的方法。 ➢事件又是在VFP系统定义基类时就预先设定好了, 编程人员只能对已有的事件编程,以完成特定功 能,不能增加或删除事件。 ➢了解和掌握基类的核心事件集以及事件触发条件、 触发顺序就成为面向对象编程的关键之一