Как осуществить поиск в TreeView
Реализую представление в TreeView некой таблицы БД SQL Server. Проблемы возникли с организацией поиска в TreeView. Дело в том что TreeView формируется не полностью. По запросу пользователя формируется в OnExpanding через некоторую ф-ю, в которой происходит изменение параметров Query.
Дошел до того, что вытащил все Parent искомого элемента, но вот распахнуть ту ветку, где находится искомый элемент никак не получается.
Подскажите, как сделать!
Цитата:
TreeView формируется не полностью
? Такое бывает ?) Вообще поиск идет просто -
TTreeNode* __fastcall GetFirstNode(void);
TTreeNode* __fastcall GetNext(void);
Если уж очень хочется оптимизаций - можно заморочится на рекурсивный поиск по ветви.
Цитата:
Дошел до того, что вытащил все Parent искомого элемента, но вот распахнуть ту ветку
Если не в лом - объясни структуру данных. Очевидно, что это ID-ParentID ?
А сложность была вот в чем: Я не формирую все дерево сразу. При большом количестве строк в таблице формирование ветки, а также ее обновление, занимает много времени.
Поэтому ветка формируется динамически когда пользователь пытается ее раскрыть. Отсюда и сложность.
Необходимо вытащить все Parent от искомого элемента до корня, а затем програмно раскрыть искомую ветку.
Все это не сложно, просто иногда бывают тормоза на простых вещах.
Цитата:
Originally posted by Roxe
Помогите.
Реализую представление в TreeView некой таблицы БД SQL Server. Проблемы возникли с организацией поиска в TreeView. Дело в том что TreeView формируется не полностью. По запросу пользователя формируется в OnExpanding через некоторую ф-ю, в которой происходит изменение параметров Query.
Дошел до того, что вытащил все Parent искомого элемента, но вот распахнуть ту ветку, где находится искомый элемент никак не получается.
Подскажите, как сделать!
Помогите.
Реализую представление в TreeView некой таблицы БД SQL Server. Проблемы возникли с организацией поиска в TreeView. Дело в том что TreeView формируется не полностью. По запросу пользователя формируется в OnExpanding через некоторую ф-ю, в которой происходит изменение параметров Query.
Дошел до того, что вытащил все Parent искомого элемента, но вот распахнуть ту ветку, где находится искомый элемент никак не получается.
Подскажите, как сделать!
У TreeNode есть метод Expand:
Цитата:
Delphi syntax:
procedure Expand(Recurse: Boolean);
C++ syntax:
void __fastcall Expand(bool Recurse);
Description
When a node is expanded, its immediate subnodes are displayed. The minus '-' button may be displayed, depending on whether the tree view's ShowButtons property is set. If Recurse is true, all descendants of the immediate subnodes are expanded as well.
procedure Expand(Recurse: Boolean);
C++ syntax:
void __fastcall Expand(bool Recurse);
Description
When a node is expanded, its immediate subnodes are displayed. The minus '-' button may be displayed, depending on whether the tree view's ShowButtons property is set. If Recurse is true, all descendants of the immediate subnodes are expanded as well.
Соответственно, ищешь самый верхний Parent и делаешь ему Expand