The following example shows how to use the Implements statement to make a set of declarations available to multiple classes. By sharing the declarations through the Implements statement, neither class has to make any declarations itself.
Assume there are two forms. The Selector form has two buttons, Customer Data and Supplier Data. To enter name and address information for a customer or a supplier, the user clicks the Customer button or the Supplier button on the Selector form, and then enters the name and address using the Data Entry form. The Data Entry form has two text fields, Name and Address.
The following code for the shared declarations is in a class called PersonalData:
Public Name As String
Public Address As String
The code supporting the customer data is in a class module called Customer:
Implements PersonalData
Private Property Get PersonalData_Address() As String
PersonalData_Address = "CustomerAddress"
End Property
Private Property Let PersonalData_Address(ByVal RHS As String)
'
End Property
Private Property Let PersonalData_Name(ByVal RHS As String)
'
End Property
Private Property Get PersonalData_Name() As String
PersonalData_Name = "CustomerName"
End Property
The code supporting the supplier data is in a class module called Supplier:
Implements PersonalData
Private Property Get PersonalData_Address() As String
PersonalData_Address = "SupplierAddress"
End Property
Private Property Let PersonalData_Address(ByVal RHS As String)
'
End Property
Private Property Let PersonalData_Name(ByVal RHS As String)
'
End Property
Private Property Get PersonalData_Name() As String
PersonalData_Name = "SupplierName"
End Property
The following code supports the Selector form:
Private cust As New Customer
Private sup As New Supplier
Private Sub Command1_Click()
Dim frm2 As New Form2
Set frm2.PD = cust
frm2.Show 1
End Sub
Private Sub Command2_Click()
Dim frm2 As New Form2
Set frm2.PD = sup
frm2.Show 1
End Sub
The following code supports the Data Entry form:
Private m_pd As PersonalData
Private Sub Form_Load()
With m_pd
Text1 = .Name
Text2 = .Address
End With
End Sub
Public Property Set PD(Data As PersonalData)
Set m_pd = Data
End Property