Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frage zum OpenDialog (https://www.delphipraxis.net/12243-frage-zum-opendialog.html)

gerritlober 23. Nov 2003 18:26


Frage zum OpenDialog
 
Hallo,

ich kann ja in Delphi die OpenDialog-Komponente in mein Projekt
einbauen, weiß jemand, wie ich auch einen Verzeichnisbaum-Dialog
bekomme, bei dem ich nur ein Verzeichnis und keine Datei wählen kann?

CalganX 23. Nov 2003 18:29

Re: Frage zum OpenDialog
 
Hi,
[dp]Verzeichnis auswählen[/dp]

Chris

phlux 23. Nov 2003 18:33

Re: Frage zum OpenDialog
 
So ungefähr:

Delphi-Quellcode:
uses ActiveX;

const
  BIF_NEWDIALOGSTYLE = $0040;

function ChooseFolder(const Title: string): string;
var
  Path: array [0..MAX_PATH] of char;
  pidl: PItemIDList;
  bi: TBrowseInfo;
begin
  result := '';
  OleInitialize(nil);
  with bi do
  begin
    hwndOwner := Handle;
    pidlRoot := nil;
    pszDisplayName := Path;
    lpszTitle := PChar(Title);
    ulFlags := BIF_RETURNONLYFSDIRS or BIF_NEWDIALOGSTYLE;
    lpfn := nil;
    lParam := 0;
  end;
  pidl := ShBrowseForFolder(bi);
  if (pidl <> nil) and (SHGetPathFromIDList(pidl, path)) then
    result := path;
  OleUninitialize;
end;

//Aufgerufen wird dat dann mit:
procedure TMainForm.btnOpenPathClick(Sender: TObject);
var
  dir: String;

begin
  dir := ChooseFolder('Verzeichnis zum Speichern auswählen:');
  //Hier dann dir auswerten ne
end;
Das ist dann der normale Ordner öffnen Dialog jedoch erweitert mit "Neuer Ordner" (durch BIF_NEWDIALOGSTYLE = $0040; ) den Dialog findet man mittlerweile häufiger als den normalen Ordner Öffnen Dialog ;)

mfg das phlux :hi:

eddy 23. Nov 2003 22:12

Re: Frage zum OpenDialog
 
Hallo phlux,

wo kriege ich Handle (siehe Zeile: hwndOwner := Handle;) her?

mfg
eddy

scp 23. Nov 2003 22:18

Re: Frage zum OpenDialog
 
Nimm Form1.Handle oder mach einen zweiten Parameter:

Delphi-Quellcode:
function ChooseFolder(Handle : hwnd; const Title: string): string;

// ...

//Aufgerufen wird dat dann mit:
procedure TMainForm.btnOpenPathClick(Sender: TObject);
var
  dir: String;

begin
  dir := ChooseFolder(Handle, 'Verzeichnis zum Speichern auswählen:');
  //Hier dann dir auswerten ne
end;

phlux 24. Nov 2003 16:31

Re: Frage zum OpenDialog
 
Oder du fügst die Funktion in die private Sektion deiner Form ein, dann musst allerdings schreiben
Delphi-Quellcode:
function TForm1.ChooseFolder(const Title: string): string;
Dann musst du garnix mehr mit dem Handle ändern!

mfg phlux


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz