SelectDirectory
AdamPL
function SelectDirectory(const Caption: string; const Root: WideString; var Directory: string; Options: TSelectDirExtOpts = [sdNewUI]; Parent: TWinControl = nil): Boolean; overload;
Powyższa funkcja to enkapsulowana funkcja WinApi BrowseForFolder
. Funkcja SelectDirectory
umożliwia wyświetlenie okienka dialogowego w którym użytkownik wskazuje katalog. Aby użyć tej funkcji musimy dołączyć do sekcji Uses moduł FileCtrl.
Objaśnienie definicji funkcji SelectDirectory:
const Caption: string
- Napis, który pojawi się w górnej części okienka dialogowego.
const Root: WideString
- Domyślnie wybrany katalog.
var Directory: string
- W tym polu zostanie zwrócony katalog jeżeli użytkownik kliknie w wywołanym okienku OK.
Options: TSelectDirExtOpts = [sdNewUI]
- Determinuje m.in. jak funkcja zachowa się w przypadku gdy użytkownik wybierze nieistniejący katalog. Domyślna wartość
sdNewUI
. Parametr opcjonalny.
Parent: TWinControl = nil
- Określa rodzica okienka. Domyślna wartość
nil
. Parametr opcjonalny.
Listing #1:
var
SelectedDir: String;
begin
if SelectDirectory('Wybierz katalog', 'C:\Windows', SelectedDir) then
//zdarzenie które wykona się po naciśnięciu przycisku OK
ShowMessage('Wybrano folder: ' + SelectedDir);
else
//zdarzenie które wykona się po naciśnięciu przycisku Anuluj
ShowMessage('Nie wybrano żadnego katalogu.');
end;
Powyższy kod prezentuje sposób użycia funkcji SelectDirectory
. Proszę zwrócić uwagę na to, że pominąłem dwa ostatnie parametry Options oraz Parent, które są opcjonalne. Wykonanie powyższego kodu zaowocuje pojawieniem się okienka dialogowego zatytułowanego Wybierz katalog z domyślnie zaznaczonym katalogiem C:\Windows. W przypadku wybrania katalogu C:\Program Files i naciśnięcia przycisku OK funkcja zwróci wartość true, a następnie wyświetli komunikat: Wybrano folder: C:\Program Files. W przypadku naciśnięcia przycisku Anuluj lub zamknięcia okienka bez dokonania wyboru pojawi się komunikat: Nie wybrano żadnego katalogu.
<font size="4">II wersja:</span>
function SelectDirectory(var Directory: string; Options: TSelectDirOpts; HelpCtx: Integer): Boolean; overload;
Działanie II wersji funkcji SelectDirectory
jest bardzo podobne do pierwszej wersji przedstawionej powyżej. Efektem wywołania jest okienko dialogowe różniące się wyglądem od poprzedniego oraz wyświetlające poza katalogami także ich zawartość.
Objaśnienie definicji funkcji SelectDirectory:
var Directory: string
- To pole zawiera domyślnie wybrany katalog, zarazem zwracając wybrany katalog po naciśnięciu przycisku OK
Options: TSelectDirOpts
- Determinuje m.in. jak funkcja zachowa się w przypadku gdy użytkownik wybierze nieistniejący katalog.
HelpCtx: Integer
- Określa id treści pomocy.
Listing #2:
var
Directory: String;
Options: TSelectDirOpt;
begin
Directory:= 'C:\Windows';
if SelectDirectory(Directory, Options, 0) then
//zdarzenie które wykona się po naciśnięciu przycisku OK
ShowMessage('Wybrano folder: ' + Directory);
else
//zdarzenie które wykona się po naciśnięciu przycisku Anuluj
ShowMessage('Nie wybrano żadnego katalogu.');
end;
Wykonanie powyższego kodu zaowocuje pojawieniem się okienka dialogowego, które poza katalogami będzie wyświetlać również ich zawartość. Domyślnie wybranym katalogiem będzie C:\Windows. W przypadku wybrania katalogu C:\Program Files i naciśnięcia przycisku OK funkcja zwróci wartość true, a następnie wyświetli komunikat: Wybrano folder: C:\Program Files. W przypadku naciśnięcia przycisku Anuluj lub zamknięcia okienka bez dokonania wyboru pojawi się komunikat: Nie wybrano żadnego katalogu.
Zobacz też:
Aby wyświetlić "Mój komputer", podaj pusty parametr zamiast "C:" czyli "" bez spacji :)
if SelectDirectory('Wybierz katalog', '', katalog) then
"Mój komputer" nie może być, gdyż nie jest to fizycznie ścieżka do dysku lub katalogu.
Czy i jak da się zrobić by zamiast C:\ był mój komputer?