ПредишенСледващото

Днес нека да поговорим за това как да използвате с дървовидна структура, за да се направи една директория дърво, тоест, нещо подобно на лявата страна на Explorer. Най-лесният начин - е, когато започнете програма за намиране на всички директории на диска и ги подкрепям в дървовидна структура. Но този метод има няколко недостатъка. На първо място, това е дълъг, особено ако са включени ZIF. На второ място, дори и да се затвори и отвори някаква папка, тя няма да бъде актуализиран. Ето защо, най-добре е първо да се направи списък на дискове в TreeView с "+", а именно, да се отбележи, че има директории на диска. Това не винаги е вярно, но провери дали това е вярно, за дълго време, се дължи на устройството. Когато се опитате да разкрие директория или да карате програмата търси за поддиректории и ги добавя в ListView. Във всяка поддиректория на програмата се опитва да намери най-малко една поддиректория. В зависимост от резултатите от търсенето "+" се появява, или не.
Тази програма използва икони от FileCtrl.res файл, намиращ се в "Delphi5 \ либералните" в директорията.
изпълнение

Ниво процедура # 40; ParentNode: TTreeNode # 41; ;

функция DirectoryName # 40; име: низ # 41. булева;

резултат: = # 40; име <> '.' # 41; и # 40; име <> ".." # 41; ;

SR, srChild: TSearchRec;

път: = възел. Текст + '\' + пътека;

възел: = възел. майка;

докато възел = нула;

ако FindFirst # 40; път + "*. *". faDirectory, со # 41; = 0, тогава започва

ако # 40; SR. ATTR и faDirectory <> 0 # 41; и DirectoryName # 40; SR. име # 41; след това да започне

възел: = Form1. TreeView1. Предмети. AddChild # 40; ParentNode, SR. име # 41; ;

възел. ImageIndex: = 0;

възел. SelectedIndex: = 1;

възел. HasChildren: = фалшива;

ако FindFirst # 40; път + SR. Наименование + '\ *. * ". faDirectory, srChild # 41; = 0, тогава започва

ако # 40; srChild. ATTR и faDirectory <> 0 # 41; и DirectoryName # 40; srChild. име # 41;

След това възел. HasChildren: = вярно;

до # 40; намирам # 40; srChild # 41; <> 0 # 41; или възел. HasChildren;

FindClose # 40; srChild # 41; ;

докато Намери # 40; SR # 41; <> 0;

сложи край на друг ParentNode. HasChildren: = фалшива;

FindClose # 40; SR # 41; ;

процедура TForm1. FormCreate # 40; Подател: TObject # 41; ;

IconNames: масив # 91; 0 6 # 93; на низ = # 40; "CLOSEDFOLDER". "OPENFOLDER"

"FLOPPY". "Твърди". "Мрежа". "CDROM". "RAM" # 41; ;

т.м., маска: TBitmap;

TreeView1. Предмети. BeginUpdate;

TreeView1. Снимки: = TImageList. CreateSize # 40; 16. 16 # 41; ;

BM: = TBitmap. Създаване;

маска: = TBitmap. Създаване;

защото: = ниско # 40; IconNames # 41; високата # 40; IconNames # 41; започвайте

BM. Дръжка: = LoadBitmap # 40; HInstance, PChar # 40; IconNames # 91; аз # 93; # 41; # 41; ;

маска. Присвояване # 40; т.м. # 41; ;

маска. маска # 40; clBlue # 41; ;

TreeView1. Изображения. Добави # 40; т.м., маска # 41; ;

за C: = "А" до "Z" не започвайте

DriveType: = GetDriveType # 40; PChar # 40; ите # 41; # 41; ;

ако DriveType = 1 и след това да продължи;

възел: = Form1. TreeView1. Предмети. AddChild # 40; нула. ите # 41; ;

При DriveType на

DRIVE_REMOVABLE: възел. ImageIndex: = 2;

DRIVE_FIXED: възел. ImageIndex: = 3;

DRIVE_REMOTE: възел. ImageIndex: = 4;

DRIVE_CDROM: възел. ImageIndex: = 5;

друг възел. ImageIndex: = 6;

възел. SelectedIndex: = възел. ImageIndex;

възел. HasChildren: = вярно;

TreeView1. Предмети. EndUpdate;

процедура TForm1. TreeView1Expanding # 40; Подател: TObject; Възела: TTreeNode;

Var AllowExpansion: Булева # 41; ;

TreeView1. Предмети. BeginUpdate;

ниво # 40; възел # 41; ;

TreeView1. Предмети. EndUpdate;

Подкрепете проекта - споделете линка, благодаря!