uses
ShlObj;
function DlgElegirDirectorio(subtitulo: string;
nuevoEstilo: boolean) : string;
var
BI: TBrowseInfo;
IL: PItemIDList;
begin
Result := EmptyStr;
with BI do begin
lpfn:= nil;
lParam:= 0;
iImage:= 0;
pidlRoot:= nil;
hwndOwner:= GetActiveWindow;
lpszTitle:= PChar(subtitulo);
GetMem(pszDisplayName, MAX_PATH);
ulFlags := BIF_RETURNONLYFSDIRS;
if nuevoEstilo then
ulFlags := ulFlags or BIF_NEWDIALOGSTYLE;
end;
IL := SHBrowseForFolder(BI);
if SHGetPathFromIDList(IL, BI.pszDisplayName) then
Result := IncludeTrailingPathDelimiter(
StrPas(BI.pszDisplayName));
FreeMem(BI.pszDisplayName);
GlobalFreePtr(IL);
end;