AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

SelectDirectory

Ein Thema von Walter Landwehr · begonnen am 13. Apr 2018 · letzter Beitrag vom 14. Apr 2018
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#1

AW: SelectDirectory

  Alt 13. Apr 2018, 20:17
Lasst doch bitte das uralte SelectDirectory links liegen und verwendet TFileOpenDialog mit fdoPickFolders. (bzw. siehe Kapselungen ala dem SelDir von da oben)
Den der alte Dialog ist absolut nicht benutzerfreundlich und dazu auch noch hässlich.

Einzig und allein das SelectDirectory mit dem Directories:TArray<string> wäre brauchbar, denn das nutzt oben genannten Dialog.

Zitat:
Wenn ich SelectDirectory() aufrufe mit einem Start-Verzeichniss als Parameter
Ich seh alles.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (13. Apr 2018 um 20:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: SelectDirectory

  Alt 13. Apr 2018, 20:31
Ja ich hatte auch probiert die andere SelectDirectory() Methode zu verwenden aber bin nicht dahintergekommen wie ich den korrekt Aufrufe, könntest Du so lieb sein ein Beispiel dafür geben?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#3

AW: SelectDirectory

  Alt 13. Apr 2018, 20:53
Ich nutze ein eigenes TFileOpenDialog mit fdoPickFolders, quasi in einer etwas aufgemotzteren Version dieses SelDir.

Aber ein Blick in das Code Insight oder in die OH und schon kommt sowas bei raus, als Minimalbeispiel.
Delphi-Quellcode:
var
  A: TArray<string>;
begin
  //if SelectDirectory('', A) then
  //if SelectDirectory('D:\', A) then
  if SelectDirectory('D:\', A, [sdAllowMultiselect], 'Der Titel', 'Ein Label', 'Der Button') then
    ShowMessage(string.Join(sLineBreak, A)); // bei nur einem reicht A[0]

  if FileOpenDialog1.Execute then // mit fdoPickFolders und sdAllowMultiselect
    ShowMessage(FileOpenDialog1.Files.Text); // FileOpenDialog1.FileName
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (13. Apr 2018 um 21:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: SelectDirectory

  Alt 13. Apr 2018, 20:56
Vielen Dank, teste ich gleich mal aus und "upgrade" den OldSchool Dialog.
Ps: Ich vermute ein "TArray<string>;" weil damit auch Multiple-Sachen selektiert werden können.

edit
Nun weiß ich warum mein voriger Versuch immer fehlschlug, da gibt es ja ein anderes Option-Set
Gruß vom KodeZwerg

Geändert von KodeZwerg (13. Apr 2018 um 21:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#5

AW: SelectDirectory

  Alt 13. Apr 2018, 20:59
War'n kleiner Copy&Paste-Error drin.

PS: Bei den neuen Open-/SaveDialogs kann man eine GUID angeben, damit speichert Windows das zuletzt ausgewählte Verzeichnis.
Wird wieder ein Dialog mit dieser GUID aufgerufen, dann wird InitialDir ignoriert und das letzte Verzeichnis geladen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (13. Apr 2018 um 21:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: SelectDirectory

  Alt 13. Apr 2018, 21:49
SelDir() Update

Delphi-Quellcode:
function SelDir ( StartPath : String; var SelectedDir : String ) : Boolean;
var
 tmp : TArray<string>;
begin
  Result := False;
  if Win32MajorVersion >= 6 then
  with TFileOpenDialog.Create(nil) do
    try
      Title := 'Select Directory';
      Options := [fdoPickFolders, fdoPathMustExist, fdoForceFileSystem];
      OkButtonLabel := 'Select';
      DefaultFolder := StartPath;
      FileName := StartPath;
      if Execute then
      begin
        SelectedDir := FileName;
        Result := True;
      end;
    finally
      Free;
    end
    else
// Mögliche Options: sdHidePinnedPlaces, sdNoDereferenceLinks, sdForceShowHidden, sdAllowMultiselect
     if SelectDirectory(StartPath, tmp, [sdForceShowHidden], 'Select Directory', 'Foldername:', 'Select')
// BACKUP - hier noch der Aufruf für den kleinen Dialog
// Mögliche Options: sdNewFolder, sdShowEdit, sdShowShares, sdNewUI, sdShowFiles, sdValidateDir
// mit Option sdShowFiles wird aus dem auch ein Datei-Selektor
// if SelectDirectory('Select Directory', ExtractFileDrive(StartPath), StartPath,
// [sdNewFolder, sdShowEdit, sdShowShares, sdNewUI, sdValidateDir])
     then begin
       SelectedDir := tmp[0]; // Achtung, hier wird nur der erste Eintrag genommen! Also so nicht "sdAllowMultiselect" fähig
// SelectedDir := StartPath; // BACKUP - für den alten Dialog
       Result := True;
     end;
end;


// Beispiel Aufruf:
procedure TForm2.Button1Click(Sender: TObject);
var
  s : String;
begin
 if SelDir('C:\Tools\',S) then ShowMessage(s);
end;
Dank gilt himitsu für's Zeit nehmen und Erklären und das bei mir endlich der Groschen gefallen ist warum ich's Anfang nicht hinbekam, es gibt zwei Unterschiedliche Option-Sets, muss man auch erstmal draufkommen

Nun sehen Dialoge unter XP und Vista sogut wie gleich aus, beide Verhalten sich relativ identisch.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Walter Landwehr

Registriert seit: 28. Mär 2006
Ort: 32816 Schieder-Schwalenberg
405 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: SelectDirectory

  Alt 14. Apr 2018, 09:17
Das sieht zwar sehr schön aus, aber mir fehlen immer noch die verbundenen Laufwerke. (siehe Anhang) Für den Anwender ist es einfacher, wenn diese sichtbar sind, als über das Netzwerk diese zu suchen was die meisten nicht mal verstehen.
Gibt's da noch einen Trick?

Ansonsten wirklich super, vielen Dank schon mal.
Angehängte Grafiken
Dateityp: png Verzeichnisse.png (13,3 KB, 32x aufgerufen)
Walter Landwehr
Mfg

Walter
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz