5

在 TSaveDialog 中,我添加了 2 种具有相同扩展名的格式:

Format A|*.form
Format B|*.form
Format C|*.diff

现在我想确定用户选择的格式:

var Ext: String;
begin
  if not SaveDialog1.Execute then Exit;

  Ext := LowerCase(ExtractFileExt(SaveDialog1.FileName));

这样我可以区分“格式 B”和“格式 C”,但我不能区分“格式 A”和“格式 B”。

4

2 回答 2

7

使用该FilterIndex属性来标识在操作对话框时选择了哪个过滤器。

于 2019-10-28T17:23:46.313 回答
5

虽然 David 的回答直接与所提出的问题相关,但在确定用户意图时还需要考虑更多内容。您不一定只依靠文件扩展名来了解用户想要做什么。毕竟,用户可以.form自己手动输入文件名,然后你该怎么办?

相反,不应在此级别上实施此类选项。以我的经验,这些事情是在中间水平上实现的。例如,想想视频编辑/制作。用户可能希望将视频呈现为MP4视频。或者也许是一个AVI. 但是,这些可能的格式中的每一种都有各种各样的其他特定选项,例如视频编解码器、质量等等。

在这种情况下需要做的是在保存文件之前提供额外的用户选项层。让它成为某种意义上的“项目”的一部分。用户对他们的内容做他们需要做的事情,并且这个过程的一部分是决定他们打算产生什么类型的输出格式。当用户决定保存时,在提示他们输入文件名之前,首先提示他们输入其他特定格式选项,具体取决于您的应用程序支持的格式。

长话短说,不要依赖文件扩展名本身来识别用户的所有意图。在选择输出扩展名之前,应该有一个中间级别的用户选择文件的格式。

于 2019-10-29T02:45:57.387 回答