Don't let the code scare you, because it uses some exotic types of variables and the Windows API-function SHBrowseForFolder... just copy it and use it. Like all the other code on DelphiLand, it has been fully tested :) function BrowseForFolder(var Foldr: string; Title: string): Boolean;
var
BrowseInfo: TBrowseInfo;
ItemIDList: PItemIDList;
DisplayName: array[0..MAX_PATH] of Char;
begin
Result := False;
FillChar(BrowseInfo, SizeOf(BrowseInfo), #0);
with BrowseInfo do begin
hwndOwner := Application.Handle;
pszDisplayName := @DisplayName[0];
lpszTitle := PChar(Title);
ulFlags := BIF_RETURNONLYFSDIRS;
end;
ItemIDList := SHBrowseForFolder(BrowseInfo);
if Assigned(ItemIDList) then
if SHGetPathFromIDList(ItemIDList, DisplayName) then begin
Foldr := DisplayName;
Result := True;
end;
end;
IMPORTANT: the function above will only work if you add SHLOBJ to the uses-directive
in your unit. For example, if it is: change it to:
|
|
How to use the function? Here's an example: let the user browse for a folder and display it in the label Label1; if no folder was selected, we display "Nothing was selected".
procedure TForm1.Button1Click(Sender: TObject);
var
Foldr: string;
begin
if BrowseForFolder(Foldr, 'Select a folder') then
Label1.Caption := Foldr
else
Label1.Caption := 'Nothing was selected';
end;
| Crash Course Delphi | Become member of the DelphiLand Club and get our Crash Course Delphi, plus the fully commented source code of numerous projects, plus guaranteed answers from our Q/A Forum. Membership is for life! |
TOP DelphiLand
Club Membership DC Library Forum Forum
Archives
Crash Course Delphi TURBO
Delphi Explorer FAQ Tips Source
Code Downloads Links
© Copyright 1999-2006
Studiebureau Festraets