我正在處理XE2中的某些組件。是否可以將組件的單元添加到它所放置的表單的使用條款中?我可以讓自定義的Delphi組件向uses子句添加多個單元嗎?
示例: 當我從包中創建並安裝單元CustomComponent的包中選擇了TCustomComponent時,它被添加到表單的uses子句中。我還想添加單位GlobalConstants。
有誰知道這是否可以做到?
我正在處理XE2中的某些組件。是否可以將組件的單元添加到它所放置的表單的使用條款中?我可以讓自定義的Delphi組件向uses子句添加多個單元嗎?
示例: 當我從包中創建並安裝單元CustomComponent的包中選擇了TCustomComponent時,它被添加到表單的uses子句中。我還想添加單位GlobalConstants。
有誰知道這是否可以做到?
爲你的組件創建一個設計時包(如果你還沒有的話)。在該包中,創建一個實現ISelectionEditor
接口的類(最簡單的方法是從TSelectionEditor
類派生),覆蓋其虛擬RequiresUnits()
方法,以報告任何您希望出現在任何Form/Frame/DataModule的uses
子句中的附加單元使用你的組件。然後,通過調用RegisterSelectionEditor()
(除了RegisterComponents()
),讓包的Register()
函數註冊該類。
Indy 10正是這一點爲它TIdTCPServer
,TIdCmdTCPClient
,並TIdUDPServer
組件,以確保IdContext
和IdSocketHandle
單位被添加到uses
條款。查看IdCoreSelectionEditors.pas
和IdRegisterCore.pas
單元,瞭解Indy如何實現這一點。
更新:所述IdCoreSelectionEditors.pas
和IdProtocolsSelectionEditors.pas
單位從印第10在2014年三月的所有每分量SelectionEditor類的除去與在IdRegisterCore
單元本身中實現的新的單一的類所取代。這個新的SelectionEditor類是爲所有Indy組件註冊的,它會查找所有在設計時放置的Indy組件的實例,使用所有參數的數據類型的RTTI和任何分配的事件處理程序的返回值來知道哪些報告要包括在uses
條款中的單元。