|
|
||||||||||
|
|
||||||||||
|
||||||||||
|
|
Получение доступа к узлам TreeView
Автор: Peter Kane Небольшие хитрости для работы с узлами TreeView: Если вы хотите производить поиск по дереву, может быть для того, чтобы найти узел, соответствующий определенному критерию, то НЕ ДЕЛАЙТЕ ЭТО ТАКИМ ОБРАЗОМ:
...если вам не дорого время обработки массива узлов. Значительно быстрее будет так:
В моей системе приведенный выше код показал скорость 33 милисекунды при работе с деревом, имеющим 171 узел. Первый поиск потребовал 2.15 секунд. Оказывается, процесс индексирования очень медленный. Я подозреваю, что при каждой индексации свойства Items, вы осуществляете линейный поиск, но это нигде не засвидетельствовано, поэтому я могу ошибаться. Вам действительно не нужно просматривать все дерево, чтобы найти что вам нужно - получить таким образом доступ к MyTreeView.Items[170] займет много больше времени, чем получения доступа к MyTreeView.Items[1]. Как правило, для отслеживания позиции в дереве TreeView, нужно использовать временную переменную TTreeNode, а не использовать целочисленные индексы. Возможно, свойство ItemId как раз и необходимо для такого применения, но, к сожалению, я никак не могу понять абзац в электронной документации, касающийся данного свойства:
"Свойство ItemId является дескриптором TTreeNode типа HTreeItem
и однозначно идентифицирует каждый элемент дерева. Используйте
это свойство, если вам необходимо получить доступ к элементам
дерева из внешнего по отношению к TreeView элемента управления.""Я разговаривал с деревьями...вот почему они ушли от меня...." (Spike Milligan).. |
  |
Коллекционное оружие сабля восточная военные копии . Как начать играть на бирже. Как играть на бирже по интернету. . участки в Калуге . ряжский авторемонтный завод ежеквартальный отчет . |