嗨我正在開發一個TControl後代,讓它命名爲THTMLBaseControl,在運行時,控件只會根據該控件的設置生成並輸出HTML代碼,所以基本TControl類和方法的所有其他屬性,包括Windows消息系統在運行時並未使用,並導致內存開銷。如何在Delphi中在運行時更改繼承類的父類?
我需要控制從TControl繼承,所以在設計時我可以使用所有IDE設計器的東西。
但是在運行時,幾乎所有那些在設計時需要的屬性我都不需要它們。
我也擁有從THTMLBaseControl繼承的所有控件,因此,爲每個控件類創建包裝類不是一種選擇,因爲它會重複代碼。
所以我需要的是,在運行時,類實例化之前,我可以更改父類,以便基於另一個TControl類的實例化,也許命名爲TonBaseControl作爲TControl從「TComponent」繼承,但那不會有TControl內存的所有開銷,並且只會擁有THTMLBaseControl所需的屬性和方法。
我真的沒有在rutime的GUI是一個Web服務器,將只提供HTML,是intraweb和Raudus做的一些事情,但總是問題是所有都基於TControl,所以他們必須創建在運行時間併產生很多未使用的內存和進程開銷。也許可以有一個解決方案,所以在運行時實例化的任何THTMlBaseControl後代將繼承TmyBaseControl的所有屬性和方法,而不是從TControl中繼承。
我見過有辦法破解VMT,但也許有其他解決方案,並沒有看到它。我已經完成了更改NewInstance,ClassParent和TnstanceSize類的方法,但是我必須指定從哪個類中顯然我必須對每個繼承的THTMLBaseControl類執行相同的步驟
並且爲了所有: 這只是一個懷疑,我需要將組件作爲TEdit,TPanel等控件進行控制,並且可以通過設計器IDE進行編輯,我甚至可以創建自己的TControl類,但是我只是在考慮是否可以重用已存在的代碼。
Regards
即使可能,您提出的問題並不是解決問題的方法。你主要擔心的是開銷?你有多少個這個對象的實例?你知道'TComponent'後代的特性出現在設計師身上嗎? –
爲什麼要使用TCustomControl,@Lightbulb? TCustomControl與TConrol相同,只是它有* more *東西,特別是一個窗口句柄和一個畫布。 –
這真的是錯誤的。沒有足夠的細節可以說,你是否考慮過一個THTMLControlConfigComponent設計時間behehaviour,然後根據它的設置實例化你的控件? –