我正在編寫一個在對接面板上使用TTreeView的delphi 2009應用程序。問題在delphi中繼承TTreeNode
我看到我能做出重大簡化在我的應用程序,如果我子類的TTreeNode。它所在的樹形視圖放置在對接面板上。
TInfoTreeNode=class(TTreeNode)
private
// remember some stuff
public
end;
procedure TfraInfoTree.tvInfoCreateNodeClass(Sender: TCustomTreeView;
var NodeClass: TTreeNodeClass);
begin
NodeClass:=TInfoTreeNode;
end;
我想我碰了壁,但...每一個「TInfoTreeNode」實例都需要記住自己的事情。由於當包含TTreeView自動隱藏的面板釋放句柄時,類將被銷燬。
這是一個問題,因爲然後所有的類知道然後被遺忘。
有沒有解決的辦法(不是從數據庫中重裝每TInfoTreeNode等再次)?
謝謝!
那類沒有'Tag'財產。也許你正在想'Data'屬性。 – 2009-12-03 02:32:27
是啊,嗯,這是因爲我做了一些東西,德爾福已經有一段時間。我的記憶完全可能會讓我失望! – Bevan 2009-12-03 05:10:49
+1,很好的答案。國際海事組織的數據結構一定要存在於其他地方,和樹應該只引用它(不要緊,無論通過指針或手柄,像列表索引),使對象所有權更清晰,並能夠正確呈現脫鉤的數據。 – mghie 2009-12-03 07:09:12