FireMonkey / Rad Studio XE2: Wie kann ich den Filter SaveDialog auf OS X anzeigen?

8

Ich habe ein (Delphi XE2) Firemonkey-Beispielprogramm erstellt, das einen TButton und einen TSavedialog mit zwei verschiedenen Filtern enthält. (Die TSaveDialog-Komponente unterstützt die Win32 / Win64- und OS X-Plattform.)

Es funktioniert gut auf Win32 / Win64, aber ich habe jetzt nicht, warum es nicht die Savedialog-Filter auf OS X (VirtualBox / OS X 10.7.x) zeigt.

Wie kann ich unter OS X arbeiten?

%Vor%     
Zoltan Karpati 19.10.2012, 15:39
quelle

2 Antworten

3

Der Dialog Speichern wird nicht in Delphi erstellt, sondern ruft den nativen MAC OSX-Dialog (NSSavePanel) auf. Dies hat keinen benutzerdefinierten Filter.

Wenn Sie einen Speicherdialog ausführen, übergibt Delphi den Filter als ein Array an NSSavePanel.SetAllowedFileTypes, das bestimmt, welche Erweiterungen der OSX-Dialog dem Benutzer ermöglichen kann - aber es gibt keine auswählbare Liste.

Um es dem Benutzer zu ermöglichen, aus einer Liste auszuwählen, müssten Sie Ihr eigenes Dateityp-Auswahldialogfeld erstellen und dann diese Auswahl übernehmen und als Standarddateityp und als einziges Filterelement an den gespeicherten Pfad übergeben.

Die Alternative, einen komplett neuen fileSave-Dialog zu erstellen, ist nicht einfach, da die Firemonkey-Baumkomponente darauf besteht, alle ihre Knoten zu expandieren und somit einen vollständigen Durchlauf aller Dateien auf Ihrer Festplatte durchführt. In jedem Fall werden MAC-Benutzer mit dem Standarddialog vertraut sein.

    
David Peters 22.10.2012 10:35
quelle
1

Ich hatte das gleiche Problem mit TOPENDialog in MAC OSX: Filter funktionieren nicht, aber in Windows tun sie. Jetzt habe ich das Problem gelöst, vielleicht können Sie den Code für Ihre Problemumgehung verwenden. Jene Dateien, die NICHT in Windows angezeigt werden, sind unter MAC OSX deaktiviert, Sie können sie nicht auswählen.

%Vor%     
Herbert Dapper 18.06.2013 23:29
quelle