![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
есть SHBrowseForFolder с созданием папки? [D4, D5, Win95/98, WinXP]
AllDontFire © (2005-10-30 18:42:00)Есть функция SHBrowseForFolder для получения каталога по выбору. Но, у неё нет кнопки создания новой папки.
Я посмотрел ресурсы shell32.dll (в WinXP, в Win98 не нашёл, там вообще нет 1087), там есть диалог №1087 (1079 без) с кнопкой создания папки, т.о. возможно есть и функция для работы с ним. Или может в структуре для SHBrowseForFolder что-то указать нужно?
AllDontFire (2005-10-31 09:13:00) [1]Спасибо!
gdaujk (2005-10-30 19:20:00) [2]AllDontFire
И точно, про стандартную возможность я перепутал. Есть возможность выводить список файлов директории в List Box'е с помощью DlgDirList и т. д.
А вот решение твоей проблеммы:
Inf.ulFlags := Your_Stile or BIF_NEWDIALOGSTYLE or or BIF_VALIDATE;
Максим (2005-10-30 18:54:00) [3]В Win9x кнопки "Создать папку", ВРОДЕ-БЫ, нет. Но на XP\2k пробовал вот так, получалось:
uses ...ShlObj, ComCtrls...
function ShowOpenDirDialog(TitleOfDialog: string): string;
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 := application.Handle;
BrowseInfo.pszDisplayName := @DisplayName;
TitleName := TitleOfDialog;
BrowseInfo.lpszTitle := PChar(TitleName);
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS + BIF_EDITBOX + $0040;
lpItemID := SHBrowseForFolder(BrowseInfo);
if lpItemId <> nil then begin
SHGetPathFromIDList(lpItemID, TempPath);
GlobalFreePtr(lpItemID);
Result:=TempPath;
end;
end;
возвращает string пути, указанного в диалоге :)