Форум: "Начинающим";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
ВнизTreeView , как пробежатся по нему? Найти похожие ветки
← →
Phoenix © (2007-06-28 10:09) [0]Есть некое дерево типа TTreeView, необходимо пробежатся по нему в том числе и по вложенным веткам которые заполняются только на их раскрытие. Как это сделать? Не с VirtualEditTree не с VirtualStringTree проблем не возникало, тут же никак не получается пробежатся по дереву полностью.
← →
Jeer © (2007-06-28 10:22) [1]GetNextChild, GetNextSibling + F1
← →
ЮЮ © (2007-06-28 10:31) [2]> Как это сделать?
например рекурсивно по TreeView.Items, на каждом шаге итерации программно раскрывая каждый узел (без рекурсии) и захлопывая, если он был захлопнут до нашего вмешательства.
Тогда его геометрия останется той же, что и до нашего цикла. Перерисовку лучше на это время отключить.
>Не с VirtualEditTree не с VirtualStringTree проблем не возникало
Верится с трудом.
Или какие реальные трудности с subj-ем? Что не получилось из того, что работало с VirtualTree ?
← →
Phoenix © (2007-06-28 12:02) [3]> Или какие реальные трудности с subj-ем? Что не получилось из того, что работало с VirtualTree ?
Конкретно проблема именно прбежатся по дереву. Это я и указал выше.мне собственно говоря необходимо сделать поиск по дереву, и вот такая проблема возникла что пробежать не получается. Не могу даже узнать количество элементов на том или ином уровне.
> например рекурсивно по TreeView.Items, на каждом шаге итерации программно раскрывая каждый узел (без рекурсии) и захлопывая, если он был захлопнут до нашего вмешательства.
Тогда его геометрия останется той же, что и до нашего цикла. Перерисовку лучше на это время отключить.
Примерчик можно, если не сложно.
← →
Johnmen © (2007-06-28 12:15) [4]
> Не могу даже узнать количество элементов на том или ином уровне.
Count
Читайте же наконец F1 !
← →
Malik © (2007-06-28 17:06) [5]
for i:=0 to TreeView1.Items.Count-1 do begin
...
if TreeView1.Items[i].count=0 then begin //означает что данный узел не имеет дочерних узлов
...
end;
end;
← →
Игорь Шевченко © (2007-06-28 17:53) [6]Я наверное что-то не понимаю, но разве Items как-то связаны с отображаемым деревом ? В смысле открыты они при отображении или закрыты - какая разница ?
← →
Gadenysh (2007-06-28 19:19) [7]Сделай на VST, раз там проблем нет. Хотя не верится в это совсем.
А пробежаться по нодам, которые заполняются на экспанде - значит надо заполнить сразу все дерево (вся виртуальность насмарку) и бегать по нему сколько хочешь.
← →
vpbar (2007-06-28 19:59) [8]>>Phoenix ©
>>заполняются только на их раскрытие
а не проще пробежаться по тому откуда заполняются узлы TreeView?
← →
Jeer © (2007-06-29 10:23) [9]
> Игорь Шевченко © (28.06.07 17:53) [6]
>
> Я наверное что-то не понимаю, но разве Items как-то связаны
> с отображаемым деревом ? В смысле открыты они при отображении
> или закрыты - какая разница ?
Как правило разница возникает при использовании TTreeView в режиме TDBTreeView и чтении только визуализированных items.
В этом случае, действительно, count ничего не даст, да и вообще методы TTreeView - тоже.
Придется или загрузить все дерево сразу (в этом случае все стандартно) или эмулировать движение по веткам и подгрузку данных из dataset.
← →
Игорь Шевченко © (2007-06-29 10:27) [10]Jeer © (29.06.07 10:23) [9]
Что за зверь TDBTreeView ?
← →
Jeer © (2007-06-29 10:53) [11]
> Есть некое дерево типа TTreeView,
Всего лишь предположение мое - у него наследник от TTreeView для работы с TDataset.
← →
Ega23 © (2007-06-29 10:58) [12]
> Что за зверь TDBTreeView ?
Вот, как раз сейчас переписываю.
← →
Jeer © (2007-06-29 11:32) [13]
> Ega23 © (29.06.07 10:58) [12]
>
>
> > Что за зверь TDBTreeView ?
>
>
> Вот, как раз сейчас переписываю.
Намедни тоже пришлось:))
← →
Игорь Шевченко © (2007-06-29 12:00) [14]Jeer © (29.06.07 10:53) [11]
> Всего лишь предположение мое
Стандартного компонента нету. Есть конечно ряд сторонних на эту тему, но в тех сторонних, что я видел, проблема обхода решается иначе. Например, запросом без учета иерархии...
← →
Jeer © (2007-06-29 12:11) [15]Игорь Шевченко © (29.06.07 12:00) [14]
В моих постах нет намека на его "стандартность".
Если TDBTreeView строится на основе стандартного TTreeView, то возможны, как минимум, два варианта получения данных - полным запросом и подзапросом на раскрытие узла.
С полным запросом все понятно - все данные налицо, но задача перемещения по веткам естественным образом легче решается посредством методов TTreeView.
Если же "самопальный" TDBTreeView таков, что работает только по подзапросам то и перемещение по TTreeView может быть осмысленным только после перезапроса и восстановления структуры под-иерархии. До этого, оставаясь в рамках такого компонента, никаким образом узнать что-либо о "ветвистости" не представляется возможным.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.035 c