vbAccelerator - Contents of code file: cTreeViewNodes.cls

VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "cTreeViewNodes"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Option Explicit

Private m_lIDParent As Long
Private m_hWndCtl As Long

Private Function pbVerify(ByRef ctlThis As vbalTreeView) As Boolean
Dim lPtr As Long
Dim lIdx As Long
   If IsWindow(m_hWndCtl) Then
      lPtr = GetProp(m_hWndCtl, gcOBJECT_PROP)
      If Not (lPtr = 0) Then
         
         If (lPtr = 1) Then
            Debug.Print "NOOOOOO"
         End If
         
         Set ctlThis = ObjectFromPtr(lPtr)
         pbVerify = True
      Else
         gErr 1, "cListItems"
      End If
   Else
      gErr 1, "cListItems"
   End If
End Function

Friend Sub fInit(ctl As vbalTreeView, ByVal lIDParent As Long)
   m_lIDParent = lIDParent
   m_hWndCtl = ctl.hwnd
End Sub

Public Function Add( _
      Optional ByVal Relative As cTreeViewNode = Nothing, _
      Optional ByVal RelationShip As ETreeViewRelationshipContants = etvwChild,
       _
      Optional ByVal Key As String = "", _
      Optional ByVal Text As String = "", _
      Optional ByVal Image As Long = -1, _
      Optional ByVal SelectedImage As Long = -1 _
   ) As cTreeViewNode
Attribute Add.VB_Description = "Adds a new node with the specified relation to
 the node which owns this collection."
Dim ctl As vbalTreeView
Dim lIDRel As Long
Dim lIDNew As Long
Dim nodRet As cTreeViewNode
   If (pbVerify(ctl)) Then
      If (Relative Is Nothing) Then
         lIDRel = m_lIDParent
      Else
         lIDRel = Relative.ID
      End If
      lIDNew = ctl.fAdd(lIDRel, RelationShip, Key, Text, Image, SelectedImage)
      If Not (lIDNew = 0) Then
         Set nodRet = New cTreeViewNode
         nodRet.fInit ctl, lIDNew
         Set Add = nodRet
      End If
   End If
End Function

Public Sub Clear()
Attribute Clear.VB_Description = "Clears all the nodes from this collection."
Dim ctl As vbalTreeView
   If (pbVerify(ctl)) Then
      If (m_lIDParent = 0) Then
         ctl.fRemoveAll
      Else
         ctl.fRemoveChildren m_lIDParent
      End If
   End If
   '
End Sub

Public Property Get Count() As Long
Attribute Count.VB_Description = "Gets the number of nodes in this collection."
Dim ctl As vbalTreeView
   If (pbVerify(ctl)) Then
      Count = ctl.fCount(m_lIDParent)
   End If
End Property

Public Property Get Item(Index As Variant) As cTreeViewNode
Attribute Item.VB_Description = "Gets the item with the specified Key or index
 within the collection."
Attribute Item.VB_UserMemId = 0
Dim ctl As vbalTreeView
Dim lID As Long
   If (pbVerify(ctl)) Then
      If (m_lIDParent = 0) Or Not IsNumeric(Index) Then
         lID = ctl.fIDForIndex(Index)
      Else
         lID = ctl.fIDForNumericIndexInSubTree(m_lIDParent, Index)
      End If
      If Not (lID = 0) Then
         Dim cItem As New cTreeViewNode
         cItem.fInit ctl, lID
         Set Item = cItem
      End If
   End If
End Property

Public Sub Remove(Index As Variant)
Attribute Remove.VB_Description = "Removes the item with the specified index or
 key."
Dim ctl As vbalTreeView
Dim lID As Long
   If (pbVerify(ctl)) Then
      If Not IsNumeric(Index) Then
         lID = ctl.fIDForIndex(Index)
      Else
         lID = ctl.fIDForNumericIndexInSubTree(m_lIDParent, Index)
      End If
      If Not (lID = 0) Then
         ctl.fRemove lID
      End If
   End If
End Sub

Public Function Exists(Index As Variant) As Boolean
Attribute Exists.VB_Description = "Returns true if the item with the specified
 key exists in the collection or not."
Dim ctl As vbalTreeView
Dim lID As Long
Dim lErr As Long
   If (pbVerify(ctl)) Then
      On Error Resume Next
      lID = ctl.fIDForIndex(Index)
      lErr = Err.Number
      On Error GoTo 0
      Exists = ((lID <> 0) And (lErr = 0))
   End If
End Function

Public Property Get Parent() As cTreeViewNode
Attribute Parent.VB_Description = "Gets the parent of this node collection, if
 any, otherwise returns Nothing if it contains the root items in the tree."
Dim ctl As vbalTreeView
   If (pbVerify(ctl)) Then
      If Not (m_lIDParent = 0) Then
         If Not (ctl.fhItemForID(m_lIDParent) = 0) Then
            Dim cNod As New cTreeViewNode
            cNod.fInit ctl, m_lIDParent
            Set Parent = cNod
         End If
      End If
   End If
End Property