如何将ShellTreeView的当前目录设置为你所指定的目录,我看过其他人发的一些帖子,都没有真正的解决这个问题,如果你有办法,请你跟我详细的讲讲!最好是简单一点的方法!

解决方案 »

  1.   

    后后,谢谢。。
    为免骗分的嫌疑,把刚才的回答再贴一遍:==================================================================
    设置shelltreeview的当前目录,当时我首先想到的办法就是直接用:
    ShellTreeView.Path:=xx;
    来做,可是当我把这段代码用到我的程序后出现访问错误,原因好像和我设置完路径后需要动态删除和建立一些控件有关。后来,我用发送消息的办法来解决了:
    procedure TBrowseForm.ComboBoxPathSelect(Sender: TObject);
    begin
      if Assigned(FFileTreeViewForm) then begin
        FFileTreeViewForm.ChangeFolder(ComboBoxPath.Text);
      end;
    end;
    //当在combox中选择一个路径后,设置treeview中的path为这个路径,接着,程序跑到这里:procedure TFileTreeViewForm.ChangeFolder(AFolderName:String);
    begin
      //*******************************************************************************
      //!!) i have to use a message instead of change the treeview's path directly,
      //cause that will cause some exception when the ThumbFileView remove controls.
      FNewFolderName:=AFolderName;
      PostMessage(Handle,WM_CHANGEFOLDER,0,0);
    end;
    //自定义的一个方法,它不直接改filetreeview的path,而是先记录欲设置的path,并发送消息。const
      WM_CHANGEFOLDER = WM_USER+501;type
      TFileTreeViewForm = class (TForm)
      private
        procedure OnWMChangeFolder(var Message:TMsg);message WM_CHANGEFOLDER;
      ....
      end;procedure TFileTreeViewForm.OnWMChangeFolder(var Message:TMsg);
    var
      FolderTmp:String;
    begin
      FolderTmp:=FNewFolderName;
      if (ExtractFileName(FolderTmp)='..') then begin
        FolderTmp:=Copy(FolderTmp,1,LastDelimiter('\',FolderTmp)-1);
        FolderTmp:=Copy(FolderTmp,1,LastDelimiter('\',FolderTmp));
      end;
      ShellTreeView.Path:=FolderTmp;
      if (ShellTreeView.Selected<>nil) then
        ShellTreeView.Selected.MakeVisible;
    end;
    //真正设置FileTreeView的path。这个不时什么好方法,应该有更可靠的方法吧,但是在我的程序里我就是这么干的,反正它能用了。另:to  vitamin99(狼口一只羊) 
    再开个贴给我加点分怎么样,我还差100多久升星了,帮我一把吧