![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Диалог выбора и создания папки [D7]
newones © (2007-07-07 21:03:00)Подскажите, есть код для выбора папки
function OpenDir():String;
var
TitleName : string;
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);
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);
Result:=TempPath;
end;
end;
Как его доработать или вообще вопользоваться другим, для того чтобы появилась еще кнопка для создания папки.
DVM (2007-07-08 23:31:00) [1]
> Что бы масло было масляным?
угу
Anatoly Podgoretsky (2007-07-08 23:26:00) [2]Зачем это BIF_NEWDIALOGSTYLE если
BIF_USENEWUI = BIF_NEWDIALOGSTYLEor BIF_EDITBOX;
Что бы масло было масляным?
DVM (2007-07-08 23:15:00) [3]
uses Windows, ShellApi, ShlObj;
function BrowseFolderDialog(OwnerWnd: HWND; const Title: string): string;
var
bi: TBrowseInfo;
pidlBrowse: PItemIDList;
Buffer: array[0..MAX_PATH] of Char;
DispName: array[0..MAX_PATH] of Char;
begin
bi.hwndOwner := OwnerWnd;
bi.pidlRoot := nil;
bi.pszDisplayName := DispName;
bi.lpszTitle := PChar(Title);
bi.ulFlags := BIF_RETURNONLYFSDIRS or BIF_USENEWUI or BIF_NEWDIALOGSTYLE;
bi.lpfn := nil;
bi.lParam := 0;
bi.iImage := 0;
pidlBrowse := SHBrowseForFolder(bi);
if (pidlBrowse <> nil) then
if (SHGetPathFromIDList(pidlBrowse, @Buffer)) then
result := Buffer;
end;
Anatoly Podgoretsky (2007-07-07 21:34:00) [4]> newones (07.07.2007 21:18:02) [2]
Чем это?
Может ты не умеешь готовить?
Dib@zol (2007-07-07 21:32:00) [5]Проставляй в BrowseInfo.lpfn указатель на заданную тобой калбэк-функцию BrowseInfoProc и на мессидж BFFM_INITIALIZED проставляй этому диалогу свою оконную процедуру с помощью SetWindowLong. Потом из этого калбэка надо зашарашить кнопку на данный диалог. Ловить сообщения от этой кнопки должна будет оконная процедура, а в случае иных сообщений отвечать CallWindowProc'ом. Есть вопросы - пиши в ветку.
JanMihail (2007-07-07 21:27:00) [6]SelectDirectory выглядит так, как и в коде который указан в сабже.
Ну есть еще один вариант. Сделайте форму. На нее поместите компонент ShellTreeView с вкладки Samples. И три кнопки Ок, Отмена, Создать папку. По нажатии кнопки создать папку просто напишите такой код:
MkDir(ShellTreeView1.Path + '\' + '<имя папки>')
Ну и там естественно компоненты разместите как в диалоге выбора папки.
Anatoly Podgoretsky (2007-07-07 21:27:00) [7]BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS or BIF_USENEWUI
Kolan (2007-07-07 21:23:00) [8]> SelectDirectory выглядит старовато
Их там ДВЕ. Одна из них стандартная
newones (2007-07-07 21:18:00) [9]SelectDirectory выглядит старовато
JanMihail (2007-07-07 21:12:00) [10]смотрите SelectDirectory из модуля ShellAPI