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

TTreeView компонент нарича дърво (фиг. 5.3).

TTreeView компонент - компоненти наследнички TOutiine предназначени за Delphi Borland има 1 и има за цел да покаже йерархични данни. Неговата "сърце" е собственост на

Предмети за недвижими имоти: TTreeNodes;

Фиг. 5.3. Външен вид TTreeView компонент

Този имот - списък на всички възли на дървото, от списъка, който има допълнителни полезните свойства. Всеки един от елементите в списъка - това е обект от тип TTreeNode. Свойствата му са показани в таблица. 5.3.

Таблица 5.3. Списъкът на свойствата на обекта TTreeNode

Елементите в списъка се появи в няколко колони, една под друга. Първата има малка икона и етикет, а останалите - някаква информация програмист. Ако ShowColumnHeaders собственост е настроена да заглавията на колоните истинска стойност, предоставена

Както и при предишното компонент, списъкът с елементи, съдържащи се в имота на предмети. Това е действителната списъка; нищо необичайно, с изключение на методи за добавяне / премахване, не е там. Всеки елемент на списъка (TListitem обект) на свой ред е подобен на TTreeNode компонент. Но той също така има важна разлика - това може да стане носител на голямо количество допълнителна информация. В допълнение към имота данни той също има имот

Subltems за недвижими имоти: TStrings;

С тази функция с всеки елемент може да бъде свързана с набор от низове и обекти. Но тези линии показват на потребителя?

Те трябва, в съответствие с контрола на разработчиците, се появи в vsReport на режима на дисплея. Първо, създаване на необходимия брой заглавия на колони (чрез попълване на колони имота), при положение, че първият ще бъде посветена на текста на този елемент от списъка (надпис имот). Следвайте същата колона ще покаже реда текст от свойствата на артикули. Subltems (фиг. 5.5).

Фиг. 5.5. Така че това ще бъде поставен в компонент информация режим TListView vsReport

Елементите в списъка могат да се сортират - е отговорен за това SortType собственост. Вие не само да сортирате елементите по име (това е възможно при стойност SortType, равен stText), но също така и на данни (стойности и stData stBoth), както се прави в полза Explorer. За осъществяването на тази категоризация е необходимо да се обработват събития OnColumnClick И OnComparel

Var ColNum. Цяло число;

процедура TMainForm.ListViewlColumnClick (Sender: TObject; Колона:

процедура TMainForm.ListViewlCompare (Sender: TObject; Iteml, ITEM2:

TListltem; Данни: Integer; Var сравнение: Integer);

ако ColNum = 0, тогава // дял

Сравнете: = CompareStr (Iteml.Caption, ITEM2 .Caption);

ITEM2 .Subltems [ColNum-1]); приключи;

Да разгледаме пример за използването на компоненти и TTreeview TListview. Когато съвместното им използване би било полезно? Ние избираме да направите данните в системния регистър картографиране система. От една страна, останалите бутони са подредени йерархично. От друга страна, всеки един от тях може да има няколко

различни видове стойности. По този начин, ние сме почти стигнал до същото решение като разработчиците на Microsoft, създаден помощната програма Registry Editor - за левицата дърво, нали - разширен списък на съдържанието им.

Фигура 5.6. Приложение Mini-Registry браузър Тук всички изходния код:

Обявата 5.1. Приложение Mini-Registry-браузър, главния модул

Windows, Съобщения, SysUtils, Уроци, графика, контроли, форми, диалогови прозорци,

StdCtrls, решетки, Outline, ComCtrls, ImgList, ExtCtrls;

процедура FormCreate (Sender: TObject);

процедура TreeViewlChange (Sender: TObject; възел: TTreeNode);

процедура FormDestroy (Sender: TObject);

процедура TreeViewlExpanded (Sender: TObject; възел: TTreeNode);

процедура TreeViewlGetlmagelndex (Sender: TObject; възел: TTreeNode);

