[AccessD] Refreshing open forms when something changes

jwcolby jwcolby at colbyconsulting.com
Tue Jun 21 10:25:03 CDT 2011


I forgot to mention...

Notice that I used vars as the parameters.  This allows me to pass objects as a parameter.  I could 
pass a combo box, a form, a recordset etc.  That would be the object *raising* the event passing the 
object.

I have actually found that useful on occasion.

John W. Colby
www.ColbyConsulting.com

On 6/21/2011 11:17 AM, jwcolby wrote:
>  > That actually doesn't happen too often in Windows, but the way John is doing it, that always
> happens.
>
> Not true. My form broadcasts an event. If none of the other forms which need to receive the message
> is open then nothing receives the message. My usage is precisely the same as windows. Raise an event
> when something happens and who cares who is receiving it.
>
> My code does (in this case) use a single "channel" for all messages but that is not a requirement. I
> could quite easily have a collection of global message classes keyed on a name. Then sets of things
> could use a common "channel". In the end, there is so little message traffic that it makes no sense
> to worry about it.
>
> If you think about it, windows has several "channels". It has mouse events, keyboard events, disk
> events and so forth.
>
> I just happened to create a class which emulates an email. That was a useful model with the "from,
> To, Subject and Msg" parameters since it allowed me to easily set up filters on the messages so that
> processes could be targeted on a single "channel".
>
> Nothing says you have to use a single channel though. The nice thing about classes is that you can
> create 0 to N instances of them. ;)
>
> John W. Colby
> www.ColbyConsulting.com
>
> On 6/21/2011 9:37 AM, Jim Dettman wrote:
>>
>> Fundamentally, that's also the way Windows works. Each Window (program)
>> has a message queue. The OS and windows can send messages to the windows
>> and the windows respond to them as they see fit.
>>
>> Overall works pretty well, but it does lead to problems at times (order of
>> events) and it gets terribly inefficient when you have a large number of
>> "broadcast" messages (a message sent to all windows) and a large number of
>> windows receiving that message and trying to process it, which may or may
>> not apply to it.
>>
>> That actually doesn't happen too often in Windows, but the way John is
>> doing it, that always happens. Not too much of a problem though given the
>> limited number of forms that you might have open at one time (maybe half
>> dozen at most?).
>>
>> I might take the additional step of registering/unregistering needed
>> services as forms open or close and modify the message class to only send
>> messages to forms that need them (a Business Object), but that most likely
>> would be overkill.
>>
>> Jim.
>>
>> -----Original Message-----
>> From: accessd-bounces at databaseadvisors.com
>> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Charlotte Foust
>> Sent: Monday, June 20, 2011 08:24 PM
>> To: Access Developers discussion and problem solving
>> Subject: Re: [AccessD] Refreshing open forms when something changes
>>
>> In vb.net, this is the standard and expected way of doing things. It allows
>> the various pieces to be black boxes that do something when they receive a
>> signal. If you need another black box to do something on the same signal,
>> you sink the same event in the second black box. You don't have to change
>> the code that raises the event. It just raises it hand and waves, and any
>> black boxes that are listening do their thing. If there are no listeners,
>> the hand gets some exercise but nothing else results. Access (thank you
>> Microsoft) lets us be sloppy and not learn to use classes effectively. In
>> fact, it makes it relatively difficult to use classes except for the built
>> in object classes, and even those hide much of their inner workings.
>>
>> Charlotte Foust
>>
>> On Mon, Jun 20, 2011 at 2:38 PM, Stuart McLachlan
>> <stuart at lexacorp.com.pg>wrote:
>>
>> <<snip>>
>>



More information about the AccessD mailing list