Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ungewollte Folge(OpenDialog) (https://www.delphipraxis.net/14354-ungewollte-folge-opendialog.html)

Moin 7. Jan 2004 16:01


ungewollte Folge(OpenDialog)
 
Hi alle zusammen,
Ich will eine Öffnen-Procedure haben, die eine Fehlermeldung beim öffnen einer nicht existierenden Datei ausgibt und dann in den OpenDialog zurückkehrt. Dass funktioniert auch soweit, DOCH wenn man im OpenDialog auf ABBRECHEN geht kommt die Fehlermeldung auch! Ich habe keine Idee, wie ich dass umgehe. Ihr vielleicht?:?:?

Delphi-Quellcode:
Procedure TEditor.OEFFNEN;
BEGIN
    OpenDialog.DefaultExt:= 'rtf';
    Repeat

     IF OpenDialog.Execute
     Then
           If (OpenDialog.FileName<>'') and FileExists(OpenDialog.FileName)
           Then begin
                Neu(OpenDialog.FileName); {Neu: Procedure zum erstellen von einem MDIChild}
                exit; end
     Else Exit;

   Until(MessageDlg('Datei existiert nicht! Andere auswählen?',mtError, [mbYes, mbNo],0)= mrNo) ;
END;
Danke im Vorraus!:!:!

Luckie 7. Jan 2004 16:05

Re: ungewollte Folge(OpenDialog)
 
Stell doch im OI von TOpenDialog ein, dass nur dateien ausgewählt werden können, die auch existieren. Mich persönlich würde deine Lösung als Benutzer mehr als nerven.

Niko 7. Jan 2004 16:11

Re: ungewollte Folge(OpenDialog)
 
Bei deiner Lösung fehlt ein begin-end-Block, deshalb bezieht sich der else-Zweig auf die falsche Bedingung.
Delphi-Quellcode:
Procedure TEditor.OEFFNEN;
BEGIN
    OpenDialog.DefaultExt:= 'rtf';
    Repeat

     IF OpenDialog.Execute
     Then
     begin // !
           If (OpenDialog.FileName<>'') and FileExists(OpenDialog.FileName)
           Then begin
                Neu(OpenDialog.FileName); {Neu: Procedure zum erstellen von einem MDIChild}
                exit; end
     end // !
     Else Exit;

   Until(MessageDlg('Datei existiert nicht! Andere auswählen?',mtError, [mbYes, mbNo],0)= mrNo) ;
END;

Moin 7. Jan 2004 16:16

Re: ungewollte Folge(OpenDialog)
 
ist das die eigenschaft "ofExNoPlacesBar"??

scp 7. Jan 2004 16:17

Re: ungewollte Folge(OpenDialog)
 
Wie Luckie schon angedeutet hat im OI einfach bei Options den Wert ofFileMustExist auf true setzen, dann zeigt Windows automatisch eine Fehlemeldung an und schliesst den Dialog erst, wenn die angebene Datei existiert, oder auf Abbrechen gedrückt wurde.

Moin 7. Jan 2004 16:24

Re: ungewollte Folge(OpenDialog)
 
@ Niko: Stimmt du hast recht jetzt gehts wunderbar!
{Da hatte ich wohl Tomaten auf den Augen}

@ alle: Danke an euch alle, hätte ich das mit ofFileMustExist vorher gewusst hätte ich mir das gegrübel sparen können;


!!!!FRAGE BEANTWORTET!!!!

Christian Seehase 7. Jan 2004 18:53

Re: ungewollte Folge(OpenDialog)
 
Moin Moin,

auch wenn Du die Frage als beantwortet ansiehst:
Schau Dir doch mal das OnCanClose Event des TOpenDialog an.


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