Процедура ShowSubKeys (ParentNode: TTreeNode; дълбочина: цяло число);

функция GetFullNodeName (Node: TTreeNode): низ;

ако разширен след Imagelndex: = 2

друго Imagelndex: = 3;

За да работите с системния регистър с помощта на VCL TRegistry обект капсулира всички са добре проектирани за този функции на Windows API. В случай водачът на основната форма OnCreate се създава Reg обект, както и към двете заглавията (Колони собственост) добавя Listview1 списък.

Обяснения, изисквани от принципа за изграждане на клавишите за дърво. Първо, това приложение показва само един от бутоните на системата (а именно HKEY_LOCAL_MACHINE); е възможно да се замени или да добавят нови, ако желаете. На второ място, е опит да се изгради цялата клавиши "клонест" дървото просто отнема твърде много време и най-вероятно няма да се хареса на потребителите. Спомнете си, защото полезност Registry Editor работи доста бързо. Следователно, необходимо е да се изгради едно дърво динамично - създаде и да се покаже на детето възли по време на разгръщането на възела родител. Той използва събитие OnExpand TreeView1 компонент.

Нека за момент. Марка, която възли бутон максимизира (с надпис "+"), тъй като възелът родител е без деца? Изходът е - по време на строителството на ключова проверка за това дали той има деца. Ако отговорът е да, тогава един (фиктивен) празен ключ се добавя към него. Единствената му роля - да се постави на системата "+" срещу възел майка.

Когато потребителят кликне върху бутона, маркирани като "+", и (метод вж. ShowSubKeys) възел родител е зададен, сляпо дете възел се отстранява и се заменя с реални възли са получени чрез сканиране на регистъра.

Ние оборудва единици снимки. За да направите това, imageList1 компонент покаже изображение, съответстващо на откритите и закритите папки. Спомнете си, че да се направи снимки и да се промени има специално събитие - OnGetlmageIndex И OnGetSelectedIndex. В този пример, тези две събития един манипулатор: отворен сайт, това съответства на сцената отворени папки, и свиване - затворен.

В заключение трябва да се каже за една много важна функция TListview компонент. Когато той не показва изобилие от информация, обработка на данни може да отнеме много, много дълго време и да заемат прекалено много памет. Изход - за превод на списъка на така наречената виртуална режим. Тя се отнася за случаите, когато елементите в списъка твърде много, и не е възможно да ги държи там от съображения за икономия на време и памет. Лекарството е проста:

1. Превод компонент във виртуална режим на настройка свойства OwnerData Истинската стойност.

2. информира списъка както трябва да бъде елементи на желаната дължина items.Count.

3. С цел да се предоставят необходимите данни, програмистът трябва да предостави за обработка на събития OnData, OnDataFind, OnDataHint и OnDataStateChange. Най-малкото, което трябва да се опише събитие манипулатор OnData на.

TLVOwnerDataEvent = процедура (подателя: TCbject; т: TListltem) на обект;

Прехвърлихте TListitem обект вътре манипулатор на събитие в динамично OnData "формализира" това - в пълен размер, от правото на собственост върху снимките.

Това събитие се случва преди всяко свое желание в списъка. Така че, ако събирането на данни за вашия списък отнема повече или по-малко дълъг период от време, е по-добре да не го свържете към събитие OnData - преначертаване значително забавено. В допълнение, в виртуален режим, за да сортирате списъка невъзможно.

Borland Delphi 7 прави чудесен пример по-горе - Virtual ListView. За него и се отнасят заинтересования читател.

Отговори на въпроси по TListview компонент могат да бъдат намерени на две места: "роден" d7vcl.hlp помощния файл и Windows Win32.hip помощния файл. Във втората от които информация се съдържа в описанието на съобщенията, изпратени от ListView класа на прозореца, както и съответните им макроси. Някои от тях ще ви позволи да се разшири функционалността на TListview компонент. Тези макроси се съдържат в CommCtrl.pas файл.


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