一种 自已重做
一种 找到窗口的Handle再改变位置

解决方案 »

  1.   

    函数本身没有提供控制位置的参数,只有到vcl源代码中去找了,
    或者直接用shbrowserfolder这个api函数了
      

  2.   

    function SelectDirectory(handle:hwnd;const Caption: string; const Root: WideString;out Directory: string): Boolean;
    var
    lpbi:_browseinfo;
    buf:array [0..MAX_PATH] of char;
    id:ishellfolder;
    eaten,att:cardinal;
    rt:pitemidlist;
    initdir:pwidechar;
    begin
    result:=false;
    lpbi.hwndOwner:=handle;
    lpbi.lpfn:=nil;
    lpbi.lpszTitle:=pchar(caption);
    lpbi.ulFlags:=BIF_RETURNONLYFSDIRS+16;
    SHGetDesktopFolder(id);
    initdir:=pwchar(root);
    id.ParseDisplayName(0,nil,initdir,eaten,rt,att);
    lpbi.pidlRoot:=rt;
    getmem(lpbi.pszDisplayName,MAX_PATH);
    try
    result:=shgetpathfromidlist(shbrowseforfolder(lpbi),buf);
    except
    freemem(lpbi.pszDisplayName);
    end;
    if result then directory:=buf;
    end;
    必须
    uses ShellApi;
      

  3.   

    40Star(陪你去看--☆流星雨★) :
    不是uses ShellAPI,是ShlObj 
    用过Kingron写的这个函数,当时就因为没有找到这个单元无法编译。