一直使用經(jīng)典版本的選擇文件夾對(duì)話(huà)框

文章插圖
代碼如下:
function SelectDirectory(const Caption: string; const Root: WideString; var Directory: string): Boolean;
var
WindowList: Pointer;
BrowseInfo: TBrowseInfo;
Buffer: PChar;
OldErrorMode: Cardinal;
RootItemIDList, ItemIDList: PItemIDList;
【Delphi11 使用windows新版的文件夾選擇對(duì)話(huà)框】ShellMalloc: IMalloc;
IDesktopFolder: IShellFolder;
Eaten, Flags: LongWord;
begin
Result := False;
if not DirectoryExists(Directory) then
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 or BIF_NEWDIALOGSTYLE;
if Directory <> ” then
begin
lpfn := SelectDirCB;
lParam := Integer(PChar(Directory));
end;
end;
WindowList := DisableTaskWindows(0);
OldErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS);
try
ItemIDList := ShBrowseForFolder(BrowseInfo);
finally
SetErrorMode(OldErrorMode);
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;
說(shuō)實(shí)話(huà)該對(duì)話(huà)框應(yīng)該被淘汰了,最新的文件夾選擇對(duì)話(huà)框代碼量少,用戶(hù)界面也非常友好 。

文章插圖
代碼如下:
with TFileOpenDialog.Create(nil) do
try
Options := [fdoPickFolders];
if Execute then
begin
showmessage(filename);
end;
finally
Free;
end;
做個(gè)筆記以防忘記 。
- 每個(gè)開(kāi)發(fā)人員都應(yīng)該知道的 Unix/Linux 命令組合,使用他們節(jié)省時(shí)間
- new bing 最新訪(fǎng)問(wèn)方式,使用命令行訪(fǎng)問(wèn),不需要魔法
- 照片壓縮軟件免費(fèi)版怎么使用?照片壓縮方法分享
- 生根粉的5個(gè)正確使用方法 ?生根劑的作用和使用方法
- 制作書(shū)單視頻的免費(fèi)軟件的使用方法,先收藏一下
- 絕對(duì)不能不會(huì)的4個(gè)Excel實(shí)用公式,每一個(gè)公式的使用率都高達(dá)95%
- 這7款裝機(jī)必備的Windows軟件,我敢說(shuō),個(gè)個(gè)都是精品中的精品!
- 借同事電腦怕文件泄露?這兩個(gè)加密文件的小妙招,建議收藏使用!
- 警惕教條化使用離婚冷靜期 ?女方出軌離婚需要冷靜期嗎
- 10個(gè)CAD常見(jiàn)技巧,特別管用
