C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
TreeView?, Как определить какая ветвь выбрана?
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. Вот и присваивай туда все, что захочешь.

Вернуться в Вопросы программирования в C++Builder