XbpFileDialog "Datei überschreiben?" [ERLEDIGT]

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

XbpFileDialog "Datei überschreiben?" [ERLEDIGT]

Beitrag von Benz »

Hi,
gibt es eine Methode oder Instanzvar, mit der man im Save bei XbpFileDialog folgendes festlegen kann:

Wenn die Datei mit dem angegebenen Dateiname bereits vorhanden ist, dass dann eine Abfrage erscheint, ob die Datei überschrieben werden soll.
Weil wenn ich nur den folgenden Code nehme überschreibt das Programm ungefragt:

Code: Alles auswählen

     oFileDlg   := XbpFileDialog():new()
     oFileDlg:defExtension :="dbf"
     aFilters := { {"DBase Datenbank *.dbf", "*.dbf"} }
     oFileDlg:fileFilters := aFilters
     oFileDlg:create( AppDesktop() )

     cFileName := oFileDlg:saveAs()
Zuletzt geändert von Benz am Do, 04. Apr 2013 11:51, insgesamt 1-mal geändert.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: XbpFileDialog "Datei überschreiben?"

Beitrag von Werner_Bayern »

Servus,

Auszug aus der Hilfe:
Weiterhin werden Dateinamen existierender Dateien nicht zurückgewiesen. Stattdessen wird eine Meldung angezeigt, die darauf hinweist, daß eine existierende Datei überschrieben bzw. ersetzt werden soll. Wird die entsprechende Abfrage vom Benutzer bestätigt, wird der Name der Datei zurückgegeben.
Du kannst ja anschließend selbst nochmal prüfen, ob die zurückgegebene Datei existiert und darauf entsprechend reagieren, der Dialog selbst macht ja noch nichts.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: XbpFileDialog "Datei überschreiben?"

Beitrag von Benz »

Schön wärs wenn das so gehen würde.
Im Moment kommt diese Abfrage bei mir nämlich nicht.
Wenn ich eine existierende Datei auswähle und auf speichern klicke, kommt kein Hinweis darauf, dass eine existierende Datei überschrieben wird.
Es wird einfach überspeichert ohne irgendeinen Hinweis.
Genau so eine Abfrage würd ich ja gerne aktivieren.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2824
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: XbpFileDialog "Datei überschreiben?"

Beitrag von georg »

Hallo, Benz -

Code: Alles auswählen

cFile := oFileDialog():saveAs()
IF File(cFile)
  nAnswer := ConfirmBox(, "Datei " + cFile + " tatsächlich überschreiben?", "Problem", XBPMB_YESNO, XBPMB_QUESTION)
  ...
So in etwa musst Du das aufbauen. Die Klasse XbpFileDialog() gibt das von Dir gewünschte Verhalten nicht her, daher musst Du die gewünschten Abfragen/Kontrollen selbst realisieren.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: XbpFileDialog "Datei überschreiben?"

Beitrag von Benz »

Hm ok. Schade eigentlich. Naja dann eben manuell, danke!
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: XbpFileDialog "Datei überschreiben?"

Beitrag von Werner_Bayern »

Benz hat geschrieben:Hm ok. Schade eigentlich. Naja dann eben manuell, danke!
Ich sehe das als Vorteil, weil Du dadurch viel flexibler bist und selbst noch eingreifen kannst, bevor etwas passiert. Wie geschrieben, der FileDialog selbst macht ja noch nichts, er überschreibt keine Datei, er gibt Dir nur einen Dateinamen zurück.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: XbpFileDialog "Datei überschreiben?"

Beitrag von Tom »

Es wird einfach überspeichert ohne irgendeinen Hinweis.
XbpFileDialog speichert überhaupt nichts, und das könnte die Klasse auch nicht, weil sie nicht weiß, was sie speichern soll - schließlich gibt es keinen Parameter, der den Inhalt der zu speichernden Datei oder ähnliches enthält.

Dass da in der Doku irgendwo die Rede davon ist, dass da angeblich eine Warnung angezeigt werden soll, hat mich vor Jahren auch mal verwirrt. Ich empfinde es aber als positiv, dass es keine Warnung gibt, denn ich will an einigen Stellen tatsächlich Daten anhängen, wenn ich einen existierenden Dateinamen vom FileDialog zurückbekomme. Da wäre es schön blöd, wenn der Benutzer gefragt würde, ob er die Datei überschreiben will.

Wie Georg geschrieben hat - ein simples "IF File()" löst das Problem. :wink:
Herzlich,
Tom
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: XbpFileDialog "Datei überschreiben?"

Beitrag von Benz »

Ja stimmt schon. Habs auch schon hinbekommen bei mir jetzt.
Danke! ich werd den Beitrag auch gleich als erledigt markieren.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: XbpFileDialog "Datei überschreiben?" [ERLEDIGT]

Beitrag von AUGE_OHR »

hi,

"das" man die Abfrage nach dem "SaveAs" machen muss ist ja nun klar, aber es wundert mich das bislang keiner eine OOP Lösung vorgeschlagen hat.

du kannst dir doch deine "eigene" Method "SaveAs" schreiben wo du dann prüfen kannst, wenn es nicht der "Vorgebe" entspricht.

Code: Alles auswählen

CLASS MyFileDlg FROM XbpFileDialog
   EXPORTED:
      METHOD INIT()
      METHOD CREATE ()
      METHOD saveAs()
ENDCLASS

METHOD MyFileDlg:Init( oParent, oOwner, aPos )
   ::XbpFileDialog:Init( oParent, oOwner, aPos )
RETURN self

METHOD MyFileDlg:Create( oParent, oOwner, aPos )
   ::XbpFileDialog:Create( oParent, oOwner, aPos )
RETURN self

METHOD MyFileDlg:saveAs(cPathFile)
LOCAL cRet  := ""
LOCAL nButton
LOCAL cFull := ""
   // Auswahl mit Vorgabe
   cFull := ::XbpFileDialog:saveAs(cPathFile)

   IF FILE(cFull)
      nButton := ConfirmBox( , ;
                         "Wollen Sie die Datei "+cFull+" überschreiben", ;
                         "SaveAs", ;
                         XBPMB_YESNO , ;
                         XBPMB_QUESTION+XBPMB_APPMODAL+XBPMB_MOVEABLE,;
                         XBPMB_DEFBUTTON2)

      IF nButton = XBPMB_RET_YES
         cRet := cFull
      ENDIF
   ELSE
      cRet := cFull
   ENDIF
RETURN cRet
gruss by OHR
Jimmy
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: XbpFileDialog "Datei überschreiben?" [ERLEDIGT]

Beitrag von Benz »

in Facebook würde ich jetzt "Gefällt mir" klicken :D :!:
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: XbpFileDialog "Datei überschreiben?" [ERLEDIGT]

Beitrag von UliTs »

Jimmy,

sehr schön geschrieben :) .
Allerdings kann man auf das Überschreiben der Init- und Create-Methode verzichten :D .

Benz, bei Facebook hätte aber Jimmy alle Rechte an Facebook abgegeben 8) .

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Antworten