VBA控件教程:类模块的循序渐进

2015-06-09 23:31 阅读 77 次 评论关闭

本示例演示了如何用类模块定义类(然后可以用它创建对象)。还将展示如何为新的类创建属性和方法并演示对象是如何创建和撤消的。

打开一个新的“标准 EXE”工程,在“工程”菜单中选中“添加类模块”插入一个类模块。在窗体上画四个按钮。下表列出了本示例中要设置的对象属性值。

对象 属性 设置值
Class 类模块 Name Thing
Command1 Caption 显示该 Thing
Command2 Caption 颠倒该 Thing 的名称
Command3 Caption 创建新的 Thing
Command4 Caption 临时的 Thing

 

注意 类模块保存在扩展名为 .cls 的文件中。

添加下列代码到类模块的声明段:

Option Explicit
Public Name As String
Private mdtmCreated As Date

变量 Name 将成为 Thing 对象的属性,因为它声明为 Public。

注意 不要把这个 Name 属性和上表设置的类模块的 Name 属性混淆(类模块的 Name 属性为 Thing 类提供了名称)。为什么要给 Thing 类命名呢?最好应该反过来问,为什么不?应该给 Thing 类一个名称因为事物总是有名称的!应该知道 Visual Basic 使用属性和方法的名称并没有什么特殊点。可以为自己不同的类使用相同的属性和方法名。

变量 mdtmCreated 是私有数据成员,用于存储只读的 Created 属性的值。Created 属性返回 Thing 对象产生的日期和时间。为了实现 Created 属性,将以下 Property Get 代码添加到类模块的声明部分:

Property Get Created() As Date
   Created = mdtmCreated
End Property

注意 如果通过“工具”菜单下的“添加过程”对话框添加属性过程,应确认删除了 Property Let 声明,它是通过本对话框自动添加的。Property Let 只用于读写属性,参见“运用属性过程”部分。

Thing 对象有一个方法 ReverseName,用于颠倒 Name 属性的字母顺序。它不返回值,因此是一个 Sub 过程。向类模块添加以下 Sub 过程。

Public Sub ReverseName()
   Dim intCt As Integer
   Dim strNew As String
   For intCt = 1 To Len(Name)
      strNew = Mid$(Name, intCt, 1) & strNew
   Next
   Name = strNew
End Sub

类模块有两个事件:Initialize 和 Terminate。从类模块的“对象”下拉列表中,选择“类”。下拉出的“过程”列表将显示事件。将以下代码放到事件过程中:

Private Sub Class_Initialize()
   '设置对象创建的日期/时间,
   '   由只读的 Created 属性返回。
   mdtmCreated = Now
   '显示对象属性。
   MsgBox "Name: " & Name & vbCrLf & "Created: " _
   & Created, , "Thing Initialize"
End Sub

Private Sub Class_Terminate()
   '显示对象属性。
   MsgBox "Name: " & Name & vbCrLf & "Created: " _
   & Created, , "Thing Terminate"
End Sub

一般 Initialize 事件包含了对象创建时所需的所有代码,如为 Created 属性提供时间标记。Terminate 事件包含撤消对象后进行清理的所有代码。

本示例中,两个事件主要用来提供 Thing 对象创建或撤消的可视化指示。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:VBA控件教程:类模块的循序渐进 | 猎微网

评论已关闭!