![]() |
SelectDirectory
Hallo, gibt es etwas wie SelectDirectory das auch die verbundenen Laufwerke mit anzeigt.
|
AW: SelectDirectory
SelectDirectory() sollte das beim Setzen der Option sdShowShares können.
|
AW: SelectDirectory
Vielleicht magst Du ja eine Zwei-In-Einem Variante, für WindowsXP dein SelectDirectory und ab Vista das neue Fenster.
Ist Hauptsächlich nur die Optik.
Delphi-Quellcode:
Unterschiede zwischen Vista und XP Dialog wäre falls Du so
function SelDir ( StartPath : String; var SelectedDir : String ) : Boolean;
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 if SelectDirectory('Select Directory', ExtractFileDrive(StartPath), StartPath, [sdNewUI, sdNewFolder, sdShowShares]) then begin SelectedDir := StartPath; Result := True; end; end; // Beispiel Aufruf: procedure TForm2.Button1Click(Sender: TObject); var s : String; begin if SelDir('',S) then ShowMessage(s); end;
Delphi-Quellcode:
den Aufruf machst, unter Vista wäre der User beim Aufruf bereits in "C:\XYZ\" drinnen bei XP hingegen hätte der Dialog "C:\XYZ\" ausgewählt.
SelDir('C:\XYZ\',S)
|
AW: SelectDirectory
Hallo Markus, hat ich auch gedacht, funktioniert aber nicht.
Hier mein Code:
Delphi-Quellcode:
Hallo CodeZwerg,
procedure TOptionenFrm.dedtSicherungspfadPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer); Var Dir : string; begin if (dmMain.ibqryOptionen.State <> dsEdit) then dmMain.ibqryOptionen.Edit; SelectDirectory('Einen Ordner zum Speichern wählen.', '', Dir, [sdShowEdit, sdNewFolder, sdShowShares, sdNewUI]); dmMain.ibqryOptionen.FieldByName('SICHERUNGSPFAD').AsString := Dir; end; werde ich morgen mal probieren, berichte dann. |
AW: SelectDirectory
Hallo, ich habe noch mal ein wenig rumprobiert und etwas festgestellt:
Wenn ich SelectDirectory() aufrufe mit einem Start-Verzeichniss als Parameter, dann werden merkwürdigerweise alle Laufwerke ausgeblendet, auch lokale, es wird nur das Laufwerk eingeblendet was im Start-Parameter übergeben wurde. Könnte es daran liegen das es bei Dir nicht fruchtet? |
AW: SelectDirectory
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:
|
AW: SelectDirectory
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?
|
AW: SelectDirectory
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 |
AW: SelectDirectory
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 :wall: |
AW: SelectDirectory
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:05 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 by Thomas Breitkreuz