如何准确地按照选择文件的顺序从 TOpenDialog 中获取选定的文件?
How to get selected files from TOpenDialog exactly in the order they were selected in?
我在 Delphi XE7 中使用了一个 TOpenDialog 组件,因为我想 select 一个或多个文件。但是,在我 select 它们并单击“确定”之后,selected 文件已按字母顺序从 A 到 Z 存储在 Files 属性,我不想要的东西。我在 TOpenDialog 控件和 TStrings 类型中都没有看到任何开关或选项。
如何使此组件完全按照我想要的顺序存储 selected 文件?
系统对话框不会跟踪项目的选择顺序。您无法让系统对话框告诉您该信息。如果您真的需要它,那么我会看到两个选项:
- 编写您自己的对话框来跟踪选择的顺序。
- 让用户在文件选择对话框之外指定顺序。
操作系统的底层对话框不会跟踪该信息(或者即使跟踪了,也不会以任何方式公开),class 提供的包装器 Delphi 没有给你合成。
您可以处理 the OnSelectionChange
event to deduce the selection order. Begin by creating your own ordered list to hold the selected files. When the event is triggered, inspect the dialog's Files
property。从您的内部列表中删除 Files
中不存在的任何条目。对于 Files
中您还没有的任何项目,请将它们添加到列表的开头。
我在 Delphi XE7 中使用了一个 TOpenDialog 组件,因为我想 select 一个或多个文件。但是,在我 select 它们并单击“确定”之后,selected 文件已按字母顺序从 A 到 Z 存储在 Files 属性,我不想要的东西。我在 TOpenDialog 控件和 TStrings 类型中都没有看到任何开关或选项。
如何使此组件完全按照我想要的顺序存储 selected 文件?
系统对话框不会跟踪项目的选择顺序。您无法让系统对话框告诉您该信息。如果您真的需要它,那么我会看到两个选项:
- 编写您自己的对话框来跟踪选择的顺序。
- 让用户在文件选择对话框之外指定顺序。
操作系统的底层对话框不会跟踪该信息(或者即使跟踪了,也不会以任何方式公开),class 提供的包装器 Delphi 没有给你合成。
您可以处理 the OnSelectionChange
event to deduce the selection order. Begin by creating your own ordered list to hold the selected files. When the event is triggered, inspect the dialog's Files
property。从您的内部列表中删除 Files
中不存在的任何条目。对于 Files
中您还没有的任何项目,请将它们添加到列表的开头。