Systemowe okno dialogowe

0

W jaki sposób wyświetlić systemowe okno dialogowe "Przeglądaj w poszukiwaniu folderu", umożliwiające wybór katalogu docelowego (można je zobaczyć w wielu instalatorach i self-extractorze WinRARa)?
Jeżeli ktoś wie, bardzo proszę o odpowiedź...

0

Kod ten napisał bodajże vegat, a znalazlem go na jego stronie (<url>vegat.idohost.com</url>) ;)

procedure TForm1.Button1Click(Sender: TObject); 
var 
  opt: TBrowseInfo; 
  buf: PChar; 
  dir,root : PItemIDList; 
begin 
  // rezerwujemy pamięć 
  GetMem(buf, MAX_PATH); 
  SHGetSpecialFolderLocation(Form1.Handle,CSIDL_DRIVES,root); 
  // ustalamy opcje dla okienka 
  with opt do 
    begin 
      hwndOwner:=Form1.Handle; 
      pidlRoot:=root; 
      pszDisplayName:=buf; 
      lpszTitle:='Przeglądaj w poszukiwaniu folderu:'; //tytuł okienka 
      ulFlags:=BIF_RETURNONLYFSDIRS; 
      lpfn:=nil; 
    end; 
  // wywołujemy okienko wyboru 
  dir:=SHBrowseForFolder(opcje); 
  if dir<>nil //jeśli coś wybrano 
    then begin 
            // pobieramy pełną ścieżkę do katalogu 
            SHGetPathFromIDList(dir,buf); 
            // wyświetlamy ścieżkę. Ty oczywiście możesz sobie coś z tym zrobić 
            ShowMessage(buf); 
          end; 
  // zwalniamy pamięć 
  FreeMem(buf); 
end;
0

albo komponent TJvBrowseForFolderDialog z pakietu JediVCL.

0

A wiecie jak w/w kod zapisać w cpp builder???

0

Człowieku, masz tu tylko WinAPI + przydzielanie i zwalnianie pamięci; przeczytaj jakiś kurs albo looknij do Win32SDK.

0

Można sobie uprościć kod ;)

Uses FileCtrl;

PROCEDURE TForm1.Button1Click(Sender: TObject);
var
 kat :String;
Begin
 //wywołanie okna dialogu i pobranie ścieżki do wskazanego katlogu
 SelectDirectory('Wybierz katalog', '',kat );
 Edit1.Text:=kat;
End;

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