| 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. Вот и присваивай туда все, что захочешь.  | 
  |