16.1对象、属性、事件和方法
目的与要求: 通过本次课的学习,掌握VFP的对象的操作方法。 | ||
教学内容与时间安排、教学方法: 教学安排: 对象的引用、属性设置 40分钟 调用方法程序、响应事件 40分钟 教学方法: CAI、图形、表格 | ||
教学重点及如何突出重点、难点及如何突破难点: 教学重点: 对象的引用、属性设置、调用方法程序、响应事件 教学难点: 调用方法程序、响应事件 | ||
基本内容 |
教学 |
课堂设计 |
9.4 对象的操作 1.对象的引用 在Visual FoxPro中,由于包容对象的存在,对象是可以进行嵌套的。为了引用和处理包容对象,需要知道对象相对于容器的层次关系。图8-1给出一种可能的容器嵌套方式,表单form1在表单集formset1中 知道了对象在容器中的层次,就可以引用对象。引用对象分为绝对引用和相对引用两种方法: (1)对象的绝对引用: 对象绝对引用通过提供对象完整的容器层次来引用对象。绝对引用使用格式如下:<对象>.<属性>或<对象>.<方法> 例如:在图8-1中,要使嵌套在页框中的命令按钮1(Command1)可用,命令按钮2(Command2)禁用,可以通过设置命令按钮的Enabled属性来实现。 Formset1.Form1.PageFrame1.Page1.Command1.Enabled=.T. Formset1.Form1.PageFrame1.Page1.Command2.Enabled=.F. 以上示例引用格式为:表单集.表单.页框.页.命令按钮.Enabled=.T.。其中Enabled属性用于指定对象能否响应用户引发的事件,允许将对象设置为启用或被禁 (2)对象的相对引用 对象除了采用绝对引用方式外,还可以采用相对引用的方式。相对引用是通过使用一些属性和关键字,更方便地从容器层次中引用对象。表8-9列出了常用的引用关键字: 要设置表单集中Form1表单的Command1命令按钮的标题属性,可以使用下面的命令 : ThisformSet.Form1.Command1.Caption="确定"或 Thisform.Command1.Caption="确定"或 This.Caption="确定" 2.设置属性 对象的属性既可以在设计对象时设置,也可以在程序运行时设置。在设计对象时对象属性可以通过“属性”窗口设置,属性窗口的使用方法将在后绪章节介绍,下面介绍如何使用命令在程序中设置对象的属性。 用户在编程时可以引用对象的属性值,也可以以命令方式对对象的某些属性进行修改。在运行时可以设置并可读取属性值的属性称为“读写属性”;而在运行时只能读取属性值的属性称“只读属性”。设置对象属性的语法格式如下:<容器>.<对象>.<属性>=<属性值> 例如,下面的命令对表单Form1中复选框Check1的属性进行设置: thisForm.Check1.Value=1 thisForm.Check1.Enabled=.F. 在属性设置时,可能要为一个对象设置多个属性,或者要为同一容器中的多个对象设置属性,都需要给出相同层次结构中的从属关系。为此Visual FoxPro提供了WITH……ENDWITH结构语句,简化了设置多个对象、多个属性的过程。例如,在当前表单集的表单中,要设置表格列的多个属性,可以使用以下格式: WITH Thisformset.Form1.Grid1.Column1 .Width = 25 .Resizable = .F. .ForeColor = RGB(0,0,0) .BackColor = RGB(255,255,255) .SelectOnEntry = .T. ENDWITH 注:为生成高效的程序代码和减少数据冗余,当引用当前对象的时候,当前对象在程序代码中可以省略.
-----------本节课结束-----------
3.调用方法程序 如果已经创建对象,便可以在应用程序的任何一个地方调用这个对象的方法程序。调用方法程序,可以使用以下语法:Parent.<对象>.<方法> 例如,下列语句调用方法程序来显示表单,并将焦点设置在文本框上: FormSet.Form1.Show FormSet.Form1.Text1.SetFocus 有些方法可以带返回值,调用时方法名后就要使用园括号。如果方法使用多个参数,调用时需要将这些参数放到方法名后的园括号内,并用逗号将它们分开。 语法是:Parent.<对象>.<方法>(参数1,参数2,...参数n) 4.响应事件 当事件发生时,包含在事件过程中的代码就会执行,这是对事件的响应。对于控件类对象,它们能够识别的事件是固定的,用户不能用程序设计方法再产生其它事件,但是可以设计和调用与这些事件相关的过程代码。例如:包含在命令按钮Command1的Click事件中的代码,当用户单击该命令按钮时将会被执行。如果我们在命令按钮Command1的Click事件中添加如下代码:ThisForm.Release,则当用户单击该命令按钮Command1时,将会调用释放表单的方法程序 事件有两种触发方式: 第一种是用户干预触发事件,如点击鼠标,可以产生Click(单击)、DoubleClick(双击)、MouseMove(移动到)、DragDrop(拖放)等事件,按键可以产生一个KeyPress(按键)事件,这些事件是用户的实际操作。另外,用户还可以通过MOUSE、KEYBOARD和ERROR命令来模拟鼠标、键盘操作和模拟错误,产生相应的事件。例如,使用ThisForm.Command1.Click可以触发单击鼠标事件。 第二种是Visual FoxPro系统自动触发事件,这类事件占Visual FoxPro事件的绝大部分。例如,当创建对象时,都会自动产生Init(初始)事件;释放对象时,会自动产生Destroy(释放)事件。 在容器层次中,容器不处理与其所包含控件相关联的事件,也就是容器事件的过程代码与控件的事件过程代码是相互独立的。当事件发生时,只有与事件相关联的最里层对象识别事件,较高层的容器不识别该事件。例如,当用户单击表单上的命令按钮时,表单的Click事件不会发生,只有命令按钮的Click事件发生。
|
讲述
|
对象的绝对引用15分钟
对象的相对引用10分钟
设置属性10分钟
调用方法程序15分钟
响应事件20分钟 |