Как перетаскивать элементы из TreeView в ListBox.
Компилятор: C++ Builder
Ниже приведён пример, который имеет TreeView с
главным узлом (node) с названием "Cars", который в
свою очередь имеет ветви makes и models. ListBox может
получать при перетаскивании как целые ветви, так
и отдельные элементы. Как у ListBox, так и у TreeView
свойство DragMode установлено в dmAutomatic.
//---------------------------------------------------------------------------
void __fastcall
TForm1::ListBox1DragDrop(TObject *Sender, TObject
*Source, int X, int
Y)
{
if
(Sender->ClassNameIs("TListBox") &&
Source->ClassNameIs("TTreeView"))
{
//===
Перетаскивание Cars (Главного узла) ===//
if (TreeView1->Selected->AbsoluteIndex == 0)
{
TTreeNode *Node = TreeView1->Items->Item[0]->GetNext();
while (Node != NULL)
{
if (Node->Level == 2)
ListBox1->Items->Add(Node->Text);
Node = Node->GetNext();
}
}
//===
Перетаскивание make ===//
if (TreeView1->Selected->Level == 1)
{
int count = 0;
TTreeNode *Node = TreeView1->Selected->GetNext();
while (Node != NULL && Node->HasChildren == false)
{
ListBox1->Items->Add(Node->Text);
if (count < TreeView1->Selected->Count) Node = Node->GetNext();
count ++;
}
}
//===
Перетаскивание model ===//
if (TreeView1->Selected->Level == 2)
ListBox1->Items->Add(TreeView1->Selected->Text);
}
}
|