home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / vbwkshp / Nodes.cls < prev    next >
Encoding:
Visual Basic class definition  |  1999-11-27  |  2.8 KB  |  103 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "NodeList"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes"
  15. Attribute VB_Ext_KEY = "Top_Level" ,"No"
  16. Attribute VB_Ext_KEY = "Collection" ,"Node"
  17. Attribute VB_Ext_KEY = "Member0" ,"Node"
  18. 'local variable to hold collection
  19. Private mCol As Collection
  20.  
  21. Public Function Add(fileName As String, attributes As Integer, nl As NodeList, Optional sKey As String) As Node
  22.     'create a new object
  23.     Dim objNewMember As New Node
  24.  
  25.     'set the properties passed into the method
  26.     objNewMember.fileName = fileName
  27.     Set objNewMember.nextNode = nl
  28.     objNewMember.attributes = attributes
  29.     If Len(sKey) = 0 Then
  30.         mCol.Add objNewMember
  31.     Else
  32.         mCol.Add objNewMember, sKey
  33.     End If
  34.  
  35.     'return the object created
  36.     Set Add = objNewMember
  37.     Set objNewMember = Nothing
  38.  
  39.  
  40. End Function
  41.  
  42. Public Property Get Item(vntIndexKey As Variant) As Node
  43. Attribute Item.VB_UserMemId = 0
  44.     'used when referencing an element in the collection
  45.     'vntIndexKey contains either the Index or Key to the collection,
  46.     'this is why it is declared as a Variant
  47.     'Syntax: Set foo = x.Item(xyz) or Set foo = x.Item(5)
  48.   Set Item = mCol(vntIndexKey)
  49. End Property
  50. Public Function Display(indent As String) As String
  51. Dim n As Node, s As String
  52.  
  53. For Each n In mCol
  54.     s = s & indent & n.fileName & vbCrLf
  55.     If n.attributes = vbDirectory Then
  56.         s = s & n.nextNode.Display(" " & indent)
  57.     End If
  58. Next
  59.  
  60. Display = s
  61.  
  62. End Function
  63.  
  64.  
  65. Public Property Get Count() As Long
  66.     'used when retrieving the number of elements in the
  67.     'collection. Syntax: Debug.Print x.Count
  68.     Count = mCol.Count
  69. End Property
  70.  
  71.  
  72. Public Sub Remove(vntIndexKey As Variant)
  73.     'used when removing an element from the collection
  74.     'vntIndexKey contains either the Index or Key, which is why
  75.     'it is declared as a Variant
  76.     'Syntax: x.Remove(xyz)
  77.  
  78.  
  79.     mCol.Remove vntIndexKey
  80. End Sub
  81.  
  82.  
  83. Public Property Get NewEnum() As IUnknown
  84. Attribute NewEnum.VB_UserMemId = -4
  85. Attribute NewEnum.VB_MemberFlags = "40"
  86.     'this property allows you to enumerate
  87.     'this collection with the For...Each syntax
  88.     Set NewEnum = mCol.[_NewEnum]
  89. End Property
  90.  
  91.  
  92. Private Sub Class_Initialize()
  93.     'creates the collection when this class is created
  94.     Set mCol = New Collection
  95. End Sub
  96.  
  97.  
  98. Private Sub Class_Terminate()
  99.     'destroys collection when this class is terminated
  100.     Set mCol = Nothing
  101. End Sub
  102.  
  103.