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

Вниз

OpenDir   Найти похожие ветки 

 
Dir   (2004-07-16 20:12) [0]

Как можно вывести окно выбора директории?


 
Dolt ©   (2004-07-16 22:15) [1]

Function ExploreFolder(Title:String;Var Dir:String):Boolean;
var
 Malloc: IMalloc;
 Desktop: IShellFolder;
 pidlMyComputer: PItemIDList;
 pidlResult: PItemIDList;
 pidlInitialFolder: PItemIDList;
 bi: TBrowseInfo;
 ProgramFilesDir: WideString;
 CharsDone: ULONG;
 dwAttributes: DWORD;
begin
 result:=False;
 if SUCCEEDED(SHGetMalloc(Malloc)) then
 try // acquire shell namespace root folder
   if SUCCEEDED( SHGetDesktopFolder( Desktop ) ) then
   try // acquire folder that will serve as root in dialog
     if SUCCEEDED( SHGetSpecialFolderLocation( 0, CSIDL_DRIVES, pidlMyComputer ) ) then
     try // acquire PIDL for folder that will be selected by default
       if
         SUCCEEDED(
           Desktop.ParseDisplayName( 0, nil, PWideChar(ProgramFilesDir), CharsDone,
           pidlInitialFolder, dwAttributes ))
       then
       try
         SetLength(Dir, MAX_PATH );
         FillChar( bi, sizeof(bi), 0 );
         bi.pidlRoot := pidlMyComputer; // roots from "My Computer"
         bi.pszDisplayName := PChar(Dir);
         bi.lpszTitle := PChar(Title);
         bi.ulFlags := BIF_STATUSTEXT;
         pidlResult := SHBrowseForFolder( bi );
         if Assigned(pidlResult) then
         try
           SetLength(Dir, MAX_PATH );
           result:=true;
           SHGetPathFromIDList( pidlResult, PChar(Dir));
           Dir:=String(PChar(Dir));
         finally
           Malloc.Free( pidlResult ); // release returned value
         end;
       finally
         Malloc.Free( pidlInitialFolder ); // release PIDL for folder that
                                           // was selected by default
       end;
     finally
       Malloc.Free( pidlMyComputer ); // release folder that was served as root in dialog
     end;
   finally
     Desktop := nil; // release shell namespace root folder
   end;
 finally
   Malloc := nil; // release shell"s allocator
 end;
end;

(c) Не мое - нашел в инете


 
Dimaxx   (2004-07-16 23:55) [2]

SHBrowseForFolder из shellapi


 
Dimaxx   (2004-07-16 23:56) [3]

Тьфу, нет его там. Вот декларация...

function SHBrowseForFolder(var lpbi: TBrowseInfo): PItemIDList; stdcall; external "shell32.dll" name "SHBrowseForFolderA";

TBrowseInfo = record
 hwndOwner: HWND;
 pidlRoot: PItemIDList;
 pszDisplayName: PAnsiChar;  { Return display name of item selected. }
 lpszTitle: PAnsiChar;      { text to go in the banner over the tree. }
 ulFlags: UINT;           { Flags that control the return stuff }
 lpfn: Pointer; //TFNBFFCallBack;
 lParam: LPARAM;          { extra info that"s passed back in callbacks }
 iImage: Integer;         { output var: where to return the Image index. }
end;


 
Григорьев Антон ©   (2004-07-17 08:16) [4]

Функция SelectDirectiry из модуля FileCtrl



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

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

Наверх





Память: 0.45 MB
Время: 0.031 c
1-1092493911
Kirsanch
2004-08-14 18:31
2004.08.29
TService


1-1092202179
FastByte
2004-08-11 09:29
2004.08.29
вставка слов в объект класса TRichEdit


3-1091700236
Smart
2004-08-05 14:03
2004.08.29
MySQL и Delphi


14-1092221156
Иван Шихалев
2004-08-11 14:45
2004.08.29
Про слова


3-1091822632
Денисыч
2004-08-07 00:03
2004.08.29
Как защищать данные от просмотра ?





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