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
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;