Content Supported by Sourcelens Consulting
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "Employees"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit
' >> Best viewed in Full Module view. <<
'
' Storage for debug ID number.
Private mlngDebugID As Long
Implements IDebug
' Private collection that does all the
' work.
Private colEmployees As New Collection
' NewEnum method enables the use of For
' ------- Each with the Employees
' collection class. For an
' explanation, see "Creating Your Own
' Collection Class: The House of Bricks"
' in Books Online.
'
' For NewEnum to work properly, its
' procedure ID must be set to -4. To see
' this, select Procedure Attributes
' from the Tools menu. In the Name box,
' select Item, then click the Advanced
' button. You can see that the Procedure
' ID has been set to -4. ("Hide this
' member" is checked, also, so that the
' NewEnum method is hidden in the Object
' Browser.)
Public Function NewEnum() As IUnknown
Attribute NewEnum.VB_UserMemId = -4
Attribute NewEnum.VB_MemberFlags = "40"
' Delegate to the private Collection
' object's _NewEnum method.
Set NewEnum = colEmployees.[_NewEnum]
End Function
' Add method creates a new Employee in
' --- the collection.
'
Public Function Add(ByVal Name As String, _
ByVal Salary As Double) As Employee
Dim empNew As New Employee
Static intEmpNum As Integer
' Using With shortens property references (.ID instead of empNew.ID)
' and speeds up execution.
With empNew
' Generate a unique ID for the new employee.
intEmpNum = intEmpNum + 1
.ID = "E" & Format$(intEmpNum, "00000")
.Name = Name
.Salary = Salary
' Add the Employee object reference to the collection, using its
' ID property as the key.
colEmployees.Add empNew, .ID
End With
' It is good practice to return a reference to the new member.
Set Add = empNew
End Function
' To see how the Item method was made the
' default method for the Employees
' collection, select Procedure Attributes
' from the Tools menu. In the Name box,
' select Item, then click the Advanced
' button. You can see that (Default)
' has been selected in the Procedure ID
' box.
Public Function Item(ByVal Index As Variant) As Employee
Set Item = colEmployees.Item(Index)
End Function
Public Function Count() As Long
Count = colEmployees.Count
End Function
Public Sub Delete(ByVal Index As Variant)
colEmployees.Remove Index
End Sub
Private Sub Class_Initialize()
mlngDebugID = DebugInit(Me)
End Sub
Private Sub Class_Terminate()
DebugTerm Me
End Sub
' -------- IDebug Implementation --------
'
' IDebug.DebugID gives you a way to tell
' ====== ------- objects apart. It's
' required by the DebugInit, DebugTerm,
' and DebugShow debugging procedures
' declared in modFriend.
'
Private Property Get IDebug_DebugID() As Long
IDebug_DebugID = mlngDebugID
End Property