不是打开文件目录,是目录框,选择到目录即可,谢谢!

解决方案 »

  1.   

    SelectDirectory('请选择视频文件存放位置:','', 'c:\');
      

  2.   

    uses 
      shlobj,ActiveX; 
      var
       Form1: TForm1; 
       Path: string;   //起始路径implementation {$R *.DFM} function BrowseCallbackProc(hwnd: HWND;uMsg: UINT;lParam: Cardinal;lpData: Cardinal): integer; stdcall; 
    begin 
      if uMsg=BFFM_INITIALIZED then 
        result :=SendMessage(Hwnd,BFFM_SETSELECTION,Ord(TRUE),Longint(PChar(Path))) 
      else 
        result :=1 
    end; function SelDir(const Caption: string; const Root: WideString; out Directory: string): Boolean; 
    var 
      WindowList: Pointer; 
      BrowseInfo: TBrowseInfo; 
      Buffer: PChar; 
      RootItemIDList, ItemIDList: PItemIDList; 
      ShellMalloc: IMalloc; 
      IDesktopFolder: IShellFolder; 
      Eaten, Flags: LongWord; 
    begin 
      Result := False; 
      Directory := ''; 
      FillChar(BrowseInfo, SizeOf(BrowseInfo), 0); 
      if (ShGetMalloc(ShellMalloc) = S_OK) and (ShellMalloc <> nil) then 
      begin 
        Buffer := ShellMalloc.Alloc(MAX_PATH); 
        try 
          RootItemIDList := nil; 
          if Root <> '' then begin 
            SHGetDesktopFolder(IDesktopFolder); 
            IDesktopFolder.ParseDisplayName(Application.Handle, nil, POleStr(Root), Eaten,           RootItemIDList, Flags); 
          end; 
          with BrowseInfo do begin 
            hwndOwner := Application.Handle; 
            pidlRoot := RootItemIDList; 
            pszDisplayName := Buffer; 
            lpszTitle := PChar(Caption); 
            ulFlags := BIF_RETURNONLYFSDIRS; 
            lpfn :=@BrowseCallbackProc; 
            lParam :=BFFM_INITIALIZED; 
          end; 
          WindowList := DisableTaskWindows(0); 
          try 
            ItemIDList := ShBrowseForFolder(BrowseInfo); 
          finally 
            EnableTaskWindows(WindowList); 
          end; 
          Result := ItemIDList <> nil; 
          if Result then begin 
            ShGetPathFromIDList(ItemIDList, Buffer); 
            ShellMalloc.Free(ItemIDList); 
            Directory := Buffer; 
          end; 
        finally 
          ShellMalloc.Free(Buffer); 
        end; 
      end; 
    end; procedure TForm1.SpeedButton1Click(Sender: TObject); 
    var 
      Path1: string; 
    begin 
      Path :=Edit1.Text; 
      SelDir('SelectDirectory Sample','d:\temp',Path1); 
      Edit1.Text :=Path1 
    end;