Delphi - TShellChangeNotifier és TShellTreeView komponensek jellemzői

forráskód letöltése
A Delphi mindegyik újabb verziójában találunk néhány új vizuális komponenst, melyek könnyebbé tesznek bizonyos funkciókat. Cikkünkben ezen új komponensekből mutatunk most be kettőt. A Samples paletta két eleméről van szó, melyek a TShellChangeNotifier és a TShellTreeView nevet viselik. A cikkben bemutatjuk jellemző tulajdonságaikat, használatuk módját.
TShellChangeNotifier komponens
A komponens segítségével arra van módunk, hogy a megadott elérési útvonalon – mint gyökérmappán – belül megtalálható mappa- és állományrendszert figyeljük, és az összetétel valamilyen megváltozásáról értesítést kapjunk. Ez a lehet valamely mappa, vagy állomány törlése, vagy éppen létrehozása, bemásolása.
A komponens két fontos property-vel rendelkezik:
Root
Osztály: TShellChangeNotifier
property Root: TRoot;
Egy karakterláncban adható meg a gyökér elérési útvonal, mely alatt figyeljük az összes, megadott paraméterrel rendelkező objektumot.
NotifyFilter
Osztály: TShellChangeNotifier
property NotifyFilter: TNotifyFilter;
Egy felsorolt típus elemit beállítva megadható, hogy milyen típusú változást figyeljen a komponens. Ezek az értékek a következők lehetnek:
Érték Magyarázat
nfFileNameChange A fájlnevek megváltozását figyeli.
nfDirNameChange A mappanevek megváltozását figyeli.
nfAttributeChange Az attribútumok változását figyeli.
nfSizeChange A méretek megváltozását figyeli.
nfWriteChange Az egyes alkotók írási jogosultságának megváltozását figyeli.
nfSecurityChange A biztonsági beállítások megváltozását figyeli.
WatchSubTree
Osztály: TShellChangeNotifier
property WatchSubTree: boolean;
Megadható, hogy vizsgálja-e a komponens a megadott elérési útvonal almappáit is, vagy sem.
TShellTreeView komponens
A másik igen hasznos komponens a TShellTreeView, melynek segítségével egy tetszőleges meghajtó elemeit jeleníthetjük meg egy fastruktúrában. Elegendő csupán egy property-ben megadnunk az elérési útvonalat. Jellemző tulajdonságai a következők:
UseShellImages
Osztály: TShellTreeView
property UseShellImages: boolean;
Megadható, hogy a mappák és állománynevek mellett képek is látszódjanak, mint a rendszer dialógusablakokban.
Root
Osztály: TShellTreeView
property Root: TRoot;
Megadható, hogy milyen elérési útvonal, vagy nevezetes mappa tartalma jelenjen meg a fában.
ObjectTypes
Osztály: TShellTreeView
property ObjectTypes: TShellObjectTypes;
A felsorolt típusban specifikálható, hogy milyen típusú objektumok jelenjenek meg csak a fában. A lehetséges értékek:
  • otFolders: Mappák
  • otNonFolders: nem-mappa elemek
  • otHidden: rejtett attribútummal rendelkező elemek is
A Root tulajdonságok mindkét komponens esetében egy dialógusablak segítségével adhatók meg szerkesztési időben. Az ablak felső részében egy nevezetes mappa, az alsó részében egy fizikai elérési útvonal adható meg.
A TShellChangeNotifier komponens esetében az OnChange eseményhez kell egy kezelőmetódust létrehoznunk, hogy értesüljünk a változás időpontjáról. A metódusban az aktuális időpillanatot írjuk ki a TListBox komponensbe.

procedure TForm1.ShellChangeNotifier1Change;
begin
  listBox1.Items.Add('Változott: ' + FormatDateTime('hh:nn:ss', Now));
end;
Tesztelendő a műveletet, a Form nyomógombjával a figyelt mappába – jelen esetben a Kedvencek mappába – másolható a mellékelt sample.txt állomány. A másolás után frissítjük a mappa fastruktúrát.
hFile := THandle(FileCreate(GetFolderPath + '\\sample.txt'));
FileClose(hFile);
ShellTreeView1.Refresh(ShellTreeView1.Items[0]);