Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Save Dialog Validierung abschalten (https://www.delphipraxis.net/187352-save-dialog-validierung-abschalten.html)

haentschman 21. Nov 2015 07:09

Save Dialog Validierung abschalten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin...8-)

Man nehme einen TSaveDialog und gebe einen ungültigen Dateinamen an. Dann bekommt man brav die Meldung (Anhang 1). Nun habe ich aber auch bei den Message Boxen Corporate Design. Wie verklickere ich dem SaveDialog das er nicht validieren brauch weil ich diese selbst im Execute durchführe.

Die Option ofNoValidate interessiert ihn nicht. :evil:

Welche Alternativen gibt es?

Bernhard Geyer 21. Nov 2015 09:03

AW: Save Dialog Validierung abschalten
 
a, Verwendest du auch die neueste Version der CommonDialogs (Evtl. noch nicht in XE dabei).
In Delphi 10 Seatle werden auch Common Dialogs gethemed. Könnte auch sein das damit dieses Problem auch erledigt ist.

haentschman 21. Nov 2015 09:43

AW: Save Dialog Validierung abschalten
 
Danke erstmal...:P

1. Auch der TFileSaveDialog ("VistaDialog") ignoriert die Option [fdoNoValidate] :twisted: gleiche Ausgabe der Meldung.
2. Es geht nicht um den Dialog selbst sondern um die Meldung bei falschem Dateinamen. Ich habe für meine Messages eine eigene Implementierung mit dem entsprechendem Design. VCL Styles habe ich nicht. (XE)... PS: da würde mir auch keiner gefallen. :P

Bernhard Geyer 21. Nov 2015 09:48

AW: Save Dialog Validierung abschalten
 
Zitat:

Zitat von haentschman (Beitrag 1322087)
1. Auch der TFileSaveDialog ignoriert die Option [fdoNoValidate] :twisted: gleiche Ausgabe der Meldung.

U.u. ist das jetzt einfach keine (einfache) Lösbare Aufgabe.

a, Du könntest versuchen den Win-API-Messageboxaufruf zu hooken. In der JCL gibt Hilfsfunktionen die das vereinfachen.
b, Du implementierst den Savedialog neu. Am besten mit dem ProductOwner abklären ob er den Aufwand für gerechtfertigt hält

Zitat:

Zitat von haentschman (Beitrag 1322087)
2. Es geht nicht um den Dialog selbst sondern um die Meldung bei falschem Dateinamen.

Evtl. wird das ja vom Theming auch abgedeckt. Das müsste man probieren.

Zitat:

Zitat von haentschman (Beitrag 1322087)
Ich habe für meine Messages eine eigene Implementierung mit dem entsprechendem Design.

Darf man fragen was es hier für spezielles Design gibt?

Zitat:

Zitat von haentschman (Beitrag 1322087)
PS: da würde mir auch keiner gefallen. :P

VCLStyles kann man relativ einfach selbst gestalten. Ein Editor ist in der IDE dabei.

haentschman 21. Nov 2015 09:58

AW: Save Dialog Validierung abschalten
 
Zitat:

VCLStyles kann man relativ einfach selbst gestalten. Ein Editor ist in der IDE dabei.
:P Wer hat schon die Zeit dazu wenn er nicht das Geld für Externe hat.
Zitat:

Darf man fragen was es hier für spezielles Design gibt?
Ich hatte mich vor längerer Zeit auf die Office Styles (TMS) festgelegt. Am Design ist eigentlich nix besonderes. Ich habe mir den Dialog so gestaltet wie ich es brauche. Schönere Icons, Style (Farben), Übersetzung, Liste für die Zeilen, Buttons im gleichen Style wie die Anwendung... usw. :P
Zitat:

U.u. ist das jetzt einfach keine (einfache) Lösbare Aufgabe.
Das hatte ich befürchtet. :?
Zitat:

Du implementierst den Savedialog neu. Am besten mit dem ProductOwner abklären ob er den Aufwand für gerechtfertigt hält
Das fällt leider aus.

:wall: NoValidate hat ja auch nix mit dem Dateinamen zu tun... warum nennt man das so... *grrr*
Zitat:

fdoNoValidate

Nicht auf Situationen prüfen, die verhindern, dass Anwendungen ausgewählte Dateien öffnen, wie z.B. bei den Fehlern "Verletzung bei der gemeinsamen Benutzung" oder "Zugriff verweigert".

Bernhard Geyer 21. Nov 2015 10:22

AW: Save Dialog Validierung abschalten
 
Zitat:

Zitat von haentschman (Beitrag 1322091)
Zitat:

VCLStyles kann man relativ einfach selbst gestalten. Ein Editor ist in der IDE dabei.
:P Wer hat schon die Zeit dazu wenn er nicht das Geld für Externe hat.

So viel Zeit dürfte das nicht nötig machen.

Zitat:

Zitat von haentschman (Beitrag 1322091)
Zitat:

