wybór katalogu - 'duże' okno

0

witam

jak wyswietlic takie duze okno wyboru katalogu Windows'a, nie chodzi mi o takie okno jak SelectDirectory tylko to wieksze

0

Chodzi Ci o "Przeglądaj w poszukiwaniu folderu"? Jest komponent do tego w pakiecie JEDI oraz jest jakaś funkcja WinAPI (SHBrowserForFolder miała w nazwie chyba ;))

0

Przecież wystarczy komponent, który już masz w pakiecie Delphi :D

ShellListView lub ShellTreeView z zakładki Samples i odpowiednie wyskalowanie na całą formę i ewentualnie ustalenie ViewStyle według gustu...

0

Cześć
O takie cosik chodzi ? [???]

Uses ActiveX, ShlObj, 

FUNCTION WybierzKatalog(uchwyt :THandle) :String;
var
 browser   :TBrowseInfo;
 buf       :PChar;
 dirs,root :PItemIDList;
 alloc     :IMalloc;
Begin
 SHGetMalloc(alloc);               //pobieranie obiektu zarządzającego pamięcią
 buf:= Alloc.Alloc(Max_Path);                 //przydzielenie pamięci na string
 //ograniczenie wybóru tylko do katalogu "Menu Start\Programs"
 SHGetSpecialFolderLocation(uchwyt,CSIDL_DESKTOP,root);
 //ustawianie parametrów okienka systemowego...
 with browser do
 begin
   HwndOwner:= uchwyt;                               //przydzielony uchwyt okna
   //PidlRoot:= root;                      //pokazuje zamkniętą gałąź katalogów
   PidlRoot:= nil;                           //pokazuje otwartą gałąź katalogów
   PszDisplayName:= buf;
   LpszTitle:= 'Wskazany katalog:';            //etykieta przed listą katalogów
   UlFlags:= 1; //Ulflags = 0 powoduje pokazanie kat. drukarek,panelu ster itp.
   Lpfn:= nil;
 end;
 //pobieranie nazwy...
 try
   dirs:= SHBrowseForFolder(browser);           //pokazanie okienka systemowego
   SHGetPathFromIDList(dirs ,buf);       //pobiernie pełnej ścieżki do katalogu
   Result:= buf;                         //pobieranie nazwy katalogu do funkcji
 finally
   Alloc.Free(root);
   Alloc.Free(buf);
 end;
End; 
0

Przynajmniej w D7 jest wersja SelectDirectory upraszczająca użycie SHBrowseForFolder

0

Witam,

potrzebuje dokladnie tego samego okna tylko że w BCB, z góry dzieki za pomoc. :)

//Edit
Znalazłem najprostrze rozwiązanie , może komuś sie przyda ;P

include <FileCtrl.hpp>

AnsiString folder;
if (SelectDirectory("Wybierz folder.", "", folder))
{
ShowMessage("Wybrany folder to " + folder);
}

Wiem, wystarczyło poszukać [diabel]

1 użytkowników online, w tym zalogowanych: 0, gości: 1