![]() |
Диалог OpenFile
В VCL есть несколько стандартных диалогов - среди них - диалог OpenDialog. Подскажите, как унаследовать от него (или какой-то другой способ) другой диалог, который может передавать в программу сразу несколько имен файлов для открытия, а не один
|
Sir Z
Так у этого диалога есть же свойство ofAllowMultiSelect, разрешающее множественный выбор файлов... |
А вот меня этот вопрос тоже интересует. Сделал я этот MultiSelect, как я понял, по умолчанию выдается диалог устаревшего образца. И даже удалось это побороть. Только я не смог разобраться, в каком формате выдается путь к каталогу и имена файлов. Или я туплю, или у меня где-то это дело режется раньше времени по какому-то нолику-разделителю. Где бы посмотреть подробные разъяснения?
|
Sir Z
Если что,то я объясняю на основе WinAPI,а не VCL. Цитата:
Итак,мы выставляем в структуре OPENFILENAME флаг OFN_ALLOWMULTISELECT. При выборе нескольких файлов в принимающем буфере путь директории отделяется от файловой части нулевым байтом.В свою очередь названия файлов также разделяются между собою нулевыми байтами,и всё это дело,в конце концов,завершается двумя нулевыми байтами. Если же был выбран только один файл,то принимающий буфер не содержит нулевого байта между директорией и файловой частью. В структуре OPENFILENAME есть поле nFileOffset,которое является смещением относительно начала принимающего буфера до файловой части.Мы его будем использовать. Теперь код: Код:
var |
Спасибо, попробую применить!
|
Да, нашел свою ошибку: не использовал nFileOffset, в результате получал только папку, до первого нулевого байта. Спасибо!
|
Время: 16:56. |
Время: 16:56.
© OSzone.net 2001-