Bonjour,

J'utilise cette fonction à la place de SelectDirectory.
Mettre ShlObj, ActiveX; dans les uses

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Function Browse : String;
var
  BrowseInfo  : TBrowseInfo;
  PIDL        : PItemIDList;
  Folder      : array[0..MAX_PATH] of Char;
begin
  result := '';
  FillChar(BrowseInfo,SizeOf(BrowseInfo),#0);
  BrowseInfo.hwndOwner      := Application.Handle;
  BrowseInfo.pszDisplayName := @Folder[0];
  BrowseInfo.lpszTitle      := 'Selectionné ou créer un dossier';
 
  BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS or $40;
  CoInitialize(NIL);
 
  PIDL := SHBrowseForFolder(BrowseInfo);
  if Assigned(PIDL) then
    if SHGetPathFromIDList(PIDL, folder) then
      result := folder
    else
      result := '';
end;
Je l'utilise comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
procedure TForm1.Button2Click(Sender: TObject);
begin
  if Browse = '' then Showmessage('dossier non valid');
end;

Comment je peux savoir si l'utilisateur a cliqué sur annuler ou OK ?

Merci.