Vous pouvez également utiliser TBrowseForFolder
classe d'action (stdActns.pas
):.
var
dir: string;
begin
with TBrowseForFolder.Create(nil) do try
RootDir := 'C:\';
if Execute then
dir := Folder;
finally
Free;
end;
end;
ou utiliser la fonction winapi - SHBrowseForFolder
directement (deuxième SelectDirectory
surcharge utilise, au lieu de la première surcharge, ce qui crée propre delphi-fenêtre avec tous les contrôles lors de l'exécution):
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;
Réponse de Ken (le seul à ce jour) est grande, mais cela semble être un dup de: http://stackoverflow.com/questions/ 7422689/delphi-selection-a-directory-with-topendialog – Argalatyr
En fait, vous pouvez utiliser le descendant 'TOpenDialog' -' TSaveDialog' (ouais, c'est assez rapide et sale) – OnTheFly
A voté pour fermer, mais il me manquera ["La réponse de Teran"] (http://stackoverflow.com/a/9529154/960757) là. – TLama