用自定义的对象来替换内置的类

ZDNet软件频道 时间:2003-07-02 作者:ZDNet China |  我要评论()
本文关键词:vbtips
你可以利用Visual Basic 6给过程命名的方式使用自己的类来替换掉内置的类。这对于创建额外的功能很有用,因为这样就不需要更改对象的参照了。
本文译自Builder.com,未经许可请勿转载 你可以利用Visual Basic 6给过程(naming precedence)命名的方式使用自己的类来替换掉内置的类。这对于创建额外的功能很有用,因为这样就不需要更改对象的参照了。

例如,当使用集合里一个并不存在的索引来调用Item 方法的时候,Collection对象就会出现问题。你可能考虑使用一个不会出现问题的对象来替换掉这个对象。

在创建了一个叫做Collection的新的类模块之后,向其加入下面的代码:

Dim objCollection As VBA.Collection

Public Sub Add(Item As Variant, Optional Key As Variant, _
               Optional Before As Variant, Optional After As Variant)
    Call objCollection.Add(Item, Key, Before, After)
End Sub

Public Function Count() As Long
    Count = objCollection.Count
End Function

Public Function Item(ByVal Index As Variant) As Variant
    On Error Resume Next
    Item = objCollection.Item(Index)
End Function

Public Function Remove(ByVal Index As Variant)
    Call objCollection.Remove(Index)
End Function

Public Function NewEnum() As IUnknown
    Set NewEnum = objCollection.[_NewEnum]
End Function

Private Sub Class_Initialize()
    Set objCollection = New VBA.Collection
End Sub

Private Sub Class_Terminate()
    Set objCollection = Nothing
End Sub

在加入这段代码之后,在Visual Basic 6的菜单里选择工具(Tools)| 过程的属性(Procedure Attributes)选项。这会显示一个过程属性的对话框。选择名称(Name)下拉菜单里的NewEnum方法,然后在过程ID(Procedure ID)字段里输入-4,再勾选隐藏该成员(Hide This Member)。这就会激活For Each..Next的功能。

现在,当你的代码创建一个新的Collection类时,它就会去参照那个自定义的类。如果要参照原来的Collection类,那么你就必须使用组件名来给其加上前缀。

Dim objCollection As VBA.Collection

这个技巧对于在Visual Basic里通过扩展对象来更改已有功能或者加入新的方法很有用。但是,如果真的使用了这项技巧,你就应该仔细地做好文档工作,以避免对使用的是哪个对象产生误解。



责任编辑:炒饭

欢迎评论或投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134