D
Hallo,
wollte nur mal ne einfachere Lösung presentieren als in der FAQ:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <shlobj.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//------------------------------------------------------------------------------
// Windows-Verzeichnisauswahl-Dialog anzeigen
AnsiString SelectFolderDialog(HWND handle, AnsiString titel, AnsiString pfad)
{
LPITEMIDLIST pidl;
BROWSEINFO info;
char szDir[MAX_PATH];
char szDisplayName[MAX_PATH];
LPMALLOC pShellMalloc;
if (SHGetMalloc(&pShellMalloc) == NO_ERROR)
{
memset(&info, 0x00, sizeof(info));
info.hwndOwner = handle;
info.pidlRoot = 0;
info.pszDisplayName = szDisplayName;
info.lpszTitle = titel.c_str();
info.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE ;
info.lParam = (int) pfad.c_str();
info.lpfn = 0;
//Verzeichnis anzeigen
pidl = SHBrowseForFolder(&info);
// Id in Pfad umwandeln
if (pidl)
SHGetPathFromIDList(pidl, szDir);
// aufräumen
pShellMalloc->Free(pidl);
pShellMalloc->Release();
return (AnsiString)szDir;
}
}
//------------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString folder = SelectFolderDialog(Form1->Handle,
"Bitte wählen sie den Speicherort",
"");
}
//---------------------------------------------------------------------------
Viel Spaß damit
Gruß Daniel