使用ShellListView可以在单击、双击等事件中得到选中的item下所有item的数目和路径,如下面代码。但是用ShellTreeView不用ShellListView的话应该怎么做呢?  for i:=1 to ShellListView1.Items.Count do
  begin 
     aFile:=ShellListView1.Folders[i-1].PathName;
     memo1.Text:='';
     memo1.Text:=memo1.Text+aFile;
  end;

解决方案 »

  1.   

    tv:TShellListView;procedure TForm1.tvClick(Sender: TObject);
    var i:integer;
    begin
      memo1.Clear;
      for i:=0 to tv.Selected.Parent.Count-1 do
        memo1.Lines.Add(ExtractFilePath(tv.Path)+tv.Selected.Parent.Item[i].Text);
    end;
      

  2.   

    ShellTreeView应该没有这样的属性,问题应该归结为获得一条路径后,怎样用函数再取得下面的子目录、文件名
      

  3.   

    to ly_liuyang(Liu Yang):
    ShellListView1没有Parent和Path属性啊?
      

  4.   

    不好意思搞错了是tv:TShellTreeView;
      

  5.   

    to ly_liuyang(Liu Yang):
    你的方法不是获取选定目录下面的子目录、文件,二是获取同级的,可以在该改吗?
      

  6.   

    这样就可以了,哈哈
    var aFile,root:string;
    begin
    root:=shelltreeview1.root;
    shelltreeview1.root:=ShellTreeView.SelectedFolder.Path;
    shelltreeview1.ObjectTypes:=[otFolders,otNonFolders,otHidden];
    shelltreeview1.fullExpand; 
    for i:=1 to ShelltreeView1.Items.Count do
      begin 
         aFile:=ShellListView1.Folders[i].PathName;
         memo1.Text:='';
         memo1.Text:=memo1.Text+aFile;
      end;
    shelltreeview1.root:=root;
    end;
      

  7.   

    这句应该是for i:=1 to ShelltreeView1.Items.Count-1 do
      

  8.   

    同意: ly_liuyang(Liu Yang) 
    有问题请发信息到我的E-mail:[email protected]
      

  9.   

    对不起,刚才的方法没经过测试
    下面是我在DLPHI6下刚刚调试过的:
    var aFile:string;
        i:integer;
        STview:TShelltreeview;
    begin
    STview:=Tshelltreeview.CreateParented(self.Handle);
    memo1.Clear;
    STview.root:=ShellTreeView1.SelectedFolder.PathName;
    STview.ObjectTypes:=[otFolders,otNonFolders,otHidden];
    STview.fullExpand;
    for i:=1 to STview.Items.Count-1 do
      begin
         aFile:=STview.Folders[i].PathName;
         memo1.Lines.Add(aFile);
      end;
    STview.Free;
    end;
    MEMO1中显示的结果是各文件夹和文件的路径(包括子文件夹)