2009-05-25 5 views
0

これはおそらくVirtualShellToolsを知っている人にとっては非常に「ダム」な質問ですが、使い始めたばかりでデモのコードで答えを見つけることができませんでした。私もvirtualtreeviewに慣れていないことに注意してください。VirtualExplorerTreeview(VirtualShellTools)でデータを並べ替える方法

は、私は私がそれらを指し示すことができました

それらについて、選択したディレクトリ内のファイルの特定の種類だけでなく、特定の情報を表示するためにVirtualExplorerListviewにリンクされたディレクトリ構造を表示するVirtualExplorerTreeviewを使用します私が望むようにそれらをリンクし、リストビュー内のすべてをフィルタリングし、デモを見て自分の列を追加してカスタムデータを表示する方法についてかなり良いアイデアを持っています。

私の問題はツリービューにあります。私が望む順序で表示されているディレクトリを並べ替えることができます。具体的には、「My Docs」と他のフォルダが最初に表示されてから、ドライブ、リムーバブルメディアが表示されます。 TNamespaceプロパティを見て、それらを区別する方法(ディレクトリとリムーバブルプロパティ)を見つけましたが、自分のソートを実装する方法や必要なイベントはわかりません。私はCompareNodeを試みたが、それは呼び出されるようではない。

+0

この2番目の部分はソートとは完全に関連していません。仮想名前空間の追加については別の質問にするのが最適です。 –

+0

ええ、私はあなたが正しいと思う、私はそれを削除 – Lepidosteus

答えて

3

自分ですべてをやりたい場合はプロパティにtoUserSortと設定します。これにより、コントロールは仮想ツリービューから継承されたDoCompareメソッドを使用するだけで、OnCompareNodesイベントハンドラを呼び出す必要があります。

より良い方法は、カスタムを提供することです。TShellSortHelperそのクラスの子孫を作り、必要なメソッドをオーバーライドします。そのクラスのインスタンスを作成し、ツリーのSortHelperプロパティに割り当てます。 (ツリーはヘルパーの所有権を持ちますが、新しいものは解放しますが、古いものは解放します)。クラスが比較する方法がわからない列でアイテムがソートされている場合は、ツリーのOnCustomColumnCompareイベントを処理します。

オーバーライドする必要のあるメソッドまたは処理する必要があるイベントを正確に把握するために、TCustomVirtualExplorerTree.DoCompareにブレークポイントを設定し、さまざまな状況で何が呼び出されるかを確認します。

関連する問題