Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Neues Verzeichnis mit TFileOpenDialog anlegen (https://www.delphipraxis.net/210904-neues-verzeichnis-mit-tfileopendialog-anlegen.html)

Carsten Hölscher 28. Jun 2022 13:28

Neues Verzeichnis mit TFileOpenDialog anlegen
 
Ich möchte einen FileOpenDialog mit [fdoPickFolders] öffnen, in dem der Anwender auch einen neuen Pfad eintippen kann.
Diesen würde ich dann nach OK erzeugen.

Allerdings habe ich alle möglichen Optionen ausprobiert und der Dialog bemeckert immer, dass der Pfad nicht vorhanden ist und Execute wird nicht ausgeführt. Meine Erwartung war, dass bei fdoPathMustExist=False gar keine Reklamation kommt und bei fdpCreateprompt=true der neue Ordner schon durch den Dialog angelegt wird. Beides ist nicht der Fall. Hat jemand einen Tipp?

Carsten

himitsu 28. Jun 2022 13:41

AW: Neues Verzeichnis mit TFileOpenDialog anlegen
 
Zitat:

Diesen würde ich dann nach OK erzeugen.
Falsch. Besser:

Den erstellt man vorher, im Dialog, und lässt sich das neue Verzeichnis zurückgeben.
Rate mal, warum es dort im Dialog den Knopf "Neuer Ordner" gibt.


Es kann gut sein, dass diese Optionen auch nur beim Speicher-Dialog eine Wirkung haben. (da, wo sie IMHO eine sinnvolle Funktionalität hätten)

Nichtexistierende Dateien zu öffnen, ist doch irgendwie bissl wiedersinnig?
Aber Dateien nicht zu überschreiben oder nur als "neue Datei" zu speichern, ergibt irgendwie bissl Sinn.



Mal mit NoValidate probieren?



[EDIT]
Mal den Hersteller gefragt:
Zitat:

Zitat von FOS_FILEMUSTEXIST
Value: 0x1000
The item returned must exist. This is a default value for the Open dialog.

Soll das heißen, diese Option ist da immer aktiv?


dagegen aber

Zitat:

Zitat von OFN_FILEMUSTEXIST
The user can type only names of existing files in the File Name entry field. If this flag is specified and the user enters an invalid name, the dialog box procedure displays a warning in a message box. If this flag is specified, the OFN_PATHMUSTEXIST flag is also used. This flag can be used in an Open dialog box. It cannot be used with a Save As dialog box.

ähhhh ... hmmmmm?

Carsten Hölscher 28. Jun 2022 13:52

AW: Neues Verzeichnis mit TFileOpenDialog anlegen
 
Ich würde gerne einen sinnvollen Pfad vorschlagen, den der Nutzer dann nur mit OK quittieren muss.

Carsten

BerndS 28. Jun 2022 14:10

AW: Neues Verzeichnis mit TFileOpenDialog anlegen
 
Hast du dir schon mal Vcl.Dialogs.InputBox angeschaut?

Carsten Hölscher 28. Jun 2022 14:34

AW: Neues Verzeichnis mit TFileOpenDialog anlegen
 
Es entfällt dann aber die Option, dass man gleich einen Blick auf seine Festplatte werfen und den Ort für das Verzeichnis selbst suchen kann - wenn man das möchte.

Carsten

Carsten Hölscher 28. Jun 2022 14:42

AW: Neues Verzeichnis mit TFileOpenDialog anlegen
 
NoValidate ändert nichts

Carsten

Bernhard Geyer 28. Jun 2022 17:47

AW: Neues Verzeichnis mit TFileOpenDialog anlegen
 
Zitat:

Zitat von Carsten Hölscher (Beitrag 1508033)
Ich würde gerne einen sinnvollen Pfad vorschlagen, den der Nutzer dann nur mit OK quittieren muss.

Carsten

Das hat aber Microsoft mit dem OpenDialog so nicht vorgesehen.
Wenn du das im eigene Programm willst, dann mehrer Schritte

1, Dialog mit "Wollen sie die Daten unter "..." anlegen
2, Wenn "OK" -> Anlegen
3, Wenn "Nein" -> OpenDialog, damit der User ein eigenes Verzeichnis vorgibt odre im Dialog mit "Neuer Ordner" anlegt
4, Falls hier Abbruch -> Gesamte Aktion abbrechen.

Carsten Hölscher 28. Jun 2022 18:27

AW: Neues Verzeichnis mit TFileOpenDialog anlegen
 
Also ist die Option fdoPathMustExist ohne Auswirkung auf das Verhalten?
Und mit fdpCreateprompt kommt zqwar die Abfrage, ob das Verzeichnis angelegt werden soll. OK legt es aber trotzdem nicht an.

Klingt für mich alles nicht so ganz bugfrei.

Carsten

EMxRay 28. Jun 2022 19:19

AW: Neues Verzeichnis mit TFileOpenDialog anlegen
 
Ich habe bei mir das mit TBrowseForFolder gemacht. Das zeigt ein Dialogfeld zur Auswahl eines Folder, man kann dort auch einen neuen anlegen.

Delphi-Quellcode:
function TClassCommonLib.OpenDialogSetFolder(const nInitFolder: string; var SelectedFolder: string ): Boolean;
var
   nFolder: TBrowseForFolder;
begin
   nFolder:= nil;
   try
      nFolder:= TBrowseForFolder.Create(nil);
         try
            nFolder.BrowseOptions:= [bifDontGoBelowDomain, bifNewDialogStyle ];
            nFolder.UseFileDialog:= True;
            nFolder.Folder:= nInitFolder;
            if nFolder.Execute then
               SelectedFolder := nFolder.Folder;
         except
            on E: exception do
               begin
                  Result := False;
                  Exit;
               end;
         end;
   finally
      nFolder.Free;
   end;
   Result := True;
end;
Gruß
Heinz

himitsu 28. Jun 2022 23:07

AW: Neues Verzeichnis mit TFileOpenDialog anlegen
 
Man kann aber z.B. Favoriten für den Open/Save-Dialog definieren
und da ließe sich dann z.B auch so ein Vorgabepfad mit einbringen.


Bei den Dialogen muß man auch höllisch aufpassen, den wenn man z.B. einen ungültigen Pfad als Initial reingibt, dann passiert es gern, dass der Dialog garncht mehr aufgeht und direkt behauptet der OK-Knöpf wäre gedrückt worden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:32 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