ТТрееВиев Делпхи компонента приказује хијерархијску листу ставки - чворови дрвећа. Чвор је представљен текстом чвора и опционом сликом. Сваки чвор у приказу стабла инстанца је класе ТТрееНоде.
Док можете да испуните приказ стабла ставкама у време пројектовања, користећи ТрееВиев Итемс Едитор, у већини случајева бисте испунили приказ стабла у време извођења - у зависности од апликације.
Уређивач ставки ТрееВиев открива да постоји само неколико информација које можете „приложити“ чвору: текст и неколико индекса слика (за нормално стање, проширено, одабрано и слично).
У суштини, компонента погледа на дрво је лако програмирати. Постоји неколико метода за додавање нових чворова на дрво и постављање њихове хијерархије.
Ево како додати 10 чворова у приказ стабла (названих „ТрееВиев1“). Имајте на уму да својство Итемс пружа приступ свим чворовима на стаблу. АддЦхилд додаје нови чвор приказу стабла. Први параметар је надређени чвор (за изградњу хијерархије), а други параметар је текст чвора.
АддЦхилд враћа ново додан ТТрееНоде. У горе наведеном
узорак кода, свих 10 чворова се додају као коријенски чворови (немају надређени чвор).У свим сложенијим ситуацијама желите да ваши чворови носе више информација - по могућности да имају неке посебне вредности (својства) специфичне за пројекат који развијате.
Реците да желите да прикажете податке о ставкама-поруџбини купаца из своје базе података. Сваки купац може имати више поруџбина и свака наруџба се састоји од више предмета. Ово је хијерархијски однос који се може приказати у приказу стабла:
У вашој бази података било би више информација за сваку наруџбу и за сваки артикал. Приказ стабла приказује тренутно (само за читање) тренутно стање - и желите да видите детаље за одабрани налог (или чак по ставци).
Када корисник одабере чвор „Наручи_1_1“, желите да се детаљи наруџбе (укупна сума, датум итд.) Прикажу кориснику.
У то време можете дохватити тражене податке из базе, али морате знати јединствени идентификатор (рецимо интегер вриједност) изабраног налога да бисте преузели исправне податке.
Потребан нам је начин да похранимо овај идентификатор налога заједно са чвором, али не можемо да користимо својство Тект. Прилагођена вредност коју морамо да похранимо у сваки чвор је цели број (само пример).
Када се таква ситуација догоди, можда бисте били у искушењу да потражите својство Таг (многи Делпхи компоненти имају), али класа ТТрееНоде не излаже својство Таг.
Додајте прилагођене податке чворовима дрвета: ТрееНоде. Својство података
Својство Дата чвора дрвећа омогућава вам да повежете своје прилагођене податке са чвором дрвета. Подаци су поинтер и може указивати на објекте и записе. Приказивање КСМЛ (РСС феед) података у ТрееВиев-у показује како чувати врста записа променљива у својство Дата чвора дрвета.
Многе класе типа предмета излажу својство Дата - можете га користити за смештање било ког објекта заједно са ставком. Пример је ТЛистИтем компоненте ТЛистВиев. Ево га како додати објекте у својство Дата.
Додајте прилагођене податке чворовима дрвета: ТрееВиев. ЦреатеНодеЦласс
Ако не желите да користите својство Дата ТТрееНоде, већ бисте желели да свој ТрееНоде буде проширен са неколико својстава, Делпхи такође има решење.
Реците да желите да то можете учинити
Ево како проширити стандардни ТТрееНоде са неколико властитих својстава:
- Креирајте свој ТМиТрееНоде тако што ћете проширити ТТрееНоде.
- Додајте му стринг својство МиПроперти.
- Ручите ОнЦреатеНодеЦласс за приказ стабла како бисте одредили да би требало креирати класу чвора.
- Изложите нешто попут својства ТрееВиев1_СелецтедНоде на нивоу форме. Ово би било од типа ТМиТрееНоде.
- Рукујемо ОнЦханге приказом стабла да би на СелецтедНоде написали вредност изабраног чвора.
- Користите ТрееВиев1_Селецтед.миПроперти за читање или писање нове прилагођене вредности.
Ево пуног изворног кода (ТБуттон: "Буттон1" и ТТрееВиев: "ТрееВиев1" на обрасцу):
Овог пута својство „Дата“ класе ТТрееНоде се не користи. Уместо тога, проширите класу ТТрееНоде да бисте имали своју верзију чвора дрвета: ТМиТрееНоде.
Користећи догађај ОнЦреатеНодеЦласс из приказа стабла, креирате чвор своје прилагођене класе умјесто стандардне ТТрееноде класе.