7
votes

I'm just curious on this one. I know two ways of defining events in Delphi, using the callback principle, and the windows messages principle.

However, the messages principle is not object-oriented, and the callbacks are only suited for one instance.

I would like a nice solution for having one event, where two different objects can perform an action after the event fires.

In Java, I could simply add another listener.

Does anyone know any equivalent approach in Delphi to this nice listener's principle?

3

3 Answers

4
votes

These are also known as multi-cast events and Allen Bauer wrote a nice article titled Multicast events using generics giving good coverage of the topic.

In short, multi-cast events are not baked into the language/framework like in Java C#, but can be simulated with some extra work. The introduction of generics has made this somewhat simpler.

1
votes

There is already a similar discussion on SO with some additional links to existing multicast implementations.

0
votes

Actually this is a design pattern called observer or listener (http://c2.com/cgi/wiki?ObserverPattern). I guess that you could write the implementation of your object in such a way that you could register a list of observers that could be notified of any change in your code.