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

Вниз

Диалог выбора и создания папки   Найти похожие ветки 

 
newones   (2007-07-07 21:03) [0]

Подскажите, есть код для выбора папки
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;

Как его доработать или вообще вопользоваться другим, для того чтобы появилась еще кнопка для создания папки.


 
JanMihail ©   (2007-07-07 21:12) [1]

смотрите SelectDirectory из модуля ShellAPI


 
newones   (2007-07-07 21:18) [2]

SelectDirectory выглядит старовато


 
Kolan ©   (2007-07-07 21:23) [3]

> SelectDirectory выглядит старовато

Их там ДВЕ. Одна из них стандартная&#133


 
JanMihail ©   (2007-07-07 21:27) [4]

SelectDirectory выглядит так, как и в коде который указан в сабже.

Ну есть еще один вариант. Сделайте форму. На нее поместите компонент ShellTreeView с вкладки Samples. И три кнопки Ок, Отмена, Создать папку. По нажатии кнопки создать папку просто напишите такой код:
 MkDir(ShellTreeView1.Path + "\" + "<имя папки>")

Ну и там естественно компоненты разместите как в диалоге выбора папки.


 
Anatoly Podgoretsky ©   (2007-07-07 21:27) [5]

BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS or BIF_USENEWUI


 
Dib@zol ©   (2007-07-07 21:32) [6]

Проставляй в BrowseInfo.lpfn указатель на заданную тобой калбэк-функцию BrowseInfoProc и на мессидж BFFM_INITIALIZED проставляй этому диалогу свою оконную процедуру с помощью SetWindowLong. Потом из этого калбэка надо зашарашить кнопку на данный диалог. Ловить сообщения от этой кнопки должна будет оконная процедура, а в случае иных сообщений отвечать CallWindowProc"ом. Есть вопросы - пиши в ветку.


 
Anatoly Podgoretsky ©   (2007-07-07 21:34) [7]

> newones  (07.07.2007 21:18:02)  [2]

Чем это?
Может ты не умеешь готовить?


 
DVM ©   (2007-07-08 23:15) [8]

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-08 23:26) [9]

Зачем это BIF_NEWDIALOGSTYLE если
BIF_USENEWUI = BIF_NEWDIALOGSTYLE or BIF_EDITBOX;
Что бы масло было масляным?


 
DVM ©   (2007-07-08 23:31) [10]


> Что бы масло было масляным?

угу



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

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

Наверх




Память: 0.49 MB
Время: 0.023 c
2-1201100484
Тоник
2008-01-23 18:01
2008.02.17
stringtowidechar


1-1188308666
readline();
2007-08-28 17:44
2008.02.17
Unicode, UTF8


15-1200315233
asdf
2008-01-14 15:53
2008.02.17
разбор строки


2-1201324992
zsv3
2008-01-26 08:23
2008.02.17
Конвертация htm в txt. Или количество слов в htm документе.


15-1200503850
Александр Иванов
2008-01-16 20:17
2008.02.17
Виртуальный SMTP сервер