beim ersten brauchst du einen einfachen OpenDialog (bei "Dialoge" zu finden).
Delphi-Quellcode:
if OpenDialog1.Execute then
edit1.text := OpenDialog1.FileName;
für das zweite empfehle ich die Funktion:
Delphi-Quellcode:
uses ShellAPI, ShlObj;
// ...
function OpenFolder(root: Integer; Caption: string): string; //Verzeichnis-Öffnen-Dialog-Funktion
var
bi: TBrowseInfo;
lpBuffer: PChar;
pidlPrograms, pidlBrowse: PItemIDList;
begin
if (not SUCCEEDED(SHGetSpecialFolderLocation(GetActiveWindow, root,
pidlPrograms))) then
exit;
lpBuffer := StrAlloc(MAX_PATH);
bi.hwndOwner := GetActiveWindow;
bi.pidlRoot := pidlPrograms;
bi.pszDisplayName := lpBuffer;
bi.lpszTitle := PChar(Caption);
bi.ulFlags := BIF_RETURNONLYFSDIRS;
bi.lpfn := nil;
bi.lParam := 0;
pidlBrowse := SHBrowseForFolder(bi);
if (pidlBrowse <> nil) then
if SHGetPathFromIDList(pidlBrowse, lpBuffer) then
Result := lpBuffer;
StrDispose(lpBuffer);
end;
Aufruf dann:
edit2.text := OpenFolder(CSIDL_DRIVES, 'Ordner öffnen');
Um sicherzustellen, dass Edit2 nur Pfade enthält, könntest du die spätere mit Ausgabe mit
ExtractFilePath bearbeiten oder das Edit2 Read-Only machen, und Eingaben nur mittels Dialog ermöglichen.
mfG
mirage228
David F.