Nikolay |
Отправлено: 06.09.2003, 13:54 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 8
|
В TreeView имеется 3-х уровневое дерево.
Подскажите , как можно программно узнать, какого уровня выбранная ветвь?
Необходимо,взависимости от уровня ветви, вывести соответствующие пункты встлывающего меню.
z_point@mail.ru |
|
LeeMouse |
Отправлено: 06.09.2003, 16:04 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 79
|
Я пользуюсь такой схемой (может тупо зато прсто):
Обьявляю класс от TObject, в котором храню нужные атрибуты узла дерева. При формировании дерева сохраняю экземпляр обьекта вместе с узлом (AddObject) с нужными атрибутами (в том числе уровень вложенности). Потом при перемещении по узлам считываю из узла нужные свойства. Если необходимо, могу скинуть вырезку из исходного кода. |
|
Aptem |
Отправлено: 07.09.2003, 10:54 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Не знаю, поможет ли тебе это...
Эта функция выводит на экран полный путь листа ( ветви, не имеющей дочерних ветвей ).
CODE |
void __fastcall TForm1::TreeView2Click(TObject *Sender)
{
TTreeNode *CurItem, *Prev;
AnsiString Address;
if ( !TreeView2 -> Selected -> HasChildren )
{
Prev = TreeView2 -> Selected;
Address = Prev -> Text;
while ( Prev )
{
if ( Prev -> HasChildren ) Address = Prev -> Text + "\\" + Address;
Prev = Prev -> Parent;
}
ShowMessage ( Address );
}
}
|
|
|
Vaska |
Отправлено: 07.09.2003, 13:14 |
|
Не зарегистрирован
|
А разве свойство Level объекта TTreeNode (листа дерева) не уровень показывает? |
|
andylit |
Отправлено: 07.09.2003, 17:23 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 15
|
Вот как и обработку сразу сделать можно:
void __fastcall TForm1::TreeView1Expanding(TObject *Sender,
TTreeNode *Node, bool &AllowExpansion)
{
switch (Node->Level)
{
case 0:
обработка для первого уровня;
break;
case 1:
обработка для второго уровня;
break;
и.т.д.
}
}
//---------------------------------------------------------------------------
|
|
ekya |
Отправлено: 08.09.2003, 13:09 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 27
|
У TTreeNode есть свойство void *Value. Вот и присваивай туда все, что захочешь. |
|