![]() |
|
|
#1
|
|||
|
|||
![]() Возможно ли, и если да то как, превратить стандартный OpenDialog или SaveDialog в Select-диалог, который должен только выбирать место, куда будут сохранены ранее выбранные файлы (то есть такое окно, в котором я могу выбрать путь, куда экспортировать файлы и чтобы больше ничего нельзя было менять, то есть строки с названием файла вообще не должно быть).
|
#2
|
|||
|
|||
![]() Есть специальная функция Win32 API, показвающая диалог выбора папки. Называется SHBrowseForFolder. Возвращает идентификатор, который можно преобразовать в путь с помощью функции SHGetPathFromIDList.
Вот например, готовая функция, отображающая диалог выбора пути и возвращающая строку с терминальным нулем, в которой записывается путь к выбранной папке. Код:
function TFaceForm.ShowChooseDirDialog: PChar; const TitleName = 'Укажите папку назначения'; // это подсказка, которая будет выведена в диалоге var lpItemID: PItemIDList; BrowseInfo: TBrowseInfo; DisplayName: array[0..MAX_PATH] of Char; TempPath: array[0..MAX_PATH] of Char; begin Result := nil; FillChar(BrowseInfo, sizeof(TBrowseInfo), #0); BrowseInfo.hwndOwner := FaceForm.Handle; BrowseInfo.pszDisplayName := @DisplayName; BrowseInfo.lpszTitle := @TitleName[1]; BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS; lpItemID := SHBrowseForFolder(BrowseInfo); if lpItemID <> nil then begin SHGetPathFromIDList(lpItemID, TempPath); Result := TempPath; GlobalFreePtr(lpItemID); end; end; Не подойдет? |
#3
|
||||
|
||||
![]() Можно использовать стандартую функцию SelectDirectory из модуля FileCtrl , которая делает то же самое. Не приходиться писать то, что уже написано
![]() Велик и могуч наш Object Pascal ! ICQ: 357-591-887 |
#4
|
|||
|
|||
![]() Видимо у нас разные версии delphi (у меня 7), потому как не могу найти ни SHBrowseForFolder ни SelectDirectory.
|
#5
|
||||
|
||||
![]() У меня тоже 7 версия.
Добавить необходимые модули не забыл ? Для использования функции SelectDirectory нужен модуль FileCtrl Для SHBrowseForFolder - ShlObj Велик и могуч наш Object Pascal ! ICQ: 357-591-887 |
#6
|
|||
|
|||
![]() Это те которые лежат в ...\Borland\Delphi7\Source\Vcl\ ?
или в ...\Borland\Delphi7\Lib\Debug\ ? |