【问题标题】:How to get selected files from TOpenDialog exactly in the order they were selected in?如何完全按照选择的顺序从 TOpenDialog 获取选定的文件?
【发布时间】:2016-05-12 07:31:33
【问题描述】:

我在 Delphi XE7 中使用 TOpenDialog 组件,因为我想选择一个或多个文件。但是,在我选择它们并单击“确定”后,所选文件已按字母顺序(从 A 到 Z)存储在 Files 属性中,这是我不想要的。我在 TOpenDialog 控件和 TStrings 类型中都没有看到任何开关或选项。

我怎样才能让这个组件完全按照我想要的顺序存储选定的文件?

【问题讨论】:

    标签: sorting delphi delphi-xe7 tstringlist topendialog


    【解决方案1】:

    来自操作系统的底层对话框不会跟踪该信息(或者如果有,它不会以任何方式公开它),并且 Delphi 提供的包装类不会为您合成它.

    您可以处理the OnSelectionChange event 来推断选择顺序。首先创建您自己的有序列表来保存选定的文件。当事件被触发时,检查the dialog's Files property。从内部列表中删除 Files 中不存在的所有条目。对于 Files 中您还没有的任何项目,请将它们添加到列表的开头。

    【讨论】:

    • 考虑到 Files 属性是自动排序的,你认为它会起作用吗?
    • 为什么会影响任何事情? 您的 列表不会按字母顺序排序。将Files 的内容与您的列表内容进行比较并找出差异。
    【解决方案2】:

    系统对话框不跟踪选择项目的顺序。您无法让系统对话框告诉您该信息。如果你真的需要,那么我看到两个选项:

    1. 编写您自己的对话框来跟踪选择顺序。
    2. 让用户在文件选择对话框之外指定顺序。

    【讨论】:

    • @whosrdaddy 不,那不是真的。最近添加到选择中的文件最先出现。其余文件未按选择顺序列出。
    • @whosrdaddy 然后选择 d。对我来说,我现在有 d a b c。
    • 我在这里同意@whosrdaddy。在打开对话框的编辑框中,按照我选择它们的顺序显示了所选文件。但是,此行为不会转换为 Files 属性 :(
    • @whosrdaddy 现在同意我的看法,已经完成了更多测试。只有您认为系统尊重编辑框中的选择顺序。继续向选择中添加越来越多的文件。
    猜你喜欢
    • 1970-01-01
    • 2020-01-27
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 2018-08-19
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多