我已經開始在Delphi XE中使用TCollection類,並且我在Using TOwnedCollection descendant in Delphi找到答案是一個很好的起點。 TCollection管理一個TCollectionItems列表。但是我注意到TCollection.Add似乎並沒有將TCollectionItem添加到Collections數組,實際上我的測試似乎證實了這一點。在TCollection本身的代碼是:TCollection.Add實際添加?
function TCollection.Add: TCollectionItem;
begin
Result := FItemClass.Create(Self);
Added(Result);
end;
FItemClass是將要創建的對象類型,我想加入到TCollection對象。 Added()方法已被棄用,並且似乎是舊的通知方法。我沒有看到結果被添加到集合中。應該如何將TCollectionItem添加到TCollection?
是不是TCollection是抽象類?也許後代會重寫其中的一個方法。只是一個想法 – DavidG
通過源代碼看後,我有一個部分回答上述問題。創建TCollectionItem的行爲在TCollection對象中創建一個條目,因爲Collection對象被傳遞給CollectionItem構造函數。我忘記調用構造函數中的繼承方法,因爲繼承方法反過來調用setCollection,它實際添加。但是,我仍然不完全確定爲什麼添加稱爲添加。 – rhody