[AccessD] Off the wall Events question...

Joshua B jbusergroups at optushome.com.au
Fri Feb 14 08:02:00 CST 2003


Hello Drew,

It's quite possible I'm missing the grand scheme of things here, but you can call a function (in both A97 & 2000) on another form using the syntax "Call Forms("MyFormName").NameOfFunction"...

======= At 2003-02-13, 15:40:00 you wrote: =======

>Thanks Shamil.  I was thinking along the same lines yesterday.  The only
>issue with this method is that it is going to require more code for the end
>users (well end developers) to deal with on their forms.
>
>This method definitely works though.  So as of right now, it's a toss up
>between this method, and just 'hijacking' some of the current form 'events'.
>
>Thanks again.
>
>Drew
>
>-----Original Message-----
>From: Shamil Salakhetdinov [mailto:shamil at smsconsulting.spb.ru]
>Sent: Thursday, February 13, 2003 4:40 AM
>To: accessd at databaseadvisors.com
>Subject: Re: [AccessD] Off the wall Events question...
>
>
>> So, does anyone know how to accomplish the same thing in Access 97.
>Drew,
>
>It looks a little bit ugly but it can be done in Acc97 and ported to
>A2K/AXP/A11 with just a few edits of the source code - here is one of the
>ways to do it:
>
>'================  cut here ==================
>'+ CMyClassWithEvents (custom class module)
>#Const Acc97 = 1 ' change to 0 in A2K/AXP/A11
>#If Acc97 Then
>Private mobjCallBackClient As Object
>
>Public Sub Init(ByRef robjCallBackClient As Object)
>    Set mobjCallBackClient = robjCallBackClient
>End Sub
>Public Sub Terminate()
>    Set mobjCallBackClient = Nothing
>End Sub
>#Else
>'Event MyEvent() ' uncomment in A2K/AXP/A11
>#End If
>
>Public Sub CallBackTest()
>#If Acc97 Then
>    mobjCallBackClient.MyEvent
>#Else
>    'RaiseEvent MyEvent  ' uncomment in A2K/AXP/A11
>#End If
>End Sub
>'- CMyClassWithEvents
>
>'================  cut here ==================
>'+ CMyCustomsEventsClient (custom class module)
>#Const Acc97 = 1 ' change to 0 in A2K/AXP/A11
>
>#If Acc97 Then
>Private mobjMyClassWithEvents As CMyClassWithEvents
>#Else
>Private WithEvents mobjMyClassWithEvents As CMyClassWithEvents
>#End If
>
>Public Sub Test()
>   Set mobjMyClassWithEvents = New CMyClassWithEvents
>   With mobjMyClassWithEvents
>     #If Acc97 Then
>      .Init Me
>      .CallBackTest
>      .Terminate
>     #Else
>      .CallBackTest
>     #End If
>   End With
>End Sub
>
>Private Sub mobjMyClassWithEvents_MyEvent()
>    MsgBox "MyEvent fired!", vbOKOnly + vbInformation
>End Sub
>
>#If Acc97 Then
>Public Sub MyEvent()
>    mobjMyClassWithEvents_MyEvent
>End Sub
>#Else
>#End If
>'- CMyCustomsEventsClient
>
>'================  cut here ==================
>'+ basTest (standard module)
>Public Sub a_test()
>    Dim o As CMyCustomsEventsClient
>    Set o = New CMyCustomsEventsClient
>    o.Test
>End Sub
>'- basTest
>'================  cut here ==================
>
>- Of course you can set project level conditional compilation constant Acc97
>to have less work during your port to A2k/Axp/A11;
>- Unfortunately Event and RaiseEvent are reserved words in Acc97 and even
>conditional compilation doesn't allow to use them without comments - so
>during port to A2k/Axp/A11 additional work of uncommenting code lines with
>RaiseEvent and Event will be needed...;
>- I did use very simple custom event without any arguments to show the
>principle - in the case of the usage of event arguments callback methods can
>be specific for every custom event or this technique can use more general
>callback method with EventName as the first paramater and ParamArray
>following it and Select Case inside it to call specific private custom event
>sinks ...;
>- Init method is what MS Access does "behind the curtains" when you use
>WithEvents;
>- Terminate method is a MUST HAVE for this custom events Acc97 simulation -
>without it object instances will not be released because of cross-refs and
>you'll get memory leak....
>
>HTH,
>Shamil
>
>
>----- Original Message -----
>From: "Drew Wutka" <DWUTKA at marlow.com>
>To: <AccessD at databaseadvisors.com>
>Sent: Thursday, February 13, 2003 7:49 AM
>Subject: [AccessD] Off the wall Events question...
>
>
>> With all of the posts about events recently, something just dawned on me.
>> Actually, it came crashing down on me.
>>
>> I have been rewriting my MiniCalendar form lately.  My original works, but
>> is far from elegant, or even slick.  I had visualized a lot of changes I
>> wanted to incorporate, and just starting wacking at them all.
>>
>> So far I have gotten some neat 'features', such as a rounded form,
>extended
>> dropdown capability, etc.  However, one of the new features that I had
>> planned on, I now know I can't do directly.  The old form accepted a form
>> name and control name, and would return a date to that control.  What I
>> wanted to use in this version was raiseevent, to fire an event on the
>> calling form.  Thinking in VB 6 mode, I didn't even realize this would be
>a
>> problem with Access 97, since I can do this easily in VB 6.  But with all
>of
>> the recent posts, I realized that event and raiseevent are reserved
>keywords
>> in Access 97 (VBA 5.0), but do nothing.
>>
>> ARG!!!!
>>
>> So, does anyone know how to accomplish the same thing in Access 97.  I
>will
>> be making a 2000 version of my calendar, so obviously I can use event and
>> raiseevent there, but I am developing the new version in 97 first, so I
>need
>> a work around.  I am thinking about using one of the form's current
>events,
>> and triggering it.  (Probably AfterUpdate).  I wanted my own event, but
>that
>> doesn't look possible.  I even tried hunting through the VBA .dll's, to
>see
>> if I could fudge an API or two, but no luck there.
>>
>> Any thoughts?
>>
>> Drew
>> _______________________________________________
>> AccessD mailing list
>> AccessD at databaseadvisors.com
>> http://databaseadvisors.com/mailman/listinfo/accessd
>> Website: http://www.databaseadvisors.com
>
>_______________________________________________
>AccessD mailing list
>AccessD at databaseadvisors.com
>http://databaseadvisors.com/mailman/listinfo/accessd
>Website: http://www.databaseadvisors.com
>_______________________________________________
>AccessD mailing list
>AccessD at databaseadvisors.com
>http://databaseadvisors.com/mailman/listinfo/accessd
>Website: http://www.databaseadvisors.com

= = = = = = = = = = = = = = = = = = = =
			

Best regards.				 
Joshua B
jbusergroups at optushome.com.au
2003-02-14






More information about the AccessD mailing list