![]() |
Vcl.Dialogs.TFileOpenDialog.Execute immer false
Hallo,
bin am verzweifeln: TFileOpenDialog.Execute liefert immer false zurück, auch wenn ich im Dialog eine Datei auswähle und dann auf 'Öffnen' klicke. Beispiel:
Delphi-Quellcode:
D.h. name wird nie gesetzt!
var
name : String; fileOpenDialog: TFileOpenDialog; begin fileOpenDialog := TFileOpenDialog.Create(self); try if fileOpenDialog.Execute then name := fileOpenDialog.FileName; finally FreeAndNil(fileOpenDialog); end; In der Doku zu TCustomFileDialog.Execute steht: Zitat:
Hat jemand eine Idee was das Problem sein könnte? Ich habe Delphi 11 Update 3. VG |
AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false
Sieht gut aus und funktioniert auch im Test (D 10.4.2)
Mglw ist die Variable "name" unglücklich benamst. Das könnte auch irgendwo ein Schlüsselwort sein. |
AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false
Wie schon erwähnt würde ich hier auch nie "Name" wählen, da z.B. Form.name und sämtliche Komponenten die Eigenschaft "Name" haben, da kann schnell mal was durcheinander gehen.
Ist hier aber nicht das Problem. Der Code funktioniert hier. Ist die Datei, die Du auswählst auch lesbar und nicht z.B. in einen anderen Programm geöffnet, welches das Dateiflag auf Sharedenied gesetzt hat? |
AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false
Vielen Dank schon mal für Eure Unterstützung :-D
Also an der Variable 'name' lag es definitv nicht, der Originalcode sah so aus und ich hatte das nur etwas umgeschrieben:
Code:
Ich möchte also eigentlich ein Verzeichnis wählen, aber egal welches Verzeichnis ich auswähle Execute liefert immer false.
with TFileOpenDialog.Create(self) do
try Options := [fdoPickFolders,fdoPathMustExist]; if Execute = true then DirectoryEdit.Text := Filename; finally Free; end; Was mich halt irritiert ist diese Aussage in der Doku 'Im Allgemeinen gibt Execute true zurück, wenn der Benutzer eine Auswahl trifft...' Es scheint wohl bei mir - warum auch immer - nun so zu sein dass es eben nicht true zurückliefert und der Filename auch nicht gesetzt wird. |
AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false
Delphi-Quellcode:
Ohne with und Vergleich auf true funktioniert das so bei mir.
procedure TForm3.Button1Click(Sender: TObject);
var lDialog: TFileOpenDialog; begin lDialog := TFileOpenDialog.Create(nil); try lDialog.Options := [fdoPickFolders,fdoPathMustExist]; if lDialog.Execute then // lblTest ist einfach nur ein Label auf dem Formular lblTest.Caption := lDialog.FileName; finally lDialog.Free; end; end; |
AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false
fdoPickFolders und Auswahl einer Datei?????
|
AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false
Zitat:
So, wie DeddyH es schreibt... |
AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false
Gründe für die Nichtanzeige dieses Dialogs:
* ungültiger InitialFolder * ungültiger vordefinierter FileName * alte CommonAPI benutzt, welche diesen Dialog noch nicht kennt, da kein Manifest im Projekt oder Laufzeit-Themes im Manifest deaktiviert * Styles im Windows deaktivert (bis Win10 ging das noch und Einige fanden z.B. in RDP-Servern den alten Win2k-Style zu geil) * altes Windows, was diese API noch garnicht kennt Wenn er nicht angezeigt werden kann, dann ist es so, als wenn jemand auf Abbrechen bzw. [x] gedrückt hätte. |
AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false
Die Dialog wird angezeigt, nur wenn ich ein Verzeichnis auswähle und dann auf 'Ordner auswählen' klicke bekomme ich eben false zurück und Dialog.Filename ist leer.
Auch mit dieser Variante ohne 'with':
Code:
Dialog := TFileOpenDialog.Create(self);
try Dialog.DefaultFolder := 'c:\temp'; Dialog.Options := [fdoPickFolders,fdoPathMustExist]; if Dialog.Execute = true then DirectoryEdit.Text := Dialog.Filename; finally FreeAndNil(Dialog); end; |
AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false
Zitat:
Delphi-Quellcode:
...was ist hiermit?
Dialog := TFileOpenDialog.Create(self);
try Dialog.DefaultFolder := 'c:\temp'; //Dialog.Options := [fdoPickFolders,fdoPathMustExist]; // du willst eine Datei auswählen, aber nicht nur den Ordner? if Dialog.Execute then DirectoryEdit.Text := Dialog.Filename; finally FreeAndNil(Dialog); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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