Показать сообщение отдельно
  #10  
Старый 04.05.2009, 16:22
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Сообщение

Есть два варианта процедуры SelectDirectory, в зависимости какой используешь, будут разные графические интерфейсы, да и код у них разный, можешь посмотреть исходник FileCtrl. Но вот кнопку создания новой папки туда не добавить. Поэтому процедуру вызова диалога надо писать самому, добавив необходимый флаг:
Код:
function ShowChooseDirDialog: String;
const
  TitleName = 'Укажите папку назначения'; // это подсказка
var
  lpItemID: PItemIDList;
  BrowseInfo: TBrowseInfo;
  DisplayName: array[0..MAX_PATH] of Char;
  TempPath: array[0..MAX_PATH] of Char;
begin
  Result := '';
  FillChar(BrowseInfo, sizeof(TBrowseInfo), 0);
  //Здесь нужно использовать именно Application.Handle
  BrowseInfo.hwndOwner := Application.Handle;
  BrowseInfo.pszDisplayName := @DisplayName;
  BrowseInfo.lpszTitle := @TitleName[1];
  // NEWDIALOGSTYLE - будет добавлена кнопка "Создать папку"
  BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS or BIF_NEWDIALOGSTYLE;
  lpItemID := SHBrowseForFolder(BrowseInfo);
  if lpItemID <> nil then
  begin
    SHGetPathFromIDList(lpItemID, TempPath);
    Result := String(TempPath);
    GlobalFreePtr(lpItemID);
  end;
end;
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887
Ответить с цитированием