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;