Народ. Вот по этой ссылке нашел примеры выбора каталога: http://forum.vingrad.ru/topic-103210.html У кого на данный момент есть сеть или кто знает будет ли выбираться каталог другой машины через Сетевое окружение сообщите пжлста! (Меня конкретно интересуют коды Romikgy (он самый первый) и Sunvas)!!! Лучше их сюда перекину: Первый код:
| Код | uses ShlObj;
{....}
procedure CallBack(wnd: hWnd; uMsg: UINT; lParam, lpData: LParam) stdcall; begin SendMessage(wnd, BFFM_ENABLEOK, 0, 1); end;
procedure TForm1.Button1Click(Sender: TObject); var bi: TBrowseInfo; s: PChar; PIDL, ResPIDL: PItemIDList; begin SHGetSpecialFolderLocation(Form1.Handle, CSIDL_DESKTOP, PIDL); s := StrAlloc(128); bi.hwndOwner := Form1.Handle; bi.pszDisplayName := s; bi.lpszTitle := 'Выбор прапки'; bi.pidlRoot := PIDL; bi.lpfn := addr(CallBack); {bi.ulFlags флаги, которые задают режим отображения диалога: BIF_BROWSEFORCOMPUTER - Возвратить только компьютеры. Если пользователь выбрал что-то отличное от компьютеров, то кнопка OK останется серой. BIF_BROWSEFORPRINTER - Возвратить только принтеры. Если пользователь выбрал что- то отличное от принтеров, то кнопка OK останется серой. BIF_RETURNONLYFSDIRS - Возвратить только папки файловой системы. Если пользователь выберет папки, которые не являются частью файловой системы, то кнопка OK останется серой. Это необходимо для того если ваша программа не работает с виртуальными папками вроде "Панель управления". BIF_BROWSEINCLUDEFILES - Диалог просмотра будет отображать файлы вместе с директориями. BIF_DONTGOBELOWDOMAIN - Не включать сетевые папки Доменного уровня ниже, чем в TreeView контроле. BIF_RETURNFSANCESTORS - В качестве выбора допустимы только объекты, представленные в файловой системе. BIF_STATUSTEXT - Включает область статуса в блок диалога. Функция может установить текст посылая сообщения блоку диалога. BIF_EDITBOX - В диалоговом окне будет присутствовать строка редактирования, таким образом пользователь может набрать имя элемента. BIF_VALIDATE - Если пользователь введёт неверное имя в строке редактирования, то диалоговое окно вызовет функцию обратного вызова приложения по сообщению BFFM_VALIDATEFAILED.} ResPidl := SHBrowseForFolder(BI); SHGetPathFromIDList(ResPidl, s); Form1.Caption := s; end;
|
Второй код:
| Код | uses ShellAPI, ShlObj;
procedure TForm1.Button1Click(Sender: TObject); var TitleName : string; lpItemID : PItemIDList; BrowseInfo : TBrowseInfo; DisplayName : array[0..MAX_PATH] of char; TempPath : array[0..MAX_PATH] of char; begin FillChar(BrowseInfo, sizeof(TBrowseInfo), #0); BrowseInfo.hwndOwner := Form1.Handle; BrowseInfo.pszDisplayName := @DisplayName; TitleName := 'Please specify a directory'; BrowseInfo.lpszTitle := PChar(TitleName); BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS; lpItemID := SHBrowseForFolder(BrowseInfo); if lpItemId <> nil then begin SHGetPathFromIDList(lpItemID, TempPath); ShowMessage(TempPath); GlobalFreePtr(lpItemID); end; end;
|
|