2011-07-22 53 views
4

是否存在Delphi的事件分派信號和插槽機制的實現?Delphi中的信號和插槽實現?

+0

非多點傳送事件處理是內置的。它只是需要附加組件的多點傳送部分。 –

+1

我在https://bitbucket.org/MX4399/multicast-events-using-generics – MX4399

回答

4

搜索多播事件。這裏有一些實現,例如

他們中的一些需要仿製藥,所以是d> 2009年只。

+0

上添加了建議方法的混合.TApplicationEvents也使用eventsink。 –

+0

@Downvoter:我曾嘗試將TApplicationEvents用於我自己的多播事件。不幸的是,它的設計大部分是不可重用的,就像大多數的VCL一樣。 : -/ –

2

雖然您可以自己實現多播事件,但它們並不直接受到語言支持,與C#和VB.NET不同。缺乏語言支持使得任何模仿多播事件的嘗試都相當笨拙。有趣的是,C++缺乏對信號和插槽的支持,Qt解決方案在編譯工具鏈中包含額外的過程,Meta Object Compiler。

+1

更重要的是,* VCL *和* IDE *不支持多播事件的任何實現,因此使用笨拙。這種語言可以用來實現很好的多播事件,甚至可以實現全面免註冊的「信號和插槽」事物(使用RTTI屬性)。使用運算符重載可以使C#語法幾乎工作。 –

0

我前段時間花了一些時間讓Allen Bauer的多播事件代碼工作。它有一些限制,但在我的代碼中運行良好。你可以看到代碼here

當然,它只適用於德爾福> 2009