Könyvtárfa, delphisite
Ma beszéljünk arról, hogyan használhatjuk a TreeView-ot a könyvtárfa létrehozásához, vagyis az Explorer böngészőjének bal oldalához. A legegyszerűbb módszer a program elején megtalálni a lemez összes könyvtárát, és elhelyezni őket a TreeView-ba. De ez a módszer számos hátránnyal jár. Először is, hosszú, különösen, ha a zif engedélyezve van. Másodszor, ha bezárja és megnyitja a mappát, akkor nem frissül. Ezért a legjobb, ha először készítenünk egy listát a TreeView-ból egy "+" jelzéssel, vagyis meg kell adnunk, hogy vannak könyvtárak a lemezen. Ez nem mindig igaz, de annak ellenőrzésére, hogy ez igaz-e, hosszú a meghajtó miatt. Amikor könyvtárat vagy meghajtót próbál megnyitni, a program alkönyvtárakat keres és hozzáadja azokat a ListView-hoz. Minden alkönyvtárban a program megpróbál legalább egy alkönyvtárat keresni. A keresési eredmények függvényében a "+" jelenik meg, vagy sem.
Ez a program a "Delphi5 \ lib" könyvtárban található FileCtrl.res fájlokat használja.
végrehajtás
eljárás szintje # 40; ParentNode: TTreeNode # 41; ;
függvény Névjegyzék # 40; név: karakterlánc # 41;. logikai;
eredmény: = # 40; név <> '' # 41; és # 40; név <> '..' # 41; ;
sr, srChild: TSearchRec;
útvonal: = csomópont. Szöveg + '\' + út;
csomópont: = csomópont. Parent;
amíg csomópont = nulla;
ha FindFirst # 40; útvonal + '*. *'. faDirectory, sr # 41; = 0, akkor kezdődik
ha # 40; sr. Attr és faDirectory <> 0 # 41; és a DirectoryName # 40; sr. név # 41; akkor kezdj el
csomópont: = Form1. Treeview1. Terméket. AddChild # 40; ParentNode, sr. név # 41; ;
csomópontot. ImageIndex: = 0;
csomópontot. SelectedIndex: = 1;
csomópontot. HaveChildren: = hamis;
ha FindFirst # 40; út + sr. Név + '\ *. *'. faDirectory, srChild # 41; = 0, akkor kezdődik
ha # 40; srChild. Attr és faDirectory <> 0 # 41; és a DirectoryName # 40; srChild. név # 41;
majd csomópontot. HasChildren: = igaz;
amíg # 40; talál # 40; srChild # 41; <> 0 # 41; vagy csomópontot. HasChildren;
FindClose # 40; srChild # 41; ;
amíg meg nem találja # 40; sr # 41; <> 0;
end else ParentNode. HaveChildren: = hamis;
FindClose # 40; sr # 41; ;
eljárás TForm1. FormCreate # 40; Feladó: TObject # 41; ;
IconNames: tömb # 91; 0. 6 # 93; A string = # 40; 'CLOSEDFOLDER'. „OPENFOLDER”
'FLOPPY'. „Kemény”. „Hálózat”. „CD-ROM”. 'RAM' # 41; ;
bm, maszk: TBitmap;
Treeview1. Terméket. BeginUpdate;
Treeview1. Képek: = TImageList. CreateSize # 40; 16. 16 # 41; ;
bm: = TBitmap. létrehozása;
maszk: = TBitmap. létrehozása;
i: = alacsony # 40; IconNames # 41; magasra # 40; IconNames # 41; kezdeni
bm. Fogantyú: = LoadBitmap # 40; HInstance, PChar # 40; IconNames # 91; én # 93; # 41; # 41; ;
maszk. hozzárendelése # 40; bm # 41; ;
maszk. maszk # 40; clBlue # 41; ;
Treeview1. Képek. hozzáad # 40; bm, maszk # 41; ;
mert c: = "A" - "Z" kezdődik
DriveType: = GetDriveType # 40; PChar # 40; s # 41; # 41; ;
ha DriveType = 1, akkor folytassa;
csomópont: = Form1. Treeview1. Terméket. AddChild # 40; nulla. s # 41; ;
meghajtó DriveType típusa
DRIVE_REMOVABLE: csomópont. ImageIndex: = 2;
DRIVE_FIXED: csomópont. ImageIndex: = 3;
DRIVE_REMOTE: csomópont. ImageIndex: = 4;
DRIVE_CDROM: csomópont. ImageIndex: = 5;
másik csomópont. ImageIndex: = 6;
csomópontot. SelectedIndex: = csomópont. ImageIndex;
csomópontot. HasChildren: = igaz;
Treeview1. Terméket. EndUpdate;
eljárás TForm1. TreeView1Expanding # 40; Feladó: TObject; Csomópont: TTreeNode;
var AllowExpansion: Boolean # 41; ;
Treeview1. Terméket. BeginUpdate;
szint # 40; csomópont # 41; ;
Treeview1. Terméket. EndUpdate;