第十五讲 面向对象编程实例 介绍有关对象的引用方法 和事件代码设计,并用实例说 明面向对象程序设计过程
第十五讲 面向对象编程实例 介绍有关对象的引用方法 和事件代码设计,并用实例说 明面向对象程序设计过程
本讲主要内容 利用类创建对象 引用对象的方法 事件触发顺序 >事件代码设计 面向对象编程实例
本讲主要内容 ➢ 利用类创建对象 ➢ 引用对象的方法 ➢ 事件触发顺序 ➢ 事件代码设计 ➢ 面向对象编程实例
利用类创建对象 用 Sy Form1 )创建 对“学号学号 娃名t姓名 性别txt 用 出生年月「txt出生年 出生地txt出生 专业txt专业 对象 例8- 综合考详xt综 F表中 的用 止创建 首记录前一条后一条 尾记录 ①创建表单对象,显示表单设计器窗口和表单控件工具栏 ②单击表单控件工具栏上的查看类按钮,选择添加…,将 cmd po类所在的类库 classxsda vcx添加进来,该工具栏上 将显示类库中已有类的对应的按钮。 ③后续操作与利用基类创建对象一样
利用类创建对象 用已有的类(基类或类库中的任何子类)创建 对象 用自己创建的子类或类库中的子类创建对象 例8-5 创建一个表单显示 学生基本情况.DBF表中 的记录,并使用新建的类cmdpos在表单上创建 用于定位记录的命令按钮组。 ① 创建表单对象,显示表单设计器窗口和表单控件工具栏 ② 单击表单控件工具栏上的查看类按钮 ,选择添加...,将 cmdpos类所在的类库classxsda.vcx添加进来 ,该工具栏上 将显示类库中已有类的对应的按钮 。 ③ 后续操作与利用基类创建对象一样
用命令创建对象 frmsI=CREATEOBJECT(Clas Test") frmsi show READ EVENTS&&开始等待事件发生,直到执行了 CLEAREⅤENTS DEFINE CLASS Clas Test AS Form ADD OBJECT cmdSsHOW AS CommandButton cmdsHOW. Caption=显示信息 dshow Fontsize=14 cmdsHoW. Fore color=RGB(250,0,0) cmdsHoW. Left=50 cmdsHOW.Top=40 cmdshoW. Height=40 dshow 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
对象操作符及引用符 °点(.)操作符:指明对象之间的包容关系或对象与其 属性、事件、方法之间的属主关系 Form1 CmdEXI Form1 CmdEXIT Enabled=F. ·作用域(∷)操作符:当需要子类方法既有父类的功 能,又能添加一些自己特有的功能代码时可从一个子 类或子类定义的对象内部调用其父类的方法 :: ·This引用符:表示当前活动的对象 Ths:表示当前活动容器下的对象; Thi:表示当前活动对象的属性; Ths:表示当前活动对象的方法
对象操作符及引用符 点(.)操作符 :指明对象之间的包容关系或对象与其 属性、事件、方法之间的属主关系 . Form1.CmdEXIT . Form1.CmdEXIT.Enabled=.F. 作用域(::)操作符 :当需要子类方法既有父类的功 能,又能添加一些自己特有的功能代码时可从一个子 类或子类定义的对象内部调用其父类的方法 :: This引用符 :表示当前活动的对象 This. :表示当前活动容器下的对象; This. :表示当前活动对象的属性; This. :表示当前活动对象的方法
对象操作符及引用符 ° his form引用符:当前正活动着的表单 This form:表示当前活动表单下的对象; Thisform:表示当前活动表单的属性; ThisForm:表示当前活动表单的方法。 This FormSet引用符:当前正活动的表单集 This Form Set:表示当前活动表单集下的表单 This FormSet:表示当前活动表单集的属性; This Form Set:表示当前活动表单集的方法。 Parent引用符:包含当前活动对象的直接容器 用来引用控件的容器对象的属性、方法、事件,还可引用一个 页或表单的容器对象
对象操作符及引用符 ThisForm引用符 :当前正活动着的表单 ThisForm. :表示当前活动表单下的对象; ThisForm. :表示当前活动表单的属性; ThisForm. :表示当前活动表单的方法。 ThisFormSet引用符 :当前正活动的表单集 ThisFormSet. :表示当前活动表单集下的表单; ThisFormSet. :表示当前活动表单集的属性; ThisFormSet. :表示当前活动表单集的方法。 Parent引用符 :包含当前活动对象的直接容器 用来引用控件的容器对象的属性、方法、事件,还可引用一个 页或表单的容器对象
对象引用层次、方法 引用对象时要搞清它所在的容器及该容器的层次 表单集一表单 页框 页面 表格 列 各种控件 各种控件 标头、文本框等控件 绝对引用:从最外层的容器开始逐层指明各个对象名, 直到最内层的控件对象,之间用点操作符分隔。 相对引用:从当前活动对象开始指明被引用对象与当前 活动对象的层次(相对位置)关系。通常使用 Parent(包 含活动对象的容器)、This(活动对象)、 This form (活动表单)、 This formSet(活动表单集)来实现相对 引用
对象引用层次 、方法 引用对象时要搞清它所在的容器及该容器的层次 表单集 表单 页框 页面 表格 列 各种控件 各种控件 标头、文本框等控件 绝对引用 :从最外层的容器开始逐层指明各个对象名, 直到最内层的控件对象,之间用点操作符分隔。 相对引用 :从当前活动对象开始指明被引用对象与当前 活动对象的层次(相对位置)关系。通常使用Parent (包 含活动对象的容器)、This(活动对象)、ThisForm (活动表单)、ThisFormSet(活动表单集)来实现相对 引用
添加和设置属性 对象属性苣性 性-查询学生成缱.scx form 1 在程序 全部 数据 方法程序 布局 其他 的属性, cmdsHActiveContro AlwaysOnBotto 首默省 cdsnO AlwaysOnTop「F.一假认值 smasH Aut cEnter BackColor 192, 192, 192 cash| BorderStyle3可调边崔(认 Caption 查询学生成线 LipControls..真认省可读可改写属性 使用 Cl sable 真认值 Colorsource4- indows"控袢苗祓(芭 Continuousscr.T.-真微认值 Contro1BoxT.一真(默值 Contr olCount 2r Desktop F=讧道)
添加和设置属性 对象属性的设置有方法常见的有两种: 在程序中通过相对引用或绝对引用指明需要修改对象 的属性,用赋值的方式设置属性值。 cmdSHOW.Caption="显示信息" cmdSHOW.FontSize=14 cmdSHOW.ForeColor=RGB(250,0,0) cmdSHOW.Left=50 使用“属性”窗口找到需要设置的属性再修改其值; 可读可改写属性
引用方法 °无参数也无返回值的引用 语法形式:. 如: This Form. Release 带参数的引用 语法形式:.参数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系统定义基类时就预先设定好了, 编程人员只能对已有的事件编程,以完成特定功 能,不能增加或删除事件。 ➢了解和掌握基类的核心事件集以及事件触发条件、 触发顺序就成为面向对象编程的关键之一