vba events across projects?
Eric,
The code below worked for me (at least it did what I expected, but I realize
these two are not always the same thing).
To simplify I created two simple classes in the same project, clsA and clsB.
clsB contains an instance of clsA.
I had to cheat a bit and expose the clsA instance of clsB via a property so
I could trigger the clsA event....
Cheers
Tim
'#### test code
Sub Tester()
Dim oB As clsB
Set oB = New clsB
oB.SubClassA.DisplayConsumerInformation
End Sub
'############### clsA code
Option Explicit
Private m_title As String
Public Event appTitleRequest(ByRef MsgEx As clsA)
Public Sub DisplayConsumerInformation()
Me.Title=""
RaiseEvent appTitleRequest(Me)
MsgBox Me.Title
End Sub
Property Let Title(sTitle As String)
m_title = sTitle
End Property
Property Get Title() As String
Title = m_title
End Property
'##################### clsB code
Option Explicit
Private m_title As String
Public Event appTitleRequest(ByRef MsgEx As clsA)
Public Sub DisplayConsumerInformation()
RaiseEvent appTitleRequest(Me)
MsgBox Me.Title
End Sub
Property Let Title(sTitle As String)
m_title = sTitle
End Property
Property Get Title() As String
Title = m_title
End Property
"Eric Fingerhut" wrote in message
...
Thanks for the reply. I'm talking about Custom events, and I must
apologize
for accidentally posting this twice. Sample code below:
//////////////////////////////////////////////////////////
Class CMsgEx is a class in LibA with the following custom event raised in
a
sample method below:
/////////////////////////////////////////////////////////
' post that we are looking for an application title
Public Event applicationTitleRequest(MsgEx As CMsgEx)
Public Function displayInformation(ByVal aMsg As String) As VbMsgBoxResult
RaiseEvent applicationTitleRequest(Me)
icon = Information
Caption = aMsg
Title = aTitle
displayInformation = show
End Function
/////////////////////////////////////////////////
Class CAppFacade is in LibB, and LibB has a refernce to Lib A
////////////////////////////////////////////////
Public WithEvents m_oMsgEx As LibA.CMsgEx
Private Sub m_oMsgEx_applicationTitleRequest(MsgEx As LibA.CMsgEx)
MsgEx.Title = Me.applicationName
End Sub
"Tim Williams" wrote:
If LibA is ignorant of LibB then how will it know what to do with the
information ?
I would just set up any required methods in LibA and call them from LibB.
Can you be more specific about the libraries? Or post the code you have
which doesn't work...
Tim
"Eric" wrote in message
news:K5f_f.216$bm6.153@fed1read04...
Is this possible?
I have a core library (vba project, "LibA") that I want to be ignorant
of
any consumers. If I set up a separate project ("LibB") that has a
reference set to "LibA", there are times when I may like to make a
piece
of information available from LiibB to LibA.
I thought the natural solution would be to set up an event that
broadcasts
the need for information in LibA, with and event handler in LibB to
provide it. Doing so compiles, but doesn't seem to work.
TIA,
Eric
|