Как при помощи стандартного диалога TOpenDialog, дать пользователю выбор списка файлов и папок одновременно?
Т.е. при использовании MultiSelect можно выбирать несколько файлов и получить их в свойстве Files
Но при этом не передаются выбранные папки (хотя их выделить в окне можно)
Если взять TSelectFolderDialog, который является наследником от TOpenDialog, то пользователь может выбрать несколько папок, и их можно получить в свойстве Files
Но файлы при этом даже не отображаются.
Все что откопал в исходниках, это то что вот этом метод
управляет как отобразить список, SelectFolder - с папками или без
class function TWin32WSOpenDialog.GetVistaOptions(Options: TOpenOptions; SelectFolder: Boolean): FileOpenDialogOptions;
а этот метод получает строку с выбранным списком файлов(папок), который при каждом изменении этого списка, заносится в свойство Files
class function TWin32WSOpenDialog.GetFileName(ShellItem: IShellItem): String;
т.е. этот метод как раз и выдает список или файлов или папок
но IShellItem - это интерфейс...
Выбор списка файлов и папок
Модератор: Модераторы
Re: Выбор списка файлов и папок
Облазил весь тырнет, решения не нашел 
пришлось писать диалог самому.
Вот Архив с формой и модулем может кому понадобиться
пример использования
В режиме edMultiselect позволяет получить и выбранные файлы и выбранные каталоги, как отдельно в свойствах files и dirs, так и все вместе в свойстве all
Есть режим предпросмотра edShowPreview

P.s. Без исправления этой ошибки в модуле ShellCtrls.pas под Linux будет ошибку выдавать, если вы корень открыть попробуете. В Windows все работает штатно
пришлось писать диалог самому.
Вот Архив с формой и модулем может кому понадобиться
пример использования
Код: Выделить всё
Uses ExOpenDlg;
....
var ExOd:TExOpenDialog;
Begin
ExOd:=TExOpenDialog.Create(nil);
ExOd.filters:='все файлы|*.*|lazarus|*.pas;*.lpr';
ExOd.FilterIndex:=1;
ExOd.Options:=[edResize,edMultiSelect];
if ExOd.Execute Then
Begin
Memo1.lines.Append(ExOd.Files.Text);
Memo1.Lines.Append(ExOd.Dirs.Text);
End;
ExOd.Free;
end;
Есть режим предпросмотра edShowPreview

P.s. Без исправления этой ошибки в модуле ShellCtrls.pas под Linux будет ошибку выдавать, если вы корень открыть попробуете. В Windows все работает штатно