Darf man fragen was es hier für spezielles Design gibt?
Ich hatte mich vor längerer Zeit auf die Office Styles (TMS) festgelegt. Am Design ist eigentlich nix besonderes. Ich habe mir den Dialog so gestaltet wie ich es brauche. Schönere Icons, Style (Farben), Übersetzung, Liste für die Zeilen, Buttons im gleichen Style wie die Anwendung... usw. :P

Wir haben auf das Theming vom Elpack gesetzt (War Anfang des Jahrtausends mit Unicode-Support) die einzige verfügbare Lösung.

Zitat:

Zitat von haentschman (Beitrag 1322091)
Zitat:

U.u. ist das jetzt einfach keine (einfache) Lösbare Aufgabe.
Das hatte ich befürchtet. :?

Das unmögliche wird sofort erledigt. Nur Wunder dauern etwas länger :mrgreen:


Zitat:

Zitat von haentschman (Beitrag 1322091)
:wall: NoValidate hat ja auch nix mit dem Dateinamen zu tun... warum nennt man das so... *grrr*

Eigentlich schon (https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx). Aber vermutlich wird das mit den neuen Commondialogs einfach nicht mehr unterstützt da soweit ich sehe hier man den "berühmten" Callback einbauen müsste der dafür sorgt das der Dialog nach Win3.1 aussieht.

Uwe Raabe 21. Nov 2015 11:10

AW: Save Dialog Validierung abschalten
 
Es ist leider mal wieder sowas von inkonsistent:

Alter Dialog:

Delphi-Quellcode:
ofNoValidate
= Deaktiviert die Überprüfung auf ungültige Zeichen in Dateinamen. Ermöglicht die Auswahl von Dateinamen mit ungültigen Zeichen.


Neuer Dialog:
Delphi-Quellcode:
fdoNoValidate
= Nicht auf Situationen prüfen, die verhindern, dass Anwendungen ausgewählte Dateien öffnen, wie z.B. bei den Fehlern "Verletzung bei der gemeinsamen Benutzung" oder "Zugriff verweigert".


Die beiden Optionen bedeuten also was vollkommen unterschiedliches.

Vielleicht hilft dir
Delphi-Quellcode:
fdoNoTestFileCreate
weiter.

haentschman 21. Nov 2015 11:13

AW: Save Dialog Validierung abschalten
 
:gruebel: Das obige Zitat stammt aus der Delphi Hilfe zur Option. Das interpretiere ich aber anders...

Danke Uwe... Wie ich schon sagte... ofNoValidate im alten Dialog hat keine Auswirkung.

Am neuen (Vista) Dialog stören mich die plattformspezifischen Warnungen. :evil: Ich hatte bis dato mein Projekt Warnungs- und Fehlerfrei...

Bernhard Geyer 21. Nov 2015 11:15

AW: Save Dialog Validierung abschalten
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1322099)
Es ist leider mal wieder sowas von inkonsistent:

Alter Dialog:

Delphi-Quellcode:
ofNoValidate
= Deaktiviert die Überprüfung auf ungültige Zeichen in Dateinamen. Ermöglicht die Auswahl von Dateinamen mit ungültigen Zeichen.


Neuer Dialog:
Delphi-Quellcode:
fdoNoValidate
= Nicht auf Situationen prüfen, die verhindern, dass Anwendungen ausgewählte Dateien öffnen, wie z.B. bei den Fehlern "Verletzung bei der gemeinsamen Benutzung" oder "Zugriff verweigert".


Die beiden Optionen bedeuten also was vollkommen unterschiedliches.

Beschwere dich dann aber bei Microsoft. Der Beschreibungstext der Optionen ist mehr oder minder direkt aus der MSDN abgeschrieben: https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

nahpets 21. Nov 2015 11:18

AW: Save Dialog Validierung abschalten
 
Was ist mit ofNoTestFileCreate?
Oder ofDontAddToRecent? Der müsste ja zum Anlegen eines Links in Recent einen gültigen Dateinamen haben.

Frage: Wann wird der Link überhaupt angelegt? Vor oder während des Executes?

In einer Routine, die bei erfolgreichem oder eben nicht erfolgreichem Execute ausgeführt wird (also der selbst programmierte Teil), dürfte der Dialog ja vermutlich keinen Einfluß mehr haben.

Aber: Der Dialog will doch die Datei speichern und wenn ihm dies nicht gelingt, liefert Execute false zurück.

Was ist mit ofNoChangeDir, der müsste / könnte ja bei einer fehlerhaften Angabe auch ein Problem bekommen.

Es müsste also sowas in der Form ofNoErrorMessages geben ;-)

Mir fällt dazu eigentlich nur ein, einen TJvOpenDialog (aus der JVCL - kapselt TOpenDialog und hat einige sinnvolle Erweiterungen) zu nehmen und dort dann nach dem Execute das Speichern selbst zu übernehmen. Nur so dürftest Du die Möglichkeit bekommen, den Dateinamen zu überprüfen und eigene Meldungen zu generieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 Uhr.
Seite 1 von 2  1 2      

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