教学设计
您当前的位置: 澳门新葡京app>教学设计

16.1对象、属性、事件和方法

发布时间: 2019-01-27      信息来源:       阅读次数:

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分钟