Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.046 c
2-1201310538
BBCHa
2008-01-26 04:22
2008.02.17
Создание сервисов


2-1201374829
TFileStream
2008-01-26 22:13
2008.02.17
При записи в файл через TFileStream и TWriter в файл попадает мусор


15-1200319830
vajo
2008-01-14 17:10
2008.02.17
Проблема работы принера HP 1018 на WinVista Busines.


15-1200295245
TUser
2008-01-14 10:20
2008.02.17
Ашипка вышла :)


2-1201435769
Alex_Storm
2008-01-27 15:09
2008.02.17
DBCombobox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский