Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.01;
Скачать: CL | DM;

Вниз

OpenDir   Найти похожие ветки 

 
Medved_   (2007-02-07 11:58) [0]

Уважаемые мастера.
Скажите, а можно реализовать диалог,
как OpenDialog, только без Combobox для
имени файла и его типа.
То есть диалог для открытия каталога, чтобы
присутствовали кнопки уровень, создание новой паки, вид.
Например, как в 1с, когда регистрируешь информационную базу.
Спасибо.


 
clickmaker ©   (2007-02-07 12:03) [1]

SHBrowseForFolder()


 
Medved_   (2007-02-07 14:05) [2]

SHBrowseForFolder - я не могу найти, как
включить combobox для дисков, сет и др.,
как вверху, в стандартном диалоге.
И как вообще ее шире использовать?
Вот сама функция

var
myDir: string;

function BrowseCallbackProc(hwnd: HWND; uMsg: UINT; lParam: LPARAM; lpData:
 LPARAM): integer; stdcall;
begin
 Result := 0;
 if uMsg = BFFM_INITIALIZED then
   SendMessage(hwnd, BFFM_SETSELECTION, 1, LongInt(PChar(myDir)))
end;

function SelectDirectory(const Caption: string; const Root: WideString;
 var Directory: string): Boolean;
var
 WindowList: Pointer;
 BrowseInf!
 o: TBrowseInfo;
 Buffer: PChar;
 RootItemIDList, ItemIDList: PItemIDList;
 ShellMalloc: IMalloc;
 IDesktopFolder: IShellFolder;
 Eaten, Flags: LongWord;
begin
 myDir := Directory;
 Result := False;
 FillChar(BrowseInfo, SizeOf(BrowseInfo), 0);
 if (ShGetMalloc(ShellMalloc) = S_OK) and (ShellMalloc <> nil) then
 begin
   Buffer := ShellMalloc.Alloc(MAX_PATH);
   try
     RootItemIDList := nil;
     if Root <> "" then
     begin
       SHGetDesktopFolder(IDesktopFolder);
       IDesktopFolder.ParseDisplayName(Application.Handle, nil,
         POleStr(Root), Eaten, RootItemIDList, Flags);
     end;
     with BrowseInfo do
     begin
       hwndOwner := Application.Handle;
       pidlRoot := RootItemIDList;
       pszDisplayName := Buffer;
       lpfn := @BrowseCallbackProc;
       lParam := Integer(PChar(Directory));
       lpszTitle := PChar(Caption);
       ulFlags := BIF_RETURNONLYFSDIRS or $0040 or BIF_EDITBOX or
       BIF_STATUSTEXT;
     end;
     WindowList := DisableTaskWindows(0);
     try
       ItemIDList := ShBrowseForFolder(BrowseInfo);
     finally
       EnableTaskWindows(WindowList);
     end;
     Result := ItemIDList <> nil;
     if Result then
     begin
       ShGetPathFromIDList(ItemIDList!
         , Buffer);
       ShellMalloc.Free(ItemIDList);
       Directory := Buffer;
     end;
   finally
     ShellMalloc.Free(Buffer);
   end;
 end;
end;


 
clickmaker ©   (2007-02-07 15:26) [3]


> [2] Medved_   (07.02.07 14:05)
> SHBrowseForFolder - я не могу найти, как
> включить combobox для дисков, сет и др

а в дереве разве их не видишь?



Страницы: 1 вся ветка

Текущий архив: 2007.04.01;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.027 c
11-1151607749
parovoZZ
2006-06-29 23:02
2007.04.01
На чём отобразить рисунок?


2-1173179877
Marat
2007-03-06 14:17
2007.04.01
читаю файл


2-1173691444
kyn66
2007-03-12 12:24
2007.04.01
Выбор "горичих" клавиш


1-1170758544
IMHO
2007-02-06 13:42
2007.04.01
File access denied and MkDir


1-1170938140
linox
2007-02-08 15:35
2007.04.01
Форма и панель задач