DELPHI - Как использовать opendialog1 для выбора папки?
Возможный дубликат:
Delphi: выбор каталога с помощью TOpenDialog
Мне нужно открыть определенную папку в моем проекте. Когда я использую opendialog1, я могу только открыть файл. Как насчет открытия папки?
PS: я использую Delphi 2010
3 ответа
Вы также можете использовать TBrowseForFolder
класс действий (stdActns.pas
):
var
dir: string;
begin
with TBrowseForFolder.Create(nil) do try
RootDir := 'C:\';
if Execute then
dir := Folder;
finally
Free;
end;
end;
или используйте функцию WinApi - SHBrowseForFolder
непосредственно (второй SelectDirectory
Перегрузка использует его, вместо первой перегрузки, которая создает собственное delphi-окно со всеми элементами управления во время выполнения):
var
dir : PChar;
bfi : TBrowseInfo;
pidl : PItemIDList;
begin
ZeroMemory(@bfi, sizeof(bfi));
pidl := SHBrowseForFolder(bfi);
if pidl <> nil then try
GetMem(dir, MAX_PATH + 1);
try
if SHGetPathFromIDList(pidl, dir) then begin
// use dir
end;
finally
FreeMem(dir);
end;
finally
CoTaskMemFree(pidl);
end;
end;
В Vista и выше вы можете показать более современный вид диалога, используя TFileOpenDialog
,
var
OpenDialog: TFileOpenDialog;
SelectedFolder: string;
.....
OpenDialog := TFileOpenDialog.Create(MainForm);
try
OpenDialog.Options := OpenDialog.Options + [fdoPickFolders];
if not OpenDialog.Execute then
Abort;
SelectedFolder := OpenDialog.FileName;
finally
OpenDialog.Free;
end;
который выглядит так:
Ты ищешь SelectDirectory
в FileCtrl
Блок. Имеет две перегруженные версии:
function SelectDirectory(var Directory: string;
Options: TSelectDirOpts; HelpCtx: Longint): Boolean;
function SelectDirectory(const Caption: string; const Root: WideString;
var Directory: string; Options: TSelectDirExtOpts; Parent: TWinControl): Boolean;
То, что вы хотите использовать, зависит от версии Delphi, которую вы используете, и от конкретного внешнего вида и функциональности, которые вы ищете; Я обычно нахожу, что вторая версия отлично работает для современных версий Delphi и Windows, и пользователи кажутся довольными "обычно ожидаемым внешним видом и функциональностью".