Pastas - procurando impressora e arquivos

Top  Previous  Next

/// Procurar em subpastas.

 

Uses ShlObj;

 

function GetFolder : String;

Var

  T  : Array [0..1024of Char;

  Bi : TBrowseInfo;

begin

  with BI do

    Begin

      hwndOwner       := Application.Handle;

      pidlRoot        := nil;

      pszDisplayName  := @T;

      lpszTitle       := 'Selecione a pasta';

      lpfn            := nil;

      iImage          := 0;

      ulFlags         := BIF_ReturnOnlyFSDirs; // Return Only File System Directories

    End;

 

  SHGetPathFromIDList (SHBrowseForFolder (BI), @T);

  Result := String (T);

end;

 

/////////////////////////////////////////////////////////////////////////////

// se desejar pesquisar por Pasta, arquivo ou impressora use esta versão:  //

/////////////////////////////////////////////////////////////////////////////

 

type

  TGetFolderTypes = (ppFolder, ppFile, ppPrinter);

 

function GetFolder(Tipo: TGetFolderTypes = ppFolder): string;

var

  T  : array [0..MAX_PATH] of Char;

  Bi : TBrowseInfo;

begin

  with BI do

  begin

    case Tipo of

      ppFolder : lpszTitle := 'Selecione uma pasta';

      ppFile   : lpszTitle := 'Selecione um arquivo';

      ppPrinter: lpszTitle := 'Selecione uma impressora';

    end;

    hwndOwner     := Application.Handle;

    pidlRoot      := nil;

    lpfn          := nil;

    pszDisplayName:= @T;

    iImage        := 0;

    case Tipo of

      ppFolder : ulFlags := BIF_RETURNONLYFSDIRS;

      ppFile   : ulFlags := BIF_BROWSEINCLUDEFILES;

      ppPrinter: ulFlags := BIF_BROWSEFORPRINTER;

    end;

  end;

  SHGetPathFromIDList (SHBrowseForFolder (BI), @T);

  Result := string(T);

end;