Domanda

I'm facing a problem that I can't find a way in Delphi to solve it.

I have a pop up menu and I have an event for when the person select this option, what I want to do is broadcast this event for any object that registry to it.

The problem that I'm facing is that I can just registry to the event if I have an instance of the pop up menu created, but if I do create an instance just to listen do this event still it is a different instance and I wont be able to listen to it.

How can I archive this goal of have many objects listen to an event of one object in Delphi?

Thanks

È stato utile?

Soluzione

Delphi does not natively support multicasting of events. You have to create your own mechanism for that. The simplest solution is to store your registered objects/handlers in a list, then loop through that list when the event is triggered, calling each object/handler as needed. For example:

Simulating multicast events in Win32 Delphi

Allen Bauer wrote a series of blog articles about a more advanced way to implement multicasting events in Delphi:

Multicast events using generics
Multicast Events - the cleanup
Multicast Events - the finale

Getting Allen Bauer's TMulticastEvent<T> working

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top