Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1182938100
Q8
2007-06-27 13:55
2007.07.22
Поиск по Query


2-1182845815
Dimon777
2007-06-26 12:16
2007.07.22
Как узнать имя пользователя, запустившего приложение?


2-1182752139
Washington
2007-06-25 10:15
2007.07.22
"Резиновый" дизайн


15-1182614392
mc2!
2007-06-23 19:59
2007.07.22
Button focus dots


2-1182917165
APXiMEd
2007-06-27 08:06
2007.07.22
Несколько простых (для кого-то) вопросов.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский