2009-10-18 73 views
0

如何在樹重建時恢復VirtualStringTree中的節點狀態(哪些已擴展)?Delphi,VirtualStringTree - 重建樹,恢復狀態(擴展節點)

我的應用程序使用VirtualStringTree(最好的組件之一!)。現在,我需要的是每次啓動應用程序時重建樹。但在大多數情況下,「新」樹與上次構建的樹相同......或者至少非常相似。什麼是恢復節點狀態的最佳方法?哪些是擴展的等等...... 我不覺得每次啓動應用程序時都要手動展開所有節點,所以我相信我的用戶。 不幸的是,由於隱私限制,我無法將實際的樹保存到文件中,然後加載它,並在重建時添加/刪除時比較現有節點...我需要其他方式,請...

回答

2

僅存儲樹的拓撲結構,例如每個級別的擴展節點索引。

或者,您可以爲某些不變節點值形成哈希列表,並僅爲該列表中的展開節點存儲哈希值。這樣,即使拓撲結構發生變化,您仍然可以保持狀態,但會降低隱私。

+0

存儲擴展節點的散列根本不會降低隱私,除非您試圖保持隱私的事情是某些節點已擴展的事實。爲了得到節點的散列,你必須已經有了用於計算散列的數據,如果你已經有了,那麼還有什麼可以隱藏的? –

+0

Rob,我認爲他指的是您希望「刷新」數據的情況,同時儘可能保持最佳拓撲結構。即使在兩個節點之間插入新節點,您也會希望重新打開打開的節點。因此你需要開放節點的「id」。 –