Einzelnen Beitrag anzeigen

DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

SHBrowseForFolder / NonVCL SelectDirectory - OK/Abbrechen abfangen

  Alt 2. Mär 2021, 08:36
Hat sich erledigt ich hab nicht richtig hingeguckt. Wenn man den Dialog abbricht, wird '' zurückgegeben.
Wie kann man bei diesem Code, der einen "Ordner auswählen"-Dialog anzeigt, prüfen, ob man auf OK oder Abbrechen geklickt hat?

Delphi-Quellcode:
class function BrowseForFolder(const browseTitle: string; const initialFolder: string = ''; const appHWND: THandle = 0; mayCreateNewFolder: Boolean = False): string;
var
 browse_info: TBrowseInfo;
 folder: array [0 .. MAX_PATH] of char;
 find_context: PItemIDList;
begin
 FillChar(browse_info, SizeOf(browse_info), #0);
 lg_StartFolder := initialFolder;
 browse_info.pszDisplayName := @folder[0];
 browse_info.lpszTitle := PChar(browseTitle);
 browse_info.ulFlags := BIF_RETURNONLYFSDIRS or BIF_NEWDIALOGSTYLE;
 if not mayCreateNewFolder then
  browse_info.ulFlags := browse_info.ulFlags or BIF_NONEWFOLDERBUTTON;

 browse_info.hwndOwner := appHWND;
 if initialFolder <> 'then
  browse_info.lpfn := BrowseForFolderCallBack;
 find_context := SHBrowseForFolder(browse_info);
 if Assigned(find_context) then
  begin
   if SHGetPathFromIDList(find_context, folder) then
    Result := IncludeTrailingBackslash(folder)
   else
    Result := '';
   GlobalFreePtr(find_context);
  end
 else
  Result := '';
end;

Geändert von DieDolly ( 2. Mär 2021 um 09:20 Uhr)
  Mit Zitat antworten Zitat