Update: Don’t ever use TBrowseForFolder! It looks bad and it is feature-poor. Use this: Delphi: Select Directory (TFileOpenDialog)
Wrong way: (If user clicks CANCEL, it still accepts the value)
var
MyBrowse: TBrowseForFolder;
begin
MyBrowse:=TBrowseForFolder.Create(nil);
try
MyBrowse.BrowseOptionsEx:=[bifeAllowMultiselect];
MyBrowse.Caption:='Select folder:';
MyBrowse.Folder:=lastfolder;
if MyBrowse.Execute then
begin
if trim(MyBrowse.Folder)<>'' then
begin
lastfolder:=MyBrowse.Folder;
ListBox1.Items.Add(MyBrowse.Folder);
end;
end;
finally
MyBrowse.Free;
end;
end;
Correct way:
procedure TForm1.Button1Click(Sender: TObject);
begin
MyBrowse:=TBrowseForFolder.Create(nil);
try
MyBrowse.BrowseOptionsEx:=[bifeAllowMultiselect];
MyBrowse.Caption:='Select folder:';
MyBrowse.Folder:=lastfolder;
MyBrowse.OnAccept:=BrowseForFolderOnAccept;
MyBrowse.Execute;
finally
MyBrowse.Free;
end;
end;
procedure TForm1.BrowseForFolderOnAccept(Sender: TObject);
begin
if trim(MyBrowse.Folder)<>'' then
begin
lastfolder:=MyBrowse.Folder;
ListBox1.Items.Add(MyBrowse.Folder);
end;
end;
Uses Vcl.StdActns