Hrajeme si na Explorer - 6. díl - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Delphi

Hrajeme si na Explorer - 6. díl

6. listopadu 2001, 00.00 | V dalším dílu našeho seriálu dotvoříme do programu
funkci procházení adresářů pomocí dvojkliku na složce a
také přidáme tlačítko na přechod o úroveň výš v
adresářové hierarchii.

Procházení adresáři

Implementovat tuto funkci není nijak těžké. Musíme ošetřit dvojklik na položce výpisu FileView a zjistit, zda je daná položka adresářem. Nesmíme zapomenout, že zobrazené názvy adresářů ve výpisu se od skutečných názvů na disku mohou lišit (vzpomeňme například v tomto seriálu již jednou zmiňované skrývání přípon u souborů). Opravdový název souboru/adresáře, který položka představuje, tedy zjistíme se struktury TSearchRec, která dané položce přísluší. Připomeňme, že ukazatel na ni se skrývá ve vlastnosti Data dané položky. Pokud je položka doopravdy adresářem, zjištěné jméno přidáme k tomu, které je naspáno v editačním poli v horní části okna programu a výsledný adresář pak načteme do výpisu.

Teorii máme za sebou, zde je kód:

procedure TForm1.FileViewDblClick(Sender: TObject);
var
  RealName: string;
begin
  // je vybrána nějaká položka?
  if FileView.Selected <> nil then
    with FileView.Selected do
    begin
      RealName:= DirEdit.Text;  // aktuální adresář
      // není-li na konci lomítko, přidáme ho
      if RealName[Length(RealName)] <> '\' then
        RealName := RealName + '\';
      // přidáme jméno aktivní položky
      RealName:=RealName + PSearchRec(Data)^.Name;
      // je to oprvdu adresář?
      if DirectoryExists(RealName) then
      begin
        DirEdit.Text := RealName;
        ShowBtnClick(Self); // obnovíme zobrazení
      end;
    end;
end;

One level up

"Explorer" se zvýrazněnou ikonouPři procházení adresáři se hodí i funkce umožňující dostat se do nadřazeného adresáře v hierarchii. Na formulář tedy umístíme SppedBtn s patřičnou ikonou (viz obrázek) a k němu připojíme následujících několik řádek:

procedure TForm1.UpBtnClick(Sender: TObject);
var
  I, P: Integer;
begin
  // nejsme v kořenovém adresáři?
  if Length(DirEdit.Text) > 3 then
  begin
    // najdeme poslední zpětné lomítko
    P := 0;
    for I := Length(DirEdit.Text) downto 1 do
      if DirEdit.Text[I] = '\' then
      begin
        P := I;
        break;
      end;
    // našli jsme?
    if P > 0 then
    begin
      // "odtrhneme" část za lomítkem (včetně lomítka)
      DirEdit.Text := Copy(DirEdit.Text, 1, P - 1);
      ShowBtnClick(Self); // obnovíme zobrazení
    end;
  end;
end;

Funkce kódu je doufám jasná z komentářů. Jenom malá poznámka pro pokročilejší - ano, vyhledávání lomítka odzadu jde udělat i pomocí funkce StrRScan, ale to bychom museli "zatáhnout do hry" typ PChar, což by bylo malinko složitější a pro začátečníky možná matoucí.

Příště

Tímto bychom měli za sebou procházení adresářů. Dnes se už nedostalo na funkce spouštění souborů v asociované aplikaci a výběr více souborů, které jsem sliboval v minulém dílu. Buďte proto trpěliví, obojí by se mělo objevit v dalším dílu.

Aplikaci ve stavu vývoje po dnešním článku si můžete stáhnout zde.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Delphi  

 » Rubriky  » Windows  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: