Autor Beitrag
Scofield2011
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55

Windows XP, Windows 7, Windows 8
C#, VBA, VB
BeitragVerfasst: Mo 25.11.13 19:47 
Hallo,

ich habe da mal eine Frage zum SaveFileDialog:

Ich habe vor einiger Zeit ein Tool entwickelt, welches Dateien bearbeitet und auch wieder abspeichert. Dabei habe ich auch die Möglichkeit vorgesehen Dateien im Versionsverwaltungstool ClearCase abzuspeichern. Bis in der Firma von Windows XP auf Windows 7 umgestiegen wurde, hat das auch alles prima funktioniert.

Doch jetzt kommt bei Auswahl einer Datei im SaveFileDialog immer die Meldung, dass die Datei schreibgeschützt ist und man gefälligst einen anderen Dateinamen zu wählen hat. Dass die Datei zum Zeitpunkt der Auswahl schreibgeschützt ist, ist schon klar, da sie ja noch nicht ausgescheckt wurde, was ich aber erst tun kann, wenn ich den genauen Pfad und Dateinamen kenne. Wie schon gesagt unter Windows XP kam diese nervige Meldung nicht. Ich will an dieser Stelle ja schließlich nicht speichern sondern nur den Dateinamen auswählen.

Eine Option um diese lästige Prüfung zu deaktivieren habe ich in den Properties leider nicht gefunden, deshalb würde ich euch gerne um Hilfe bitten.

Vielen Dank schon einmal im Voraus.

Scofield2011
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 25.11.13 20:30 
Warum ist das der SaveFileDialog und nicht der OpenFileDialog?
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4807
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 25.11.13 21:02 
Hallo,

das scheint nicht so einfach direkt beim .NET FileSaveDialog möglich zu sein.

Wenn man sich aber mal die Doku in der MSDN zu der zugehörigen WinAPI Funktion GetSaveFileName anschaut, dann gelangt man von IFileSaveDialog über IFileSaveDialog::SetOptions schließlich zu FILEOPENDIALOGOPTIONS enumeration, wo es den Wert 'FOS_NOREADONLYRETURN' gibt (der wohl standardmäßig gesetzt ist).

Jetzt müßtest du nur noch rausfinden, wie man diesen Wert setzt?

P.S. An den OpenFileDialog hatte ich auch schon gedacht, um das zu umgehen - aber als User wäre es doch komisch, wenn man etwas abspeichern will und dann der "Öffnen"-Dialog erscheint.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 25.11.13 21:18 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:

P.S. An den OpenFileDialog hatte ich auch schon gedacht, um das zu umgehen - aber als User wäre es doch komisch, wenn man etwas abspeichern will und dann der "Öffnen"-Dialog erscheint.


user profile iconScofield2011 hat folgendes geschrieben:
Ich will an dieser Stelle ja schließlich nicht speichern sondern nur den Dateinamen auswählen.


Das beschreibt er aber anders ;) Wenn er selbst schon von auswählen spricht kann man das in der Form sicher auch einem User klarmachen. Insbesondere da es um ein VCS geht. Da dürften ja wohl kaum völlig unbedarften Leute mit arbeiten. Insbesondere wenn das System ClearCase heißt. Mein Beileid übrigens.
Scofield2011 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55

Windows XP, Windows 7, Windows 8
C#, VBA, VB
BeitragVerfasst: Mo 25.11.13 21:36 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:

P.S. An den OpenFileDialog hatte ich auch schon gedacht, um das zu umgehen - aber als User wäre es doch komisch, wenn man etwas abspeichern will und dann der "Öffnen"-Dialog erscheint.


user profile iconScofield2011 hat folgendes geschrieben:
Ich will an dieser Stelle ja schließlich nicht speichern sondern nur den Dateinamen auswählen.


Das beschreibt er aber anders ;) Wenn er selbst schon von auswählen spricht kann man das in der Form sicher auch einem User klarmachen. Insbesondere da es um ein VCS geht. Da dürften ja wohl kaum völlig unbedarften Leute mit arbeiten. Insbesondere wenn das System ClearCase heißt. Mein Beileid übrigens.


Ich glaube da war ich nicht ganz vollständig mit meiner Aussage.

Es sollte eher heißen es wird erst einmal nicht gespeichert, da ich erst überprüfe, ob sich der ausgewählte Pfad innerhalb eines ClearCase Vobs befindet und falls die Datei dann noch "unter Versionskontrolle" steht wird sie ausgecheckt. Danach wird dann gespeichert. Nur eben nicht sofort nach der Auswahl des Speicherpfades, weshalb diese Meldung nicht nur stört sondern den gesamten Speichervorgang ins ClearCase komplett verhindert.
Scofield2011 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55

Windows XP, Windows 7, Windows 8
C#, VBA, VB
BeitragVerfasst: Do 16.01.14 20:42 
Ich habe das Problem jetzt tatsächlich mit dem Open File Dialog gelöst.

Allerdings habe ich nicht die Standard Version verwendet, da ein "Open" Button im Save File Dialog den Anwender mit Sicherheit verwirrt hätte. Nein ich habe einen bereits modifizierten File Dialog leicht für meine Zwecke modifiziert.

Die modifizierte Version (ohne meine Anpassungen) könnt ihr bei Interesse unter folgendem Link finden:

www.codeproject.com/...eFileDialog-the-easy

Das Interessante an diesem Projekt ist, dass man die Beschriftung des Buttons selbst setzen kann und dass man eigene Erweiterungen wie Logos, Buttons usw. ganz einfach rechts oder unter den eigentlichen File Dialog einfügen kann. Auch positiv finde ich, dass der übersichtliche ich nenne es mal "Windows XP File Dialog" verwendet wird und nicht die monströse, unübersichtliche Version, die Windows 7 anbietet, welche, wie ich neulich erstaunt feststellen durfte, nicht einmal von jedem aktuellen Microsoft Programm verwendet wird.