Режим хранения записей в виде дерева (TreeView).

В режиме дерева TMemTableEh создает объекты-узлы (типа TMemRecViewEh) для каждой записи внутреннего массива записей. Объект-узел имеет ссылку на запись (свойство Rec) и ссылку на список подузлов (NodeItems).

Настройка и активизация режима TreeView осуществляется с помощью подсвойств объекта TMemTableEh.TreeList. TMemTableEh автоматически добавляет новые записи в дерево, используя свойства TreeList.KeyFieldName и TreeList.RefParentFieldName. При появлении новой записи, MemTable пытается найти для нее Parent запись, осуществляя поиск записей, у которых значение поля KeyFieldName равно значению поля RefParentFieldName новой записи. Кроме того, он проверяет, не является ли новая запись Parent записью для уже существующих записей. Формирование дерева записей значительно ускоряется, если создать индексы по полям указанным в TreeList.KeyFieldName и TreeList.RefParentFieldName. Однако максимальной скорости формирования дерева можно добиться когда поток новых записей поступает в правильной последовательности, т.е. вначале должна идти Parent запись, а затем ее Chield записи, причем если у Chield записи есть SubChield записи то они должны идти сразу после Chield. При этом индексы создавать не рекомендуется, они могут только замедлить создание дерева. Другими словами данные должны идти в той последовательности, в какой они будут отображаться в дереве. При такой последовательности поступления записей рекомендуется также отключить свойство FullBuildCheck.

 

Свойства объекта TMemTableEh.TreeList:

Active: Boolean Определяет, что режим TreeView включен. В режиме TreeView вы можете обращаться к свойствам TMemTableEh: TreeNodeLevel, TreeNodeExpanded, TreeNodeHasChildren, TreeNodeChildCount.

KeyFieldName: String Содержит название ключевого поля записи. Дочерние записи будут ссылаться на родительскую запись с ключом определенным полем KeyFieldName.

RefParentFieldName: String Содержит название поля содержащего ссылку на родительскую запись.

DefaultNodeExpanded: Boolean Определяет значение свойства Expanded для новых узлов дерева.

DefaultNodeHasChildren: Boolean Определяет значение свойства HasChildren для новых узлов дерева.

FullBuildCheck: Boolean Определяет необходимость делать проверку на наличие существующих Child записей при изменении записи или добавлении новой записи. Выставление этого свойства в False может ускорить формирование дерева, но при заполнения DataSet’а все Child записи должны идти после Parent записи.

 

Для доступа к состоянию узла дерева текущей записи Dataset’а, можно использовать следующие свойства TMemTableEh:

RecView: TMemRecViewEh – ссылка на объект-узел дерева, доступна только в режиме дерева.

TreeNodeLevel: Integer – уровень узла в дереве.

TreeNodeExpanded: Boolean – узла в дереве раскрыт.

TreeNodeHasChildren: Boolean – узел имеет Child узлы.

TreeNodeChildCount: Integer – количество Child узлов.