我记得有专门的选择路径的Windows公共创体,只是调用方法忘记了

解决方案 »

  1.   

      OpenDialog1.Execute ;
      Label1.Caption :=OpenDialog1.FileName ;
      

  2.   

    SHBrowerFolder好象是这样的一个API专门用来选择路径的@_@
      

  3.   

    SHBrowerForFolder + SHGetPathFromIDList.看看Windows的Shell资料吧,看这些都会是小Case.
      

  4.   

    如果不需要网上邻居,则用DriveListBox和DirectroyListBox可以解决问题,如果要能选择全部的,则用上面老兄说的 
    uses FileCtrl;
    var 
      dir: string;
     SelectDirectory(窗口标题, '桌面',dir  ) 
    然后dir中就是你选择的路径,
      

  5.   

    用SelectDirectory函数就可以,不信可以试
      

  6.   

    office 2000 中的保存和打开对话框在别的保程序中可以用吗,我看IE5.0也用那中对话框了。
      

  7.   

    看到sdk中的帮助,对common dlgs可以用hook的方法来改造的。不过我没研究过。
      

  8.   

    (一)第一种方法是用Delphi提供的组件(在Win 3.1面板上)模仿在上面看到的对话框自己组装一个“浏览文件夹”窗体。具体的做法是:
      1. 在你的Project里增加一个BorderStyle为bsDialog的新窗体;
      2.放置一个DirectoryListBox组件;
      3. 放置一个DriveComboBox组件,设置DirList为DirectoryListBox1;
      4.然后再放上两个Button。一个“确定”(ModalResult为mrOk),一个“取消”(ModalResult为mrCancel);
      5.最后只要在调用这个浏览文件夹的地方加上一下代码就算大功告成了:
      if Form2.ShowModal = mrOk then
      Memo1.Lines.Add(Form2.DirectoryListBox1.Directory);
      (二)第二种方法,在Delphi中可以通过调用SelectDirectory函数得到这种效果。
      SelectDirectory在Delphi 4中的申明如下(请注意,一共有两个重载的申明):
      type
      TSelectDirOpt = (sdAllowCreate, sdPerformCreate, sdPrompt);
      TSelectDirOpts = set of TSelectDirOpt;
      function SelectDirectory(var Directory: string;
      Options: TSelectDirOpts; HelpCtx: Longint): Boolean; overload;
      function SelectDirectory(const Caption: string; const Root:WideString; out Directory: string): Boolean; overload;
      第一种语法的Options参数指定了“浏览文件夹”对话框的一些选项;参数HelpCtx指定上下文敏感的Help ID;Directory初始化了对话框的值,并且携带返回值。
      第二种语法的Caption参数指定对话框标题(比如′请选择XXX的文件夹′);参数Root指定用来浏览的根目录;所选择文件夹返回在参数Directory中。
      不管是哪种语法,如果在对话框中选择了路径并按下“确定”按钮,SelectDirectory函数返回True;在其它情况下,函数SelectDirectory就返回False。
      (三)第三种方法是比较高明的解决方案。在Windows中已经有一个专门用来处理这种问题的ShellAPI函数——SHBrowseForFolder(事实上,第二种方法的第二种语法就是调用了这个API,这在Delphi的源代码中可以得到证实)。因为它是使用系统已有的API,这样就不会占用太多的系统资源,从而减小代码长度、提高程序运行速度,并且在Windows的不同语言版本中会自动的和Windows相适应。具体代码如下:
      var
      Info: TBrowseInfo;
      Dir: array[0..260] of char;
      ItemId: PItemIDList;
      begin
      with Info do
      begin
      hwndOwner := self.Handle;
      pidlRoot := nil;
      pszDisplayName := nil;
      lpszTitle := ′请选择XXX的文件夹′;
      ulFlags := 0;
      lpfn := nil;
      lParam := 0;
      iImage := 0;
      end;
      ItemId := SHBrowseForFolder(Info);
      if ItemId <> nil then
      begin
      SHGetPathFromIDList(ItemId, @Dir);
      Result := string(Dir);
      end
      else
      Result := ′′;
    end
      

  9.   

    用ExtractFileDir()函数取得目录的名称不就得了,忽略其选中的文件