來自我的另一個TFrame IDE註冊組件問題。感謝所有的幫助,同行的程序員。 :)TFrame繼承重構
與Darrian的TFRAME繼承建議here打圍:
具體細節:
基本上,我有,我已經註冊到IDE基於TFRAME成分,它已表現的很出色。我現在正在開發幾個「姐妹」組件,它們將共享大量現有組件的非視覺功能和屬性。因此,將大量元素轉移到新組件和舊組件可以繼承的父類/超類中是有道理的。
以這種方式「重構」TFrame繼承的最佳方式是什麼? (這也可能適用於TForm類的後代,不確定)。有什麼需要注意的事項和注意事項?
例子:
我試過了,例如,創建一個新的TFRAME,沒事就可以了,並調用框架TMyBaseFrame。然後修改我現有組件的類定義(我們稱之爲TMyFrameTreeView),以從中繼承而不是TFrame。
它編譯得很好,但是當我嘗試將它放在窗體上時,我得到「ClientHeight未找到」(或「ClientHeight property not found」),並且它不會放在窗體上。從相關的DFM中刪除ClientHeight和ClientWidth帶來了巨大的破壞,而且無論如何它們都會在調整大小後被替換。我注意到後代類中的ExplicitHeight和ExplicitWidth,並且認爲它涉及來自繼承值的屬性值覆蓋,但我不確定。通過New - > Inherited Items重新創建一個全新的框架,然後複製一切,還沒有產生很好的結果。
最後請注意
我意識到這可能會導致混亂很快,隨着流媒體DFM文件和後裔等多代....這就是爲什麼我問的整體「的東西的一部分尋找「的概念方面,但也給出了一個特定的現實世界簡單版本的問題以及(在我看來,應該是可行的)。
我已經創建了一個小測試包來學習嘗試,並且正在學習很多東西,但是它很慢,並且任何有關Delphi的「絕地大師」的指導/洞察將會最受讚賞。 :)
答案更新後:
的答案都低於都是有幫助的。同樣,創建一個「基本框架類」,它與正常的TFrame沒有任何變化,並且在添加任何屬性,方法等之前繼承它,似乎穩定了流傳的巨大繼承。不知道爲什麼,但到目前爲止。
看來到目前爲止,「TBaseFrame完全空」是避免許多小故障的關鍵。同時確保DFM文件在後面的課程中以「inhertied」而不是「object」開頭。也會考慮你的裝飾者的想法 - 謝謝你! – Jamo 2009-02-27 02:29:02