Я использую компонент TOpenDialog в Delphi XE7, потому что хочу выбрать один или несколько файлов. Однако после того, как я выберу их и нажму «ОК», выбранные файлы будут сохранены уже отсортированными по алфавиту, от А до Я, в свойстве Файлы , что мне не нужно. Я не видел переключателей или параметров ни в элементе управления TOpenDialog , ни в типе TStrings .

Как я могу заставить этот компонент хранить выбранные файлы именно в том порядке, в котором я хочу?

1
Bogdan Doicin 12 Май 2016 в 10:31

2 ответа

Лучший ответ

Базовое диалоговое окно операционной системы не отслеживает эту информацию (или, если это так, оно никоим образом не раскрывает ее), а класс-оболочка, предоставляемый Delphi, не синтезирует ее для вас.

Вы можете обработать событие OnSelectionChange, чтобы определить порядок выбора. Начните с создания собственного упорядоченного списка для хранения выбранных файлов. Когда событие запускается, проверьте свойство диалогового окна Files . Удалите из внутреннего списка все записи, которых нет в Files. Любые элементы в Files, которых у вас еще нет, добавьте их в начало вашего списка.

3
Rob Kennedy 12 Май 2016 в 15:11

Системные диалоги не отслеживают порядок, в котором выбираются элементы. У вас нет возможности вызвать системный диалог, чтобы сообщить вам эту информацию. Если вам это действительно нужно, я вижу два варианта:

  1. Напишите свой собственный диалог, который отслеживает порядок выбора.
  2. Позвольте пользователю указать порядок вне диалогового окна выбора файла.
3
David Heffernan 12 Май 2016 в 07:51