如何在TShellListView中提取所选文件的名称?

时间:2012-01-28 18:06:57

标签: delphi filenames

我做了一个很好的搜索,看看是否有其他人问过这个问题,似乎没有。我觉得这很奇怪,因为从TShellTreeView.Path中提取路径很容易,你得到了完全限定的路径。

然而,我尽可能努力地在编辑器中查看类本身的所有属性和方法 - 没有文档 - 以及我可以找到的唯一可能的字符串属性,其中tlistitems的标题,结果是空白。 “选定”属性也是空白。

所以问题很简单,我如何提取在TShellListView组件中选择的任何文件或文件的名称。此外,我确实有四个Shell组件链接和工作,您可以选择一个驱动器,浏览目录结构,选择一个掩码并浏览到您想要的文件。

TIA

安德鲁

1 个答案:

答案 0 :(得分:7)

如果您没有激活MultiSelect属性,请检查SelectedFolder.PathName属性,否则您可以迭代这些项并检查Selected属性。

试试这个

function GetSelectedFiles(ShellListView : TShellListView) : TStringList;
var
  Index : Integer;
begin
  Result:=TStringList.Create;
  if not ShellListView.MultiSelect then
    Result.Add(ShellListView.SelectedFolder.PathName)
  else
  for Index := 0 to ShellListView.Items.Count-1 do
    if ShellListView.Items[Index].Selected AND (not ShellListView.Folders[Index].IsFolder) then
      Result.Add(ShellListView.Folders[Index].PathName);
end;