Вопрос про TOpenDialog

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

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

Вопрос про TOpenDialog

Сообщение ZWolol » 30.01.2024 16:57:22

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

Как мне выбрать файлы в определенном порядке?
Или опять мне нужно искать костыли и использовать что-то другое?
ZWolol
новенький
 
Сообщения: 21
Зарегистрирован: 06.01.2023 06:49:21

Re: Вопрос про TOpenDialog

Сообщение sts » 30.01.2024 17:45:09

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

Добавлено спустя 50 секунд:
посмотрите может порядок просто становится обратный
sts
постоялец
 
Сообщения: 430
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Re: Вопрос про TOpenDialog

Сообщение xchgeaxeax » 30.01.2024 18:35:40

Попробуйте извлекать файлы из openDialog.Files через Pop
Код: Выделить всё
if OpenDialog1.Execute then
  while OpenDialog1.Files.Count > 0 do
    ListBox1.Items.Add(OpenDialog1.Files.Pop);
xchgeaxeax
постоялец
 
Сообщения: 122
Зарегистрирован: 11.05.2023 03:51:40

Re: Вопрос про TOpenDialog

Сообщение ZWolol » 30.01.2024 20:49:40

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

Согласен с тем, что ни кто не обещал, что эта компонента будет работать по понедельникам однако...
Наверно опять погода нелетная...
ZWolol
новенький
 
Сообщения: 21
Зарегистрирован: 06.01.2023 06:49:21

Re: Вопрос про TOpenDialog

Сообщение slyubez » 31.01.2024 13:27:20

Ты бы хоть условия назвал. Операционную систему, например, фреймворк...
slyubez
постоялец
 
Сообщения: 174
Зарегистрирован: 31.03.2015 08:44:07

Re: Вопрос про TOpenDialog

Сообщение ZWolol » 31.01.2024 21:43:41

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 с сортировкой и исключением повторяющих.
...потому и не кусают.
ZWolol
новенький
 
Сообщения: 21
Зарегистрирован: 06.01.2023 06:49:21

Re: Вопрос про TOpenDialog

Сообщение Alex2013 » 31.01.2024 22:29:54

Порядок выбора в OpenDialog по идее берется из системы ( настройки стандартных диалогов (при использовании их с параметрами "по умолчанию") автоматически запоминаются и часто с контекстной привязкой к программе )+ может брать в том прядке котором выбирали при зажатом shift-е ( но это не точно ). Вообщем (ИМХО) проще пересортировать "вручную" (в дополнительном списке строк) или (если это совсем критично) сделать свою версию диалога .
Последний раз редактировалось Alex2013 31.01.2024 22:50:27, всего редактировалось 4 раз(а).
Alex2013
долгожитель
 
Сообщения: 3039
Зарегистрирован: 03.04.2013 11:59:44

Re: Вопрос про TOpenDialog

Сообщение RRYTY » 31.01.2024 22:33:04

"Write once, compile anywere."
ZWolol писал(а):собрал один раз и работает везде

Круто! :-D
RRYTY
постоялец
 
Сообщения: 207
Зарегистрирован: 25.12.2021 10:00:32

Re: Вопрос про TOpenDialog

Сообщение Alex2013 » 31.01.2024 22:38:52

RRYTY писал(а):Круто!

...Только ОСы об это не знают, они неграмотные! :wink:
Лозунги дело хорошее, а хорошие лозунги еще лучше, однако, не все так хорошо как кажется!
(Многие примеры действительно собираются где угодно, но вот того что-бы реальный проект сходу одинаково хорошо заработал на нескольких платформах я еще ни разу не встречал ) :idea:
Последний раз редактировалось Alex2013 31.01.2024 22:48:49, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 3039
Зарегистрирован: 03.04.2013 11:59:44

Re: Вопрос про TOpenDialog

Сообщение xchgeaxeax » 31.01.2024 22:48:21

Alex2013 писал(а):Порядок выбора в OpenDialog по идее берется из системы

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

Причем о порядке выбора файлов пользователем не сказано ни у Qt, ни у Gtk.
xchgeaxeax
постоялец
 
Сообщения: 122
Зарегистрирован: 11.05.2023 03:51:40

Re: Вопрос про TOpenDialog

Сообщение RRYTY » 31.01.2024 22:57:15

Alex2013 писал(а):вот того что-бы реальный проект сходу одинаково хорошо заработал на нескольких платформах я еще ни разу не встречал


Lazarus это рабочий проект. Как бы с ним встретиться?! :-D
RRYTY
постоялец
 
Сообщения: 207
Зарегистрирован: 25.12.2021 10:00:32

Re: Вопрос про TOpenDialog

Сообщение ZWolol » 01.02.2024 08:32:46

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

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

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

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

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


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru