2009-05-25 41 views
0

這可能是一個非常「愚蠢」的問題對誰知道VirtualShellTools但我只是開始使用它,找不到我在演示代碼的答案。請注意,我也不熟悉virtualtreeview。如何,因爲我想在VirtualExplorerTreeview(VirtualShellTools)對數據進行排序

我用VirtualExplorerTreeview顯示目錄結構,具有VirtualExplorerListview鏈接以顯示他們某種類型的選擇目錄中的文件以及具體信息

我已經能夠指出他們在正確的位置,按照我的意願鏈接它們,在listview中過濾所有內容,然後查看演示,我對如何添加自己的列並繪製它以顯示自定義數據有個很好的想法。

我的問題出在樹視圖:我想在我想要的順序顯示的目錄進行排序;具體來說,我希望「我的文檔」和其他文件夾先出現,然後是驅動器,然後是可移動媒體。查看TNamespace屬性,我發現如何區分它們(目錄和可移動屬性),但我不知道如何實現我自己的排序/我需要什麼事件。我試過CompareNode,但似乎甚至沒有被調用。

+0

即第二部分是完全無關的排序。您最好將其移至有關添加虛擬名稱空間的單獨問題。 – 2009-05-25 19:30:10

回答

3

如果你想自己做的一切,然後在TVirtualExplorerTree.TreeOptions.VETMiscOptions屬性設置toUserSort。這會導致控件只使用從虛擬樹視圖繼承的DoCompare方法,並應該調用OnCompareNodes事件處理程序。

一個更好的辦法是提供一個自定義的TShellSortHelper。創建該類的後代並覆蓋您需要的任何方法。創建該類的一個實例並將其分配給樹的SortHelper屬性。 (樹需要助手的所有權;免費舊人,但不是新的。)如果項目被列上排序時該類不知道如何比較,然後處理該樹的OnCustomColumnCompare事件。

爲了幫助您找出需要覆蓋哪些方法或需要處理的事件,請在TCustomVirtualExplorerTree.DoCompare中設置一個斷點並逐步查看在各種情況下調用的內容。

相關問題