2013-04-16 70 views
1

Windows平臺上的Delphi RAD Studio 2010:創建一個全局框架?

請原諒我的無知,並隨時告訴我,如果我吠叫錯誤的樹。

我只需要知道我的想法是否會在原則上工作?

我想在我的項目中創建框架'A'。無論何時初始化,幀「A」都會填充VirtualTree。我也有很多將使用框架'A'的形式。

我希望能夠創建框架'A'並在項目加載時在內存中進行初始化。 然後,當調用任何使用框架'A'的表單時,我希望能夠通過指針(或其他方式?)將「框架A」傳遞給該表單,並「替換」現有的框架與框架'A'完全形成。 (沒有擔心放置等)。

我的推理是Frame'A'在初始化時總是會做同樣的事情。由於這個init可能需要很長時間,比如說'x',所以使用這個幀的每個表單將會花費'x'時間來加載結果。 如果該框架是預先填充的,那麼這將節省大量時間,特別是如果frame init創建大小相當的VirtualTree時。

我希望我有道理。任何投入,將不勝感激的人誰可能已嘗試類似於此之前的東西...

Coenraad

+0

這可能對您無效。這意味着當一個表單改變樹形結構(展開一個節點,滾動條或其他)時,它也會改變該樹的所有其他視圖。 (但是VirtualTree永遠不需要很長的時間來加載,你只需要在你需要的時候加載你需要的數據,而且你不可能立即需要100%的數據,如果你這樣使用它,你'做錯了。:-) –

回答

0

我有類似的東西,但使用普通TTreeView,而不是虛擬樹。如果您的問題是加載數據而不是樹本身的時間,那麼只需獲取該數據的副本。在我的情況下,我加載了一個CachedData類中的樹視圖,它完成了我所有的初始化。然後創建一個新的形式,當我剛分配.Items(TTreeNodes)是這樣的:

CurrentTree.Items.Assign(CachedData.TreeView.Items); 

當使用虛擬樹還有就是你的數據和樹節點,所以有很多不同的方式有着明顯的區別分享底層數據。根據數據的格式,您可以直接使用它或將其複製到新表單中。

一般而言,您描述的方法類型是可行的和有用的。如果你描述你的初始化代碼在做什麼,你正在加載什麼類型的數據結構(數據集,字符串列表,數組,自定義對象等),你可能會得到更具體的答案。