Вопрос про TOpenDialog

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Ответить
ZWolol
новенький
Сообщения: 21
Зарегистрирован: 06.01.2023 05:49:21

Вопрос про TOpenDialog

Сообщение ZWolol »

Хотел использовать TOpenDialog.
Указал ofAllowMultiSelect, все прекрасно работает.
Все выбранные файлы появляются в списке но, после нажатия Открыть, порядок выбранных файлов меняется!!!
Я убрал все другие опции и даже добавил ofDontAddToRecent, ни чего не помогает.

Как мне выбрать файлы в определенном порядке?
Или опять мне нужно искать костыли и использовать что-то другое?
sts
энтузиаст
Сообщения: 519
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Сообщение sts »

по идее, порядок меняться не должен, вот только никто этого не обещал.

Добавлено спустя 50 секунд:
посмотрите может порядок просто становится обратный
xchgeaxeax
постоялец
Сообщения: 198
Зарегистрирован: 11.05.2023 02:51:40

Сообщение xchgeaxeax »

Попробуйте извлекать файлы из openDialog.Files через Pop

Код: Выделить всё

if OpenDialog1.Execute then
  while OpenDialog1.Files.Count > 0 do
    ListBox1.Items.Add(OpenDialog1.Files.Pop);
ZWolol
новенький
Сообщения: 21
Зарегистрирован: 06.01.2023 05:49:21

Сообщение ZWolol »

С помощью Pop получается обратный порядок.
Но мне не нужна сортировка по алфавиту и свойство Sorted недоступно.

Согласен с тем, что ни кто не обещал, что эта компонента будет работать по понедельникам однако...
Наверно опять погода нелетная...
slyubez
постоялец
Сообщения: 185
Зарегистрирован: 31.03.2015 07:44:07

Сообщение slyubez »

Ты бы хоть условия назвал. Операционную систему, например, фреймворк...
ZWolol
новенький
Сообщения: 21
Зарегистрирован: 06.01.2023 05:49:21

Сообщение ZWolol »

Windows 10 Домашняя для одного языка
Версия: 22H2
Сборка ОС: 19045.3930
Windows Feature Experience Pack 1000.19053.1000.0

Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz 3.00 GHz
8,00 ГБ
64-разрядная операционная система, процессор x64

Lazarus
Версия: 2.2.4
Дата: 2022-09-24
Версия FPC: 3.2.2
Ревизия: lazarus_2_2_4
x86_64-win64-win32/win64

Понятие не имею как это может на что-то повлиять.
Здесь вроде как девиз: собрал один раз и работает везде.
А что у тебя работает что-ли?

Похоже компонента использует TStringList с сортировкой и исключением повторяющих.
...потому и не кусают.
Alex2013
долгожитель
Сообщения: 3211
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

Порядок выбора в OpenDialog по идее берется из системы ( настройки стандартных диалогов (при использовании их с параметрами "по умолчанию") автоматически запоминаются и часто с контекстной привязкой к программе )+ может брать в том прядке котором выбирали при зажатом shift-е ( но это не точно ). Вообщем (ИМХО) проще пересортировать "вручную" (в дополнительном списке строк) или (если это совсем критично) сделать свою версию диалога .
Последний раз редактировалось Alex2013 31.01.2024 21:50:27, всего редактировалось 4 раза.
RRYTY
постоялец
Сообщения: 253
Зарегистрирован: 25.12.2021 09:00:32

Сообщение RRYTY »

"Write once, compile anywere."
ZWolol писал(а):собрал один раз и работает везде
Круто! :-D
Alex2013
долгожитель
Сообщения: 3211
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

RRYTY писал(а):Круто!
...Только ОСы об это не знают, они неграмотные! :wink:
Лозунги дело хорошее, а хорошие лозунги еще лучше, однако, не все так хорошо как кажется!
(Многие примеры действительно собираются где угодно, но вот того что-бы реальный проект сходу одинаково хорошо заработал на нескольких платформах я еще ни разу не встречал ) :idea:
Последний раз редактировалось Alex2013 31.01.2024 21:48:49, всего редактировалось 1 раз.
xchgeaxeax
постоялец
Сообщения: 198
Зарегистрирован: 11.05.2023 02:51:40

Сообщение xchgeaxeax »

Alex2013 писал(а):Порядок выбора в OpenDialog по идее берется из системы
В системных диалогах под Windows из comdlg32.dll все работает. А вот диалоги из Gtk или Qt как раз таки этот порядок не сохраняют. Если надо работать только под Windows и не нужна кроссплатформенность, тогда просто используйте WinAPI. Иначе действительно лучше сконструировать своё окно и использовать его.

Причем о порядке выбора файлов пользователем не сказано ни у Qt, ни у Gtk.
RRYTY
постоялец
Сообщения: 253
Зарегистрирован: 25.12.2021 09:00:32

Сообщение RRYTY »

Alex2013 писал(а):вот того что-бы реальный проект сходу одинаково хорошо заработал на нескольких платформах я еще ни разу не встречал
Lazarus это рабочий проект. Как бы с ним встретиться?! :-D
ZWolol
новенький
Сообщения: 21
Зарегистрирован: 06.01.2023 05:49:21

Сообщение ZWolol »

>Порядок выбора в OpenDialog по идее берется из системы
Это первое, что я подумал но...

Перечень выбранных файлов отображается в строке.
Все нажатые с Ctrl добавляются в начало строки выбора и даже можно туда самому дописать.
Но после нажатия кнопки 'открыть' порядок будет отсортирован.

Конечно можно просто сделать копию с компоненты и исправить...

P.S.
Мне нравится IDE у борланда.
Билдер закрыли, Дельфи платный, а Лазарус бесплатный аналог.
А бесплатному в зуб...

Когда вышел Билдер С++ 3.0 там было море ошибок, но это нормально.
Выпустили большой патч и стало возможным работать.
Сейчас уже столько лет прошло, а здесь до сих пор какие-то проблемы.
Хотя я взял самое элементарное.
Ответить