Вопрос про TOpenDialog
Модератор: Модераторы
Вопрос про TOpenDialog
Хотел использовать TOpenDialog.
Указал ofAllowMultiSelect, все прекрасно работает.
Все выбранные файлы появляются в списке но, после нажатия Открыть, порядок выбранных файлов меняется!!!
Я убрал все другие опции и даже добавил ofDontAddToRecent, ни чего не помогает.
Как мне выбрать файлы в определенном порядке?
Или опять мне нужно искать костыли и использовать что-то другое?
Указал ofAllowMultiSelect, все прекрасно работает.
Все выбранные файлы появляются в списке но, после нажатия Открыть, порядок выбранных файлов меняется!!!
Я убрал все другие опции и даже добавил ofDontAddToRecent, ни чего не помогает.
Как мне выбрать файлы в определенном порядке?
Или опять мне нужно искать костыли и использовать что-то другое?
по идее, порядок меняться не должен, вот только никто этого не обещал.
Добавлено спустя 50 секунд:
посмотрите может порядок просто становится обратный
Добавлено спустя 50 секунд:
посмотрите может порядок просто становится обратный
-
xchgeaxeax
- постоялец
- Сообщения: 198
- Зарегистрирован: 11.05.2023 02:51:40
Попробуйте извлекать файлы из openDialog.Files через Pop
Код: Выделить всё
if OpenDialog1.Execute then
while OpenDialog1.Files.Count > 0 do
ListBox1.Items.Add(OpenDialog1.Files.Pop);С помощью Pop получается обратный порядок.
Но мне не нужна сортировка по алфавиту и свойство Sorted недоступно.
Согласен с тем, что ни кто не обещал, что эта компонента будет работать по понедельникам однако...
Наверно опять погода нелетная...
Но мне не нужна сортировка по алфавиту и свойство Sorted недоступно.
Согласен с тем, что ни кто не обещал, что эта компонента будет работать по понедельникам однако...
Наверно опять погода нелетная...
Ты бы хоть условия назвал. Операционную систему, например, фреймворк...
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 с сортировкой и исключением повторяющих.
...потому и не кусают.
Версия: 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 с сортировкой и исключением повторяющих.
...потому и не кусают.
Порядок выбора в OpenDialog по идее берется из системы ( настройки стандартных диалогов (при использовании их с параметрами "по умолчанию") автоматически запоминаются и часто с контекстной привязкой к программе )+ может брать в том прядке котором выбирали при зажатом shift-е ( но это не точно ). Вообщем (ИМХО) проще пересортировать "вручную" (в дополнительном списке строк) или (если это совсем критично) сделать свою версию диалога .
Последний раз редактировалось Alex2013 31.01.2024 21:50:27, всего редактировалось 4 раза.
"Write once, compile anywere."

Круто!ZWolol писал(а):собрал один раз и работает везде
...Только ОСы об это не знают, они неграмотные!RRYTY писал(а):Круто!
Лозунги дело хорошее, а хорошие лозунги еще лучше, однако, не все так хорошо как кажется!
(Многие примеры действительно собираются где угодно, но вот того что-бы реальный проект сходу одинаково хорошо заработал на нескольких платформах я еще ни разу не встречал )
Последний раз редактировалось Alex2013 31.01.2024 21:48:49, всего редактировалось 1 раз.
-
xchgeaxeax
- постоялец
- Сообщения: 198
- Зарегистрирован: 11.05.2023 02:51:40
В системных диалогах под Windows из comdlg32.dll все работает. А вот диалоги из Gtk или Qt как раз таки этот порядок не сохраняют. Если надо работать только под Windows и не нужна кроссплатформенность, тогда просто используйте WinAPI. Иначе действительно лучше сконструировать своё окно и использовать его.Alex2013 писал(а):Порядок выбора в OpenDialog по идее берется из системы
Причем о порядке выбора файлов пользователем не сказано ни у Qt, ни у Gtk.
Lazarus это рабочий проект. Как бы с ним встретиться?!Alex2013 писал(а):вот того что-бы реальный проект сходу одинаково хорошо заработал на нескольких платформах я еще ни разу не встречал
>Порядок выбора в OpenDialog по идее берется из системы
Это первое, что я подумал но...
Перечень выбранных файлов отображается в строке.
Все нажатые с Ctrl добавляются в начало строки выбора и даже можно туда самому дописать.
Но после нажатия кнопки 'открыть' порядок будет отсортирован.
Конечно можно просто сделать копию с компоненты и исправить...
P.S.
Мне нравится IDE у борланда.
Билдер закрыли, Дельфи платный, а Лазарус бесплатный аналог.
А бесплатному в зуб...
Когда вышел Билдер С++ 3.0 там было море ошибок, но это нормально.
Выпустили большой патч и стало возможным работать.
Сейчас уже столько лет прошло, а здесь до сих пор какие-то проблемы.
Хотя я взял самое элементарное.
Это первое, что я подумал но...
Перечень выбранных файлов отображается в строке.
Все нажатые с Ctrl добавляются в начало строки выбора и даже можно туда самому дописать.
Но после нажатия кнопки 'открыть' порядок будет отсортирован.
Конечно можно просто сделать копию с компоненты и исправить...
P.S.
Мне нравится IDE у борланда.
Билдер закрыли, Дельфи платный, а Лазарус бесплатный аналог.
А бесплатному в зуб...
Когда вышел Билдер С++ 3.0 там было море ошибок, но это нормально.
Выпустили большой патч и стало возможным работать.
Сейчас уже столько лет прошло, а здесь до сих пор какие-то проблемы.
Хотя я взял самое элементарное.
