Tom*_*Tom 5 delphi save-dialog tsavedialog
在TSaveDialog中,我添加了两种具有相同扩展名的格式:
Format A|*.form
Format B|*.form
Format C|*.diff
Run Code Online (Sandbox Code Playgroud)
现在,我要确定用户选择的格式:
var Ext: String;
begin
if not SaveDialog1.Execute then Exit;
Ext := LowerCase(ExtractFileExt(SaveDialog1.FileName));
Run Code Online (Sandbox Code Playgroud)
这样我可以将“格式B”与“格式C”区分开来,但不能将“格式A”与“格式B”区分开。
使用该FilterIndex属性可以确定在操作对话框时选择了哪个过滤器。
尽管David的回答与所提出的问题直接相关,但在确定用户意图时还需要考虑更多因素。您不一定要仅依靠文件扩展名来了解用户想要做什么。毕竟,用户可以.form自己手动输入文件名,然后该怎么办?
相反,此类选项不应在此级别上实现。以我的经验,这些事情是在中等水平上实现的。例如,考虑视频编辑/制作。用户可能希望将视频渲染为MP4视频。或者也许是AVI。但是,每种可能的格式都有各种各样的其他特定选项,例如视频编解码器,质量等。
在这种情况下,需要做的是在保存文件之前提供另一层用户选项。从某种意义上说,使其成为“项目”的一部分。用户会根据自己的内容做他们需要做的事情,过程的一部分是确定他们打算产生哪种类型的输出格式。当用户决定保存时,在提示他们输入文件名之前,首先提示他们输入其他特定格式的选项,具体取决于应用程序支持的格式。
长话短说,不要依靠文件扩展名本身来识别所有用户的意图。在选择输出扩展名之前,应该有一个中等级别的用户选择文件应该如何格式化。