Beim Anzeigen eines Speicherdialogs möchte ich den Filtertyp ändern und die Dateierweiterung automatisch ändern. (z. B. wie bei MSPaint "Speichern unter".)
Mit TSaveDialog und dem Festlegen von UseLatestCommonDialogs: = False, Ich kann das mit dem folgenden Code umgehen. (Ohne die neueste allgemeine Dialogunterstützung von cource.)
%Vor%Ich möchte sowohl XP als auch vista / 7 mit Delphi 2007 unterstützen.
Soll ich TFileSaveDialog anstelle von TSaveDialog mit internem Wrapper verwenden? (Und ich habe mit COM-Programmierung zu kämpfen mit IFileDialogControlEvents ?)
Oder kann ich dies nur mit TFileSaveDialog und seinen Standardeigenschaften erreichen? (Meine Entwicklungsumgebung ist immer noch auf XP-Rechner, also habe ich es noch nie versucht. Entschuldigung.)
Ich denke, es ist eine sehr häufige Aufgabe, aber ich konnte keinen Beispielcode finden, der Vista / 7 unterstützt ...
Soweit ich weiß, wird TFileSaveDialog eine Ausnahme auf XP auslösen. Es braucht Vista oder höher.
Aktualisieren : ein D2010-Code für TFileSaveDialog , angepasst von Ihrem Event-Handler ....
(Ich habe D2007 nicht auf Vista; benutze PWideChar anstelle von PChar)
Wo der FileSaveDialog ist:
%Vor%Ein Nachteil: Klassenhelfer können in Delphi 2007 nicht auf private Felder zugreifen, daher funktioniert dieser Code nur in Delphi 2009+. Wenn Sie die Kompatibilität mit Delphi 2007 wünschen, verwenden Sie den gleichen Hack für den TOpenDialog, den ich in diesem Beispiel für TFileDialogWrapper verwendet habe.
%Vor% BEARBEITEN : Wenn Sie die DefaultExt
-Eigenschaft festlegen, ändert Delphi / Windows die Änderung der Dateierweiterung für Sie. In diesem Fall müssen Sie im OnTypeChange
-Ereignis nichts tun.
Diese Funktion ist in Delphi implementiert, aber standardmäßig deaktiviert.
Um es zu aktivieren, geben Sie einfach die Standard-Erweiterung in DefaultExt
property ein.
Tags und Links windows-7 delphi windows-vista save-as savefiledialog