获取/设置 TShellListView 路径/文件夹作为字符串(不使用 .Root)
我想设置 TShellListView 的路径以使用 Delphi 2007 显示文件目录。我最初可以使用 TShellListView.Root 来设置根路径,如下所示,它显示我想要的目录:
View := TShellListView.Create(Self);
// ...
View.Root := 'C:\Windows';
但是如果用户导航离开该目录使用退格键,我尝试将 .Root 设置回原始目录,显示的目录没有改变。 看起来 .Root 是为了定义 shell 命名空间的根,而不是当前目录。
此外,如果用户四处导航(使用退格键等),.Root 属性不会更新以反映当前显示的路径。 没有像 TShellTreeView 那样的 .Path 属性。
我想要的是一种获取和设置当前路径作为字符串的方法,而不需要将 TShellListView 链接到 TShellTreeView 并设置 TShellTreeView.Path 或破解 ShellCtrls.pas,因为 TShellListView 的相关方法看起来都是私有的。 我发现很难相信没有一种直接的方法来获取/设置路径,所以我假设我在这里遗漏了一些简单的东西,但这个组件根本没有记录。
I want to set the path for a TShellListView to display a directory of files using Delphi 2007. I can initially use TShellListView.Root to set the root path like this and it shows the directory I want:
View := TShellListView.Create(Self);
// ...
View.Root := 'C:\Windows';
But if the user navigates away from that directory using backspace and I try to set the .Root back to the original directory, the directory displayed does not change. It looks like .Root is meant to define the root of the shell namespace, not the current directory.
Also, if the user navigates around (using backspace, etc.) the .Root property does not update to reflect the currently displayed path. There is no .Path property like there is for TShellTreeView.
What I want is a way to get and set the current path as a string without being required to link the TShellListView to a TShellTreeView and set TShellTreeView.Path or hack ShellCtrls.pas since the relevant methods of TShellListView all look private. I find it hard to believe there isn't a straightforward way to get/set the path, so I assume I'm missing something simple here, but this component is not documented at all.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
获取当前加载的路径
您可以使用设置 Root 属性来 ,但当您以交互方式更改文件夹时,它不会更新。 所以你需要强迫它认为有变化。 如果您总是将其重置为相同的原始路径,则此方法有效:
或者,对于任意路径,您可以添加/删除尾随 \ 以欺骗 SetRoot 中的 SameText 检查:
You can get the currently loaded path using
Setting the Root property works, but it isn't updated when you change folders interactively. So you need to force it to think there's a change. This works if you're always resetting it to the same original path:
Alternatively, for arbitrary paths you could just add/remove the trailing \ in order to fool the SameText check in SetRoot:
要以字符串形式获取当前文件夹,您可以访问 RootFolder 属性。
要将当前文件夹设置为字符串,请使用 root-property。
To get the current folder as a string, you can access the RootFolder-property.
To set the current folder as a string, you use the root-property.