Страница 1 из 1

Вопрос про TOpenDialog

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

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

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

СообщениеДобавлено: 30.01.2024 17:45:09
sts
по идее, порядок меняться не должен, вот только никто этого не обещал.

Добавлено спустя 50 секунд:
посмотрите может порядок просто становится обратный

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

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

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

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

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

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

СообщениеДобавлено: 31.01.2024 13:27:20
slyubez
Ты бы хоть условия назвал. Операционную систему, например, фреймворк...

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

СообщениеДобавлено: 31.01.2024 21:43:41
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 с сортировкой и исключением повторяющих.
...потому и не кусают.

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

СообщениеДобавлено: 31.01.2024 22:29:54
Alex2013
Порядок выбора в OpenDialog по идее берется из системы ( настройки стандартных диалогов (при использовании их с параметрами "по умолчанию") автоматически запоминаются и часто с контекстной привязкой к программе )+ может брать в том прядке котором выбирали при зажатом shift-е ( но это не точно ). Вообщем (ИМХО) проще пересортировать "вручную" (в дополнительном списке строк) или (если это совсем критично) сделать свою версию диалога .

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

СообщениеДобавлено: 31.01.2024 22:33:04
RRYTY
"Write once, compile anywere."
ZWolol писал(а):собрал один раз и работает везде

Круто! :-D

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

СообщениеДобавлено: 31.01.2024 22:38:52
Alex2013
RRYTY писал(а):Круто!

...Только ОСы об это не знают, они неграмотные! :wink:
Лозунги дело хорошее, а хорошие лозунги еще лучше, однако, не все так хорошо как кажется!
(Многие примеры действительно собираются где угодно, но вот того что-бы реальный проект сходу одинаково хорошо заработал на нескольких платформах я еще ни разу не встречал ) :idea:

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

СообщениеДобавлено: 31.01.2024 22:48:21
xchgeaxeax
Alex2013 писал(а):Порядок выбора в OpenDialog по идее берется из системы

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

Причем о порядке выбора файлов пользователем не сказано ни у Qt, ни у Gtk.

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

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


Lazarus это рабочий проект. Как бы с ним встретиться?! :-D

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

СообщениеДобавлено: 01.02.2024 08:32:46
ZWolol
>Порядок выбора в OpenDialog по идее берется из системы
Это первое, что я подумал но...

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

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

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

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