Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > TTreeView перенос нодов из ветки в ветку


Автор: bigscorp 12.1.2006, 09:58
smile подскажите пожалуйста: как переносить ноды правильно из одного родителя в другого smile

Автор: Vyacheslav 12.1.2006, 10:27
А посмотреть help слабо
Код

Moves the node to another location in the tree view.

virtual void __fastcall MoveTo(TTreeNode* Destination, TNodeAttachMode Mode);



Там же пример по организации перетаскивания мышкой
Код

The following code uses GetNodeAt to add a dragged node as a child of the node under then mouse when it is dropped.

void __fastcall TForm1::TreeView1DragDrop(TObject *Sender, TObject *Source, int X, int Y)

{
  if (Source != (TObject *)TreeView1 || TreeView1->Selected == NULL)
    return;
  THitTests HT = TreeView1->GetHitTestInfoAt(X, Y);
  TNodeAttachMode AttachMode;
  TTreeNode *pItem = TreeView1->GetNodeAt(X, Y);
  if (HT.Contains(htOnItem) || HT.Contains(htOnIcon))
    AttachMode = naAddChild;
  else if (HT.Contains(htNowhere))
    AttachMode = naAdd;
  else if (HT.Contains(htOnIndent))

    AttachMode = naInsert;
  else
    return;
  TreeView1->Selected->MoveTo(pItem, AttachMode);
}


Автор: bigscorp 12.1.2006, 12:17
не я наверно не правильно поставил вопрос.
у меня есть база из которой беруться данные для построения TreeView на 4 уровнях, т.е. группировки:
1. Пункт - место нахождения
2. Группа - тип абонента
3. Абонент - сам абонент
4. Объект - объекты абонента

вот и после построения его, нужно что бы при изменении пункта, группы, абонента у объекта (в базе) он переходил по новому значению.

PS: и вот еще у меня косячок с хелпом, у меня Borland Developer Studio 2006, и там с примерами ваще слабо.

Автор: Vyacheslav 12.1.2006, 12:30
Ну так исходя своих значений(Пункт, Группа) находишь нового родителя NewParentNode
и
Код

Node->MoveTo( NewParentNode, naAddChild );

Автор: bigscorp 12.1.2006, 12:40
а поиск как организовать?
а если перетаскивать абонента с объектами, то как?

ваще мозги плавятся smile

Автор: Vyacheslav 12.1.2006, 13:07
Еще раз. Как перетаскивать абонента я уже показал. Объекты твои, если они принадлежат абоненту перетащутся вслед за абонентом. Они же своего парента не меняют. А уж как найти нового парента для абонента - это уж твоя задача. Ищешь парента первого уровня с заданным пунктом, у пункта в чилдах ищещь нужную группу. А дальше в код в одну строчку.

Автор: bigscorp 13.1.2006, 02:10
все. новый день! свежие мозги.
спасибо большое

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)