AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Vcl.Dialogs.TFileOpenDialog.Execute immer false
Thema durchsuchen
Ansicht
Themen-Optionen

Vcl.Dialogs.TFileOpenDialog.Execute immer false

Ein Thema von yymsc · begonnen am 17. Mär 2023 · letzter Beitrag vom 17. Mär 2023
Antwort Antwort
Seite 1 von 2  1 2      
yymsc

Registriert seit: 18. Aug 2015
3 Beiträge
 
#1

Vcl.Dialogs.TFileOpenDialog.Execute immer false

  Alt 17. Mär 2023, 09:29
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:
var
  name : String;
  fileOpenDialog: TFileOpenDialog;
begin
  fileOpenDialog := TFileOpenDialog.Create(self);
  try
  if fileOpenDialog.Execute then
    name := fileOpenDialog.FileName;
  finally
    FreeAndNil(fileOpenDialog);
  end;
D.h. name wird nie gesetzt!

In der Doku zu TCustomFileDialog.Execute steht:
Zitat:
Execute öffnet eine Instanz des Dialogfeldes zur Laufzeit. Im Allgemeinen gibt Execute true zurück, wenn der Benutzer eine Auswahl trifft und auf OK klickt, und false, wenn der Benutzer das Dialogfeld schließt, ohne eine Auswahl zu treffen.
Was bedeutet hier 'Im Allgemeinen'?
Hat jemand eine Idee was das Problem sein könnte?
Ich habe Delphi 11 Update 3.

VG
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false

  Alt 17. Mär 2023, 10:38
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.
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false

  Alt 17. Mär 2023, 10:52
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?
  Mit Zitat antworten Zitat
yymsc

Registriert seit: 18. Aug 2015
3 Beiträge
 
#4

AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false

  Alt 17. Mär 2023, 11:38
Vielen Dank schon mal für Eure Unterstützung
Also an der Variable 'name' lag es definitv nicht, der Originalcode sah so aus und ich hatte das nur etwas umgeschrieben:

Code:
with TFileOpenDialog.Create(self) do
  try
    Options := [fdoPickFolders,fdoPathMustExist];
    if Execute = true
      then DirectoryEdit.Text := Filename;
  finally
    Free;
  end;
Ich möchte also eigentlich ein Verzeichnis wählen, aber egal welches Verzeichnis ich auswähle Execute liefert immer false.

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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#5

AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false

  Alt 17. Mär 2023, 11:48
Delphi-Quellcode:
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;
Ohne with und Vergleich auf true funktioniert das so bei mir.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false

  Alt 17. Mär 2023, 11:59
fdoPickFolders und Auswahl einer Datei?????
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false

  Alt 17. Mär 2023, 12:13
Code:
with TFileOpenDialog.Create(self) do
  try
    Options := [fdoPickFolders,fdoPathMustExist];
    if Execute = true
      then DirectoryEdit.Text := Filename;
  finally
    Free;
  end;
Mach mal bei "Execute" und "Filename" ein [F7] und schau nach, was da wirklich exekutiert wird. Ohne "with" wäre es übersichtlicher, deswegen ist "with" in 99% der Fälle ein NoGo.
So, wie DeddyH es schreibt...
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false

  Alt 17. Mär 2023, 12:22
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.
$2B or not $2B
  Mit Zitat antworten Zitat
yymsc

Registriert seit: 18. Aug 2015
3 Beiträge
 
#9

AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false

  Alt 17. Mär 2023, 16:22
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;
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#10

AW: Vcl.Dialogs.TFileOpenDialog.Execute immer false

  Alt 17. Mär 2023, 16:36
Zitat:
auch wenn ich im Dialog eine Datei auswähle
Delphi-Quellcode:
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;
...was ist hiermit?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:30 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