Autor Beitrag
xel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Sa 24.08.02 19:35 
Hi All,

also ich will mit einem OpenDialog oder SaveDialog einen Verzeichniss wählen und kein File (Datei)?

Wie mache ich das?

also es soll z.b. die "C:\Datenbank" im FileName speichern und nicht "C:\Datenbank\" (mit einem slesch am ende) die ich mit

verz := ExtractFilePath(verz); //nur das verzeichnis wird rausgenommen

erreiche.

wie mache ich das ?

Danke...
xel :oops:
Deykin11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Sa 24.08.02 20:57 
Hallo, ich kenne 2 Möglichkeiten (quellcode ist glaube ich noch aus dem alten Forum...)

Möglichkeit 1:
!!Die Unit FileCtrl einbinden!!
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);
var
  sDirectory : string;
begin
  SelectDirectory('Verzeichnis auswählen','C:\TEMP',sDirectory); 
  ShowMessage(sDirectory);
end;


oder
Möglichkeit 2:
!!Die Unit shlobj einbinden!!!
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
function TForm1.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;

procedure TForm.Button1Click(Sender: TObject);
var sDirectory : string;
begin
  sDirectory:= OpenFolder(CSIDL_DRIVES, 'Verzeichnis  wählen'); //Übergabe des gewählten Verzeichnisses
  Showmessage(sDirectory);
end;