Главная страница
    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.044 c
2-1201165294
vvrz
2008-01-24 12:01
2008.02.17
как получить имя листа Excel


2-1201174932
KROT
2008-01-24 14:42
2008.02.17
Нужна помощь по базе Фильтрация по Table(Paradox)


6-1179914860
Novic
2007-05-23 14:07
2008.02.17
Вызов метода на сервере приложений


2-1200923194
zeroed
2008-01-21 16:46
2008.02.17
Распарсить строку


4-1183499419
AllDontFire
2007-07-04 01:50
2008.02.17
Как прочитать CD-Text компакт-диска?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский