作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个(Delphi XE2)Firemonkey 示例程序,其中包含一个 TButton 和一个带有两个不同过滤器的 TSavedialog。(TSaveDialog组件支持Win32/Win64和OS X平台。)
它在 Win32/Win64 上运行良好,但我现在不知道为什么它在 OS X (VirtualBox/OS X 10.7.x) 上不显示 Savedialog 过滤器。
如何让它在 OS X 上运行?
procedure TForm1.Button_SaveClick(Sender: TObject);
begin
SaveDialog.Filter:='Format_1 (*.fmt1)|*.fmt1|Format_2 (*.fmt2)|*.fmt2';
If Savedialog.Execute Then ShowMessage(SaveDialog.FileName+#13+'Selected filterindex: '+Inttostr(SaveDialog.FilterIndex));
end;
最佳答案
保存对话框不是在 Delphi 中构建的,而是调用 native MAC OSX 对话框 (NSSavePanel)。这没有用户可选择的过滤器。
当您执行保存对话框时,Delphi 将过滤器作为数组传递给 NSSavePanel.SetAllowedFileTypes,它确定 OSX 对话框将允许用户指定哪些扩展名 - 但没有可选择的列表。
要允许用户从列表中进行选择,您需要创建自己的文件类型选择对话框,然后将该选择传递到保存的对话框作为默认文件类型和唯一的过滤项。
创建全新的 fileSave 对话框的替代方案并不容易,因为 Firemonkey 树组件似乎坚持扩展其所有节点,因此对硬盘驱动器上的所有文件执行完整的遍历。无论如何,MAC 用户都会熟悉标准对话框。
关于macos - FireMonkey/Rad Studio XE2 : How can I show the SaveDialog filter on OS X?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12977734/
我是一名优秀的程序员,十分优秀!