Delphi 2007を使用してファイルのディレクトリを表示するTShellListViewのパスを設定したいと思います。まず、TShellListView.Rootを使用して、これは、それは私がしたいディレクトリを示しています。TShellListViewのパス/フォルダを文字列として取得/設定します(.Rootを使用しない)
View := TShellListView.Create(Self);
// ...
View.Root := 'C:\Windows';
をしかし、ユーザーがバックスペースを使用して、そのディレクトリから移動し、私は元のディレクトリに.Rootを設定しようとした場合、表示されたディレクトリは変更されません。 .Rootは、現在のディレクトリではなく、シェル名前空間のルートを定義するためのものです。
また、ユーザーが(バックスペースなどを使用して)ナビゲートすると、.Rootプロパティは現在表示されているパスを反映して更新されません。 TShellTreeViewのような.Pathプロパティはありません。
私が欲しいのは、TShellListViewをTShellTreeViewにリンクしたり、TShellListViewの関連するメソッドがすべて非公開になっているので、TShellTreeView.PathまたはHack ShellCtrls.pasを設定する必要がなく、現在のパスを取得して文字列として設定する方法です。パスを取得/設定する簡単な方法がないと信じるのは難しいので、ここでは単純なものがないと思いますが、このコンポーネントはまったく文書化されていません。
スラッシュを追加/削除するための推奨される回避策はうまくいくようです。私は、デフォルトの場所の代わりに使用するTShellListView子孫に追加した新しいPathプロパティに、同様の回避コードを追加しました。 – Anagoge