![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужна помощь по TreeView [D7, XP]
Михалыч © (2016-02-10 22:07:00)Здравствуйте мастера! Помогите кто знает пожалуйста. Есть дерево с тремя уровнями вложенности,например:
Продукты
Хлебо-булочные
Хлеб
Булки
Мясные изделия
Котлеты
Отбивные
Напитки
Соки
Фанта
Спрайт
Спиртные
Пиво
Водка
Как-то так, список довольно длинный,все писать не буду. Так вот,
нужно узнать к какому корневому узлу, принадлежит выбранный
дочерний? Конкретно что хлеб это- продукты,а соки это - напитки и т.д...
KilkennyCat (2016-02-11 09:08:00) [1]
> можно изящнее и короче написать.
при таком количестве уровней не имеет смысла.
если уровней будет куча, можно в цикле получать родителя, пока не будет достигнут верхний уровень.
что-то типа: (не помню уже делфи)
node = TreeView.Selected;
While (node.level != 2) {
node = node.parent;
}
result = node.text;
Германн (2016-02-11 01:31:00) [2]
> Но наверно можно изящнее и короче написать.
Сомневаюсь. Ну разве что уже кем-то написана такая функция. Тогда весь код будет в одной строке.
Михалыч (2016-02-10 23:30:00) [3]Сделал пока так:
if TreeView1.Selected.Level>0 then
begin
if TreeView1.Selected.Level=1 then ShowMessage(TreeView1.Selected.Parent.Text);
if TreeView1.Selected.Level=2 then ShowMessage(TreeView1.Selected.Parent.Parent.Text);
end;
Но наверно можно изящнее и короче написать.
А вот как незнаю..
Михалыч (2016-02-10 23:24:00) [4]TreeView1.Selected.Parent.Text дает предыдущего а не главного.. ((
Тоесть если выбрать Фанта дает Соки, а нужно Напитки
Правильный результат лишь при выборе узлов первого уровня
Михалыч (2016-02-10 23:12:00) [5]Чую копать надо в сторону Parent, а как накодить не знаю.. ((