Programowanie w języku Delphi

SelectDirectory

  • 2007-11-28 22:37
  • 3 komentarze
  • 2253 odsłony
  • Oceń ten tekst jako pierwszy
SelectDirectory
Moduł: FileCtrl


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.

II wersja:

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ż:

3 komentarze

mariosoft 2014-12-24 22:33

Aby wyświetlić "Mój komputer",  podaj pusty parametr zamiast "C:\" czyli "" bez spacji :)

if SelectDirectory('Wybierz katalog', '', katalog) then

Opi 2012-03-24 18:05

"Mój komputer" nie może być, gdyż nie jest to fizycznie ścieżka do dysku lub katalogu.

Pegii 2012-03-23 01:59

Czy i jak da się zrobić by zamiast C:\ był mój komputer?