How to display the browse folder dialog

xiaoxiao2021-03-06  40

Function getFolder (AROOT: Integer; Acaption: String): String;

VAR

PPROGRAMS, PBROWSE: PITEMIDLIST

HBROWSEINFO: TBROWSEINFO;

HPCHAR: PCHAR;

Begin

IF (NOT SUCCEEDED (SHGETSPECIALFOLDERLOCATION (GetActiveWindow, Aroot, Pprograms)).

EXIT;

Hpchar: = stralloc (max_path);

With hbrowseinfo do

Begin

Hwndowner: = getActiveWindow;

PIDLROOT: = PPROGRAMS;

PszdisplayName: = hpchar;

Lpsztitle: = pchar (acAption);

Ulflags: = Bif_Returnonlyfsdirs;

LPFN: = NIL;

LPARAM: = 0;

END;

PBROWSE: = shbrowseForfolder (HBrowseInfo);

IF (PBROWSE <> NIL) THEN

IF (SHGETPATHFROMIDLIST (PBROWSE, HPCHAR)) THEN

Result: = hpchar;

STRDispose (hpchar);

END;

// Call this function

VAR

Strfolder: string;

Begin

Strfolder: = getFolder (CSIDL_DRIVES, 'SELECT Folder');

ShowMessage (Strfolder);

END;

转载请注明原文地址:https://www.9cbs.com/read-85905.html

New Post(0)