AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ungewollte Folge(OpenDialog)

Ein Thema von Moin · begonnen am 7. Jan 2004 · letzter Beitrag vom 7. Jan 2004
Antwort Antwort
Moin

Registriert seit: 16. Dez 2003
Ort: Dresden
57 Beiträge
 
Delphi 7 Enterprise
 
#1

ungewollte Folge(OpenDialog)

  Alt 7. Jan 2004, 17:01
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!!
~~ an alln ekn & endn sparn! ~~
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: ungewollte Folge(OpenDialog)

  Alt 7. Jan 2004, 17:05
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#3

Re: ungewollte Folge(OpenDialog)

  Alt 7. Jan 2004, 17:11
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;
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
Moin

Registriert seit: 16. Dez 2003
Ort: Dresden
57 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: ungewollte Folge(OpenDialog)

  Alt 7. Jan 2004, 17:16
ist das die eigenschaft "ofExNoPlacesBar"??
~~ an alln ekn & endn sparn! ~~
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#5

Re: ungewollte Folge(OpenDialog)

  Alt 7. Jan 2004, 17:17
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.
  Mit Zitat antworten Zitat
Moin

Registriert seit: 16. Dez 2003
Ort: Dresden
57 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: ungewollte Folge(OpenDialog)

  Alt 7. Jan 2004, 17:24
@ 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!!!!
~~ an alln ekn & endn sparn! ~~
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: ungewollte Folge(OpenDialog)

  Alt 7. Jan 2004, 19:53
Moin Moin,

auch wenn Du die Frage als beantwortet ansiehst:
Schau Dir doch mal das OnCanClose Event des TOpenDialog an.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:53 